amber-cli.js 2.7 MB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810281128122813281428152816281728182819282028212822282328242825282628272828282928302831283228332834283528362837283828392840284128422843284428452846284728482849285028512852285328542855285628572858285928602861286228632864286528662867286828692870287128722873287428752876287728782879288028812882288328842885288628872888288928902891289228932894289528962897289828992900290129022903290429052906290729082909291029112912291329142915291629172918291929202921292229232924292529262927292829292930293129322933293429352936293729382939294029412942294329442945294629472948294929502951295229532954295529562957295829592960296129622963296429652966296729682969297029712972297329742975297629772978297929802981298229832984298529862987298829892990299129922993299429952996299729982999300030013002300330043005300630073008300930103011301230133014301530163017301830193020302130223023302430253026302730283029303030313032303330343035303630373038303930403041304230433044304530463047304830493050305130523053305430553056305730583059306030613062306330643065306630673068306930703071307230733074307530763077307830793080308130823083308430853086308730883089309030913092309330943095309630973098309931003101310231033104310531063107310831093110311131123113311431153116311731183119312031213122312331243125312631273128312931303131313231333134313531363137313831393140314131423143314431453146314731483149315031513152315331543155315631573158315931603161316231633164316531663167316831693170317131723173317431753176317731783179318031813182318331843185318631873188318931903191319231933194319531963197319831993200320132023203320432053206320732083209321032113212321332143215321632173218321932203221322232233224322532263227322832293230323132323233323432353236323732383239324032413242324332443245324632473248324932503251325232533254325532563257325832593260326132623263326432653266326732683269327032713272327332743275327632773278327932803281328232833284328532863287328832893290329132923293329432953296329732983299330033013302330333043305330633073308330933103311331233133314331533163317331833193320332133223323332433253326332733283329333033313332333333343335333633373338333933403341334233433344334533463347334833493350335133523353335433553356335733583359336033613362336333643365336633673368336933703371337233733374337533763377337833793380338133823383338433853386338733883389339033913392339333943395339633973398339934003401340234033404340534063407340834093410341134123413341434153416341734183419342034213422342334243425342634273428342934303431343234333434343534363437343834393440344134423443344434453446344734483449345034513452345334543455345634573458345934603461346234633464346534663467346834693470347134723473347434753476347734783479348034813482348334843485348634873488348934903491349234933494349534963497349834993500350135023503350435053506350735083509351035113512351335143515351635173518351935203521352235233524352535263527352835293530353135323533353435353536353735383539354035413542354335443545354635473548354935503551355235533554355535563557355835593560356135623563356435653566356735683569357035713572357335743575357635773578357935803581358235833584358535863587358835893590359135923593359435953596359735983599360036013602360336043605360636073608360936103611361236133614361536163617361836193620362136223623362436253626362736283629363036313632363336343635363636373638363936403641364236433644364536463647364836493650365136523653365436553656365736583659366036613662366336643665366636673668366936703671367236733674367536763677367836793680368136823683368436853686368736883689369036913692369336943695369636973698369937003701370237033704370537063707370837093710371137123713371437153716371737183719372037213722372337243725372637273728372937303731373237333734373537363737373837393740374137423743374437453746374737483749375037513752375337543755375637573758375937603761376237633764376537663767376837693770377137723773377437753776377737783779378037813782378337843785378637873788378937903791379237933794379537963797379837993800380138023803380438053806380738083809381038113812381338143815381638173818381938203821382238233824382538263827382838293830383138323833383438353836383738383839384038413842384338443845384638473848384938503851385238533854385538563857385838593860386138623863386438653866386738683869387038713872387338743875387638773878387938803881388238833884388538863887388838893890389138923893389438953896389738983899390039013902390339043905390639073908390939103911391239133914391539163917391839193920392139223923392439253926392739283929393039313932393339343935393639373938393939403941394239433944394539463947394839493950395139523953395439553956395739583959396039613962396339643965396639673968396939703971397239733974397539763977397839793980398139823983398439853986398739883989399039913992399339943995399639973998399940004001400240034004400540064007400840094010401140124013401440154016401740184019402040214022402340244025402640274028402940304031403240334034403540364037403840394040404140424043404440454046404740484049405040514052405340544055405640574058405940604061406240634064406540664067406840694070407140724073407440754076407740784079408040814082408340844085408640874088408940904091409240934094409540964097409840994100410141024103410441054106410741084109411041114112411341144115411641174118411941204121412241234124412541264127412841294130413141324133413441354136413741384139414041414142414341444145414641474148414941504151415241534154415541564157415841594160416141624163416441654166416741684169417041714172417341744175417641774178417941804181418241834184418541864187418841894190419141924193419441954196419741984199420042014202420342044205420642074208420942104211421242134214421542164217421842194220422142224223422442254226422742284229423042314232423342344235423642374238423942404241424242434244424542464247424842494250425142524253425442554256425742584259426042614262426342644265426642674268426942704271427242734274427542764277427842794280428142824283428442854286428742884289429042914292429342944295429642974298429943004301430243034304430543064307430843094310431143124313431443154316431743184319432043214322432343244325432643274328432943304331433243334334433543364337433843394340434143424343434443454346434743484349435043514352435343544355435643574358435943604361436243634364436543664367436843694370437143724373437443754376437743784379438043814382438343844385438643874388438943904391439243934394439543964397439843994400440144024403440444054406440744084409441044114412441344144415441644174418441944204421442244234424442544264427442844294430443144324433443444354436443744384439444044414442444344444445444644474448444944504451445244534454445544564457445844594460446144624463446444654466446744684469447044714472447344744475447644774478447944804481448244834484448544864487448844894490449144924493449444954496449744984499450045014502450345044505450645074508450945104511451245134514451545164517451845194520452145224523452445254526452745284529453045314532453345344535453645374538453945404541454245434544454545464547454845494550455145524553455445554556455745584559456045614562456345644565456645674568456945704571457245734574457545764577457845794580458145824583458445854586458745884589459045914592459345944595459645974598459946004601460246034604460546064607460846094610461146124613461446154616461746184619462046214622462346244625462646274628462946304631463246334634463546364637463846394640464146424643464446454646464746484649465046514652465346544655465646574658465946604661466246634664466546664667466846694670467146724673467446754676467746784679468046814682468346844685468646874688468946904691469246934694469546964697469846994700470147024703470447054706470747084709471047114712471347144715471647174718471947204721472247234724472547264727472847294730473147324733473447354736473747384739474047414742474347444745474647474748474947504751475247534754475547564757475847594760476147624763476447654766476747684769477047714772477347744775477647774778477947804781478247834784478547864787478847894790479147924793479447954796479747984799480048014802480348044805480648074808480948104811481248134814481548164817481848194820482148224823482448254826482748284829483048314832483348344835483648374838483948404841484248434844484548464847484848494850485148524853485448554856485748584859486048614862486348644865486648674868486948704871487248734874487548764877487848794880488148824883488448854886488748884889489048914892489348944895489648974898489949004901490249034904490549064907490849094910491149124913491449154916491749184919492049214922492349244925492649274928492949304931493249334934493549364937493849394940494149424943494449454946494749484949495049514952495349544955495649574958495949604961496249634964496549664967496849694970497149724973497449754976497749784979498049814982498349844985498649874988498949904991499249934994499549964997499849995000500150025003500450055006500750085009501050115012501350145015501650175018501950205021502250235024502550265027502850295030503150325033503450355036503750385039504050415042504350445045504650475048504950505051505250535054505550565057505850595060506150625063506450655066506750685069507050715072507350745075507650775078507950805081508250835084508550865087508850895090509150925093509450955096509750985099510051015102510351045105510651075108510951105111511251135114511551165117511851195120512151225123512451255126512751285129513051315132513351345135513651375138513951405141514251435144514551465147514851495150515151525153515451555156515751585159516051615162516351645165516651675168516951705171517251735174517551765177517851795180518151825183518451855186518751885189519051915192519351945195519651975198519952005201520252035204520552065207520852095210521152125213521452155216521752185219522052215222522352245225522652275228522952305231523252335234523552365237523852395240524152425243524452455246524752485249525052515252525352545255525652575258525952605261526252635264526552665267526852695270527152725273527452755276527752785279528052815282528352845285528652875288528952905291529252935294529552965297529852995300530153025303530453055306530753085309531053115312531353145315531653175318531953205321532253235324532553265327532853295330533153325333533453355336533753385339534053415342534353445345534653475348534953505351535253535354535553565357535853595360536153625363536453655366536753685369537053715372537353745375537653775378537953805381538253835384538553865387538853895390539153925393539453955396539753985399540054015402540354045405540654075408540954105411541254135414541554165417541854195420542154225423542454255426542754285429543054315432543354345435543654375438543954405441544254435444544554465447544854495450545154525453545454555456545754585459546054615462546354645465546654675468546954705471547254735474547554765477547854795480548154825483548454855486548754885489549054915492549354945495549654975498549955005501550255035504550555065507550855095510551155125513551455155516551755185519552055215522552355245525552655275528552955305531553255335534553555365537553855395540554155425543554455455546554755485549555055515552555355545555555655575558555955605561556255635564556555665567556855695570557155725573557455755576557755785579558055815582558355845585558655875588558955905591559255935594559555965597559855995600560156025603560456055606560756085609561056115612561356145615561656175618561956205621562256235624562556265627562856295630563156325633563456355636563756385639564056415642564356445645564656475648564956505651565256535654565556565657565856595660566156625663566456655666566756685669567056715672567356745675567656775678567956805681568256835684568556865687568856895690569156925693569456955696569756985699570057015702570357045705570657075708570957105711571257135714571557165717571857195720572157225723572457255726572757285729573057315732573357345735573657375738573957405741574257435744574557465747574857495750575157525753575457555756575757585759576057615762576357645765576657675768576957705771577257735774577557765777577857795780578157825783578457855786578757885789579057915792579357945795579657975798579958005801580258035804580558065807580858095810581158125813581458155816581758185819582058215822582358245825582658275828582958305831583258335834583558365837583858395840584158425843584458455846584758485849585058515852585358545855585658575858585958605861586258635864586558665867586858695870587158725873587458755876587758785879588058815882588358845885588658875888588958905891589258935894589558965897589858995900590159025903590459055906590759085909591059115912591359145915591659175918591959205921592259235924592559265927592859295930593159325933593459355936593759385939594059415942594359445945594659475948594959505951595259535954595559565957595859595960596159625963596459655966596759685969597059715972597359745975597659775978597959805981598259835984598559865987598859895990599159925993599459955996599759985999600060016002600360046005600660076008600960106011601260136014601560166017601860196020602160226023602460256026602760286029603060316032603360346035603660376038603960406041604260436044604560466047604860496050605160526053605460556056605760586059606060616062606360646065606660676068606960706071607260736074607560766077607860796080608160826083608460856086608760886089609060916092609360946095609660976098609961006101610261036104610561066107610861096110611161126113611461156116611761186119612061216122612361246125612661276128612961306131613261336134613561366137613861396140614161426143614461456146614761486149615061516152615361546155615661576158615961606161616261636164616561666167616861696170617161726173617461756176617761786179618061816182618361846185618661876188618961906191619261936194619561966197619861996200620162026203620462056206620762086209621062116212621362146215621662176218621962206221622262236224622562266227622862296230623162326233623462356236623762386239624062416242624362446245624662476248624962506251625262536254625562566257625862596260626162626263626462656266626762686269627062716272627362746275627662776278627962806281628262836284628562866287628862896290629162926293629462956296629762986299630063016302630363046305630663076308630963106311631263136314631563166317631863196320632163226323632463256326632763286329633063316332633363346335633663376338633963406341634263436344634563466347634863496350635163526353635463556356635763586359636063616362636363646365636663676368636963706371637263736374637563766377637863796380638163826383638463856386638763886389639063916392639363946395639663976398639964006401640264036404640564066407640864096410641164126413641464156416641764186419642064216422642364246425642664276428642964306431643264336434643564366437643864396440644164426443644464456446644764486449645064516452645364546455645664576458645964606461646264636464646564666467646864696470647164726473647464756476647764786479648064816482648364846485648664876488648964906491649264936494649564966497649864996500650165026503650465056506650765086509651065116512651365146515651665176518651965206521652265236524652565266527652865296530653165326533653465356536653765386539654065416542654365446545654665476548654965506551655265536554655565566557655865596560656165626563656465656566656765686569657065716572657365746575657665776578657965806581658265836584658565866587658865896590659165926593659465956596659765986599660066016602660366046605660666076608660966106611661266136614661566166617661866196620662166226623662466256626662766286629663066316632663366346635663666376638663966406641664266436644664566466647664866496650665166526653665466556656665766586659666066616662666366646665666666676668666966706671667266736674667566766677667866796680668166826683668466856686668766886689669066916692669366946695669666976698669967006701670267036704670567066707670867096710671167126713671467156716671767186719672067216722672367246725672667276728672967306731673267336734673567366737673867396740674167426743674467456746674767486749675067516752675367546755675667576758675967606761676267636764676567666767676867696770677167726773677467756776677767786779678067816782678367846785678667876788678967906791679267936794679567966797679867996800680168026803680468056806680768086809681068116812681368146815681668176818681968206821682268236824682568266827682868296830683168326833683468356836683768386839684068416842684368446845684668476848684968506851685268536854685568566857685868596860686168626863686468656866686768686869687068716872687368746875687668776878687968806881688268836884688568866887688868896890689168926893689468956896689768986899690069016902690369046905690669076908690969106911691269136914691569166917691869196920692169226923692469256926692769286929693069316932693369346935693669376938693969406941694269436944694569466947694869496950695169526953695469556956695769586959696069616962696369646965696669676968696969706971697269736974697569766977697869796980698169826983698469856986698769886989699069916992699369946995699669976998699970007001700270037004700570067007700870097010701170127013701470157016701770187019702070217022702370247025702670277028702970307031703270337034703570367037703870397040704170427043704470457046704770487049705070517052705370547055705670577058705970607061706270637064706570667067706870697070707170727073707470757076707770787079708070817082708370847085708670877088708970907091709270937094709570967097709870997100710171027103710471057106710771087109711071117112711371147115711671177118711971207121712271237124712571267127712871297130713171327133713471357136713771387139714071417142714371447145714671477148714971507151715271537154715571567157715871597160716171627163716471657166716771687169717071717172717371747175717671777178717971807181718271837184718571867187718871897190719171927193719471957196719771987199720072017202720372047205720672077208720972107211721272137214721572167217721872197220722172227223722472257226722772287229723072317232723372347235723672377238723972407241724272437244724572467247724872497250725172527253725472557256725772587259726072617262726372647265726672677268726972707271727272737274727572767277727872797280728172827283728472857286728772887289729072917292729372947295729672977298729973007301730273037304730573067307730873097310731173127313731473157316731773187319732073217322732373247325732673277328732973307331733273337334733573367337733873397340734173427343734473457346734773487349735073517352735373547355735673577358735973607361736273637364736573667367736873697370737173727373737473757376737773787379738073817382738373847385738673877388738973907391739273937394739573967397739873997400740174027403740474057406740774087409741074117412741374147415741674177418741974207421742274237424742574267427742874297430743174327433743474357436743774387439744074417442744374447445744674477448744974507451745274537454745574567457745874597460746174627463746474657466746774687469747074717472747374747475747674777478747974807481748274837484748574867487748874897490749174927493749474957496749774987499750075017502750375047505750675077508750975107511751275137514751575167517751875197520752175227523752475257526752775287529753075317532753375347535753675377538753975407541754275437544754575467547754875497550755175527553755475557556755775587559756075617562756375647565756675677568756975707571757275737574757575767577757875797580758175827583758475857586758775887589759075917592759375947595759675977598759976007601760276037604760576067607760876097610761176127613761476157616761776187619762076217622762376247625762676277628762976307631763276337634763576367637763876397640764176427643764476457646764776487649765076517652765376547655765676577658765976607661766276637664766576667667766876697670767176727673767476757676767776787679768076817682768376847685768676877688768976907691769276937694769576967697769876997700770177027703770477057706770777087709771077117712771377147715771677177718771977207721772277237724772577267727772877297730773177327733773477357736773777387739774077417742774377447745774677477748774977507751775277537754775577567757775877597760776177627763776477657766776777687769777077717772777377747775777677777778777977807781778277837784778577867787778877897790779177927793779477957796779777987799780078017802780378047805780678077808780978107811781278137814781578167817781878197820782178227823782478257826782778287829783078317832783378347835783678377838783978407841784278437844784578467847784878497850785178527853785478557856785778587859786078617862786378647865786678677868786978707871787278737874787578767877787878797880788178827883788478857886788778887889789078917892789378947895789678977898789979007901790279037904790579067907790879097910791179127913791479157916791779187919792079217922792379247925792679277928792979307931793279337934793579367937793879397940794179427943794479457946794779487949795079517952795379547955795679577958795979607961796279637964796579667967796879697970797179727973797479757976797779787979798079817982798379847985798679877988798979907991799279937994799579967997799879998000800180028003800480058006800780088009801080118012801380148015801680178018801980208021802280238024802580268027802880298030803180328033803480358036803780388039804080418042804380448045804680478048804980508051805280538054805580568057805880598060806180628063806480658066806780688069807080718072807380748075807680778078807980808081808280838084808580868087808880898090809180928093809480958096809780988099810081018102810381048105810681078108810981108111811281138114811581168117811881198120812181228123812481258126812781288129813081318132813381348135813681378138813981408141814281438144814581468147814881498150815181528153815481558156815781588159816081618162816381648165816681678168816981708171817281738174817581768177817881798180818181828183818481858186818781888189819081918192819381948195819681978198819982008201820282038204820582068207820882098210821182128213821482158216821782188219822082218222822382248225822682278228822982308231823282338234823582368237823882398240824182428243824482458246824782488249825082518252825382548255825682578258825982608261826282638264826582668267826882698270827182728273827482758276827782788279828082818282828382848285828682878288828982908291829282938294829582968297829882998300830183028303830483058306830783088309831083118312831383148315831683178318831983208321832283238324832583268327832883298330833183328333833483358336833783388339834083418342834383448345834683478348834983508351835283538354835583568357835883598360836183628363836483658366836783688369837083718372837383748375837683778378837983808381838283838384838583868387838883898390839183928393839483958396839783988399840084018402840384048405840684078408840984108411841284138414841584168417841884198420842184228423842484258426842784288429843084318432843384348435843684378438843984408441844284438444844584468447844884498450845184528453845484558456845784588459846084618462846384648465846684678468846984708471847284738474847584768477847884798480848184828483848484858486848784888489849084918492849384948495849684978498849985008501850285038504850585068507850885098510851185128513851485158516851785188519852085218522852385248525852685278528852985308531853285338534853585368537853885398540854185428543854485458546854785488549855085518552855385548555855685578558855985608561856285638564856585668567856885698570857185728573857485758576857785788579858085818582858385848585858685878588858985908591859285938594859585968597859885998600860186028603860486058606860786088609861086118612861386148615861686178618861986208621862286238624862586268627862886298630863186328633863486358636863786388639864086418642864386448645864686478648864986508651865286538654865586568657865886598660866186628663866486658666866786688669867086718672867386748675867686778678867986808681868286838684868586868687868886898690869186928693869486958696869786988699870087018702870387048705870687078708870987108711871287138714871587168717871887198720872187228723872487258726872787288729873087318732873387348735873687378738873987408741874287438744874587468747874887498750875187528753875487558756875787588759876087618762876387648765876687678768876987708771877287738774877587768777877887798780878187828783878487858786878787888789879087918792879387948795879687978798879988008801880288038804880588068807880888098810881188128813881488158816881788188819882088218822882388248825882688278828882988308831883288338834883588368837883888398840884188428843884488458846884788488849885088518852885388548855885688578858885988608861886288638864886588668867886888698870887188728873887488758876887788788879888088818882888388848885888688878888888988908891889288938894889588968897889888998900890189028903890489058906890789088909891089118912891389148915891689178918891989208921892289238924892589268927892889298930893189328933893489358936893789388939894089418942894389448945894689478948894989508951895289538954895589568957895889598960896189628963896489658966896789688969897089718972897389748975897689778978897989808981898289838984898589868987898889898990899189928993899489958996899789988999900090019002900390049005900690079008900990109011901290139014901590169017901890199020902190229023902490259026902790289029903090319032903390349035903690379038903990409041904290439044904590469047904890499050905190529053905490559056905790589059906090619062906390649065906690679068906990709071907290739074907590769077907890799080908190829083908490859086908790889089909090919092909390949095909690979098909991009101910291039104910591069107910891099110911191129113911491159116911791189119912091219122912391249125912691279128912991309131913291339134913591369137913891399140914191429143914491459146914791489149915091519152915391549155915691579158915991609161916291639164916591669167916891699170917191729173917491759176917791789179918091819182918391849185918691879188918991909191919291939194919591969197919891999200920192029203920492059206920792089209921092119212921392149215921692179218921992209221922292239224922592269227922892299230923192329233923492359236923792389239924092419242924392449245924692479248924992509251925292539254925592569257925892599260926192629263926492659266926792689269927092719272927392749275927692779278927992809281928292839284928592869287928892899290929192929293929492959296929792989299930093019302930393049305930693079308930993109311931293139314931593169317931893199320932193229323932493259326932793289329933093319332933393349335933693379338933993409341934293439344934593469347934893499350935193529353935493559356935793589359936093619362936393649365936693679368936993709371937293739374937593769377937893799380938193829383938493859386938793889389939093919392939393949395939693979398939994009401940294039404940594069407940894099410941194129413941494159416941794189419942094219422942394249425942694279428942994309431943294339434943594369437943894399440944194429443944494459446944794489449945094519452945394549455945694579458945994609461946294639464946594669467946894699470947194729473947494759476947794789479948094819482948394849485948694879488948994909491949294939494949594969497949894999500950195029503950495059506950795089509951095119512951395149515951695179518951995209521952295239524952595269527952895299530953195329533953495359536953795389539954095419542954395449545954695479548954995509551955295539554955595569557955895599560956195629563956495659566956795689569957095719572957395749575957695779578957995809581958295839584958595869587958895899590959195929593959495959596959795989599960096019602960396049605960696079608960996109611961296139614961596169617961896199620962196229623962496259626962796289629963096319632963396349635963696379638963996409641964296439644964596469647964896499650965196529653965496559656965796589659966096619662966396649665966696679668966996709671967296739674967596769677967896799680968196829683968496859686968796889689969096919692969396949695969696979698969997009701970297039704970597069707970897099710971197129713971497159716971797189719972097219722972397249725972697279728972997309731973297339734973597369737973897399740974197429743974497459746974797489749975097519752975397549755975697579758975997609761976297639764976597669767976897699770977197729773977497759776977797789779978097819782978397849785978697879788978997909791979297939794979597969797979897999800980198029803980498059806980798089809981098119812981398149815981698179818981998209821982298239824982598269827982898299830983198329833983498359836983798389839984098419842984398449845984698479848984998509851985298539854985598569857985898599860986198629863986498659866986798689869987098719872987398749875987698779878987998809881988298839884988598869887988898899890989198929893989498959896989798989899990099019902990399049905990699079908990999109911991299139914991599169917991899199920992199229923992499259926992799289929993099319932993399349935993699379938993999409941994299439944994599469947994899499950995199529953995499559956995799589959996099619962996399649965996699679968996999709971997299739974997599769977997899799980998199829983998499859986998799889989999099919992999399949995999699979998999910000100011000210003100041000510006100071000810009100101001110012100131001410015100161001710018100191002010021100221002310024100251002610027100281002910030100311003210033100341003510036100371003810039100401004110042100431004410045100461004710048100491005010051100521005310054100551005610057100581005910060100611006210063100641006510066100671006810069100701007110072100731007410075100761007710078100791008010081100821008310084100851008610087100881008910090100911009210093100941009510096100971009810099101001010110102101031010410105101061010710108101091011010111101121011310114101151011610117101181011910120101211012210123101241012510126101271012810129101301013110132101331013410135101361013710138101391014010141101421014310144101451014610147101481014910150101511015210153101541015510156101571015810159101601016110162101631016410165101661016710168101691017010171101721017310174101751017610177101781017910180101811018210183101841018510186101871018810189101901019110192101931019410195101961019710198101991020010201102021020310204102051020610207102081020910210102111021210213102141021510216102171021810219102201022110222102231022410225102261022710228102291023010231102321023310234102351023610237102381023910240102411024210243102441024510246102471024810249102501025110252102531025410255102561025710258102591026010261102621026310264102651026610267102681026910270102711027210273102741027510276102771027810279102801028110282102831028410285102861028710288102891029010291102921029310294102951029610297102981029910300103011030210303103041030510306103071030810309103101031110312103131031410315103161031710318103191032010321103221032310324103251032610327103281032910330103311033210333103341033510336103371033810339103401034110342103431034410345103461034710348103491035010351103521035310354103551035610357103581035910360103611036210363103641036510366103671036810369103701037110372103731037410375103761037710378103791038010381103821038310384103851038610387103881038910390103911039210393103941039510396103971039810399104001040110402104031040410405104061040710408104091041010411104121041310414104151041610417104181041910420104211042210423104241042510426104271042810429104301043110432104331043410435104361043710438104391044010441104421044310444104451044610447104481044910450104511045210453104541045510456104571045810459104601046110462104631046410465104661046710468104691047010471104721047310474104751047610477104781047910480104811048210483104841048510486104871048810489104901049110492104931049410495104961049710498104991050010501105021050310504105051050610507105081050910510105111051210513105141051510516105171051810519105201052110522105231052410525105261052710528105291053010531105321053310534105351053610537105381053910540105411054210543105441054510546105471054810549105501055110552105531055410555105561055710558105591056010561105621056310564105651056610567105681056910570105711057210573105741057510576105771057810579105801058110582105831058410585105861058710588105891059010591105921059310594105951059610597105981059910600106011060210603106041060510606106071060810609106101061110612106131061410615106161061710618106191062010621106221062310624106251062610627106281062910630106311063210633106341063510636106371063810639106401064110642106431064410645106461064710648106491065010651106521065310654106551065610657106581065910660106611066210663106641066510666106671066810669106701067110672106731067410675106761067710678106791068010681106821068310684106851068610687106881068910690106911069210693106941069510696106971069810699107001070110702107031070410705107061070710708107091071010711107121071310714107151071610717107181071910720107211072210723107241072510726107271072810729107301073110732107331073410735107361073710738107391074010741107421074310744107451074610747107481074910750107511075210753107541075510756107571075810759107601076110762107631076410765107661076710768107691077010771107721077310774107751077610777107781077910780107811078210783107841078510786107871078810789107901079110792107931079410795107961079710798107991080010801108021080310804108051080610807108081080910810108111081210813108141081510816108171081810819108201082110822108231082410825108261082710828108291083010831108321083310834108351083610837108381083910840108411084210843108441084510846108471084810849108501085110852108531085410855108561085710858108591086010861108621086310864108651086610867108681086910870108711087210873108741087510876108771087810879108801088110882108831088410885108861088710888108891089010891108921089310894108951089610897108981089910900109011090210903109041090510906109071090810909109101091110912109131091410915109161091710918109191092010921109221092310924109251092610927109281092910930109311093210933109341093510936109371093810939109401094110942109431094410945109461094710948109491095010951109521095310954109551095610957109581095910960109611096210963109641096510966109671096810969109701097110972109731097410975109761097710978109791098010981109821098310984109851098610987109881098910990109911099210993109941099510996109971099810999110001100111002110031100411005110061100711008110091101011011110121101311014110151101611017110181101911020110211102211023110241102511026110271102811029110301103111032110331103411035110361103711038110391104011041110421104311044110451104611047110481104911050110511105211053110541105511056110571105811059110601106111062110631106411065110661106711068110691107011071110721107311074110751107611077110781107911080110811108211083110841108511086110871108811089110901109111092110931109411095110961109711098110991110011101111021110311104111051110611107111081110911110111111111211113111141111511116111171111811119111201112111122111231112411125111261112711128111291113011131111321113311134111351113611137111381113911140111411114211143111441114511146111471114811149111501115111152111531115411155111561115711158111591116011161111621116311164111651116611167111681116911170111711117211173111741117511176111771117811179111801118111182111831118411185111861118711188111891119011191111921119311194111951119611197111981119911200112011120211203112041120511206112071120811209112101121111212112131121411215112161121711218112191122011221112221122311224112251122611227112281122911230112311123211233112341123511236112371123811239112401124111242112431124411245112461124711248112491125011251112521125311254112551125611257112581125911260112611126211263112641126511266112671126811269112701127111272112731127411275112761127711278112791128011281112821128311284112851128611287112881128911290112911129211293112941129511296112971129811299113001130111302113031130411305113061130711308113091131011311113121131311314113151131611317113181131911320113211132211323113241132511326113271132811329113301133111332113331133411335113361133711338113391134011341113421134311344113451134611347113481134911350113511135211353113541135511356113571135811359113601136111362113631136411365113661136711368113691137011371113721137311374113751137611377113781137911380113811138211383113841138511386113871138811389113901139111392113931139411395113961139711398113991140011401114021140311404114051140611407114081140911410114111141211413114141141511416114171141811419114201142111422114231142411425114261142711428114291143011431114321143311434114351143611437114381143911440114411144211443114441144511446114471144811449114501145111452114531145411455114561145711458114591146011461114621146311464114651146611467114681146911470114711147211473114741147511476114771147811479114801148111482114831148411485114861148711488114891149011491114921149311494114951149611497114981149911500115011150211503115041150511506115071150811509115101151111512115131151411515115161151711518115191152011521115221152311524115251152611527115281152911530115311153211533115341153511536115371153811539115401154111542115431154411545115461154711548115491155011551115521155311554115551155611557115581155911560115611156211563115641156511566115671156811569115701157111572115731157411575115761157711578115791158011581115821158311584115851158611587115881158911590115911159211593115941159511596115971159811599116001160111602116031160411605116061160711608116091161011611116121161311614116151161611617116181161911620116211162211623116241162511626116271162811629116301163111632116331163411635116361163711638116391164011641116421164311644116451164611647116481164911650116511165211653116541165511656116571165811659116601166111662116631166411665116661166711668116691167011671116721167311674116751167611677116781167911680116811168211683116841168511686116871168811689116901169111692116931169411695116961169711698116991170011701117021170311704117051170611707117081170911710117111171211713117141171511716117171171811719117201172111722117231172411725117261172711728117291173011731117321173311734117351173611737117381173911740117411174211743117441174511746117471174811749117501175111752117531175411755117561175711758117591176011761117621176311764117651176611767117681176911770117711177211773117741177511776117771177811779117801178111782117831178411785117861178711788117891179011791117921179311794117951179611797117981179911800118011180211803118041180511806118071180811809118101181111812118131181411815118161181711818118191182011821118221182311824118251182611827118281182911830118311183211833118341183511836118371183811839118401184111842118431184411845118461184711848118491185011851118521185311854118551185611857118581185911860118611186211863118641186511866118671186811869118701187111872118731187411875118761187711878118791188011881118821188311884118851188611887118881188911890118911189211893118941189511896118971189811899119001190111902119031190411905119061190711908119091191011911119121191311914119151191611917119181191911920119211192211923119241192511926119271192811929119301193111932119331193411935119361193711938119391194011941119421194311944119451194611947119481194911950119511195211953119541195511956119571195811959119601196111962119631196411965119661196711968119691197011971119721197311974119751197611977119781197911980119811198211983119841198511986119871198811989119901199111992119931199411995119961199711998119991200012001120021200312004120051200612007120081200912010120111201212013120141201512016120171201812019120201202112022120231202412025120261202712028120291203012031120321203312034120351203612037120381203912040120411204212043120441204512046120471204812049120501205112052120531205412055120561205712058120591206012061120621206312064120651206612067120681206912070120711207212073120741207512076120771207812079120801208112082120831208412085120861208712088120891209012091120921209312094120951209612097120981209912100121011210212103121041210512106121071210812109121101211112112121131211412115121161211712118121191212012121121221212312124121251212612127121281212912130121311213212133121341213512136121371213812139121401214112142121431214412145121461214712148121491215012151121521215312154121551215612157121581215912160121611216212163121641216512166121671216812169121701217112172121731217412175121761217712178121791218012181121821218312184121851218612187121881218912190121911219212193121941219512196121971219812199122001220112202122031220412205122061220712208122091221012211122121221312214122151221612217122181221912220122211222212223122241222512226122271222812229122301223112232122331223412235122361223712238122391224012241122421224312244122451224612247122481224912250122511225212253122541225512256122571225812259122601226112262122631226412265122661226712268122691227012271122721227312274122751227612277122781227912280122811228212283122841228512286122871228812289122901229112292122931229412295122961229712298122991230012301123021230312304123051230612307123081230912310123111231212313123141231512316123171231812319123201232112322123231232412325123261232712328123291233012331123321233312334123351233612337123381233912340123411234212343123441234512346123471234812349123501235112352123531235412355123561235712358123591236012361123621236312364123651236612367123681236912370123711237212373123741237512376123771237812379123801238112382123831238412385123861238712388123891239012391123921239312394123951239612397123981239912400124011240212403124041240512406124071240812409124101241112412124131241412415124161241712418124191242012421124221242312424124251242612427124281242912430124311243212433124341243512436124371243812439124401244112442124431244412445124461244712448124491245012451124521245312454124551245612457124581245912460124611246212463124641246512466124671246812469124701247112472124731247412475124761247712478124791248012481124821248312484124851248612487124881248912490124911249212493124941249512496124971249812499125001250112502125031250412505125061250712508125091251012511125121251312514125151251612517125181251912520125211252212523125241252512526125271252812529125301253112532125331253412535125361253712538125391254012541125421254312544125451254612547125481254912550125511255212553125541255512556125571255812559125601256112562125631256412565125661256712568125691257012571125721257312574125751257612577125781257912580125811258212583125841258512586125871258812589125901259112592125931259412595125961259712598125991260012601126021260312604126051260612607126081260912610126111261212613126141261512616126171261812619126201262112622126231262412625126261262712628126291263012631126321263312634126351263612637126381263912640126411264212643126441264512646126471264812649126501265112652126531265412655126561265712658126591266012661126621266312664126651266612667126681266912670126711267212673126741267512676126771267812679126801268112682126831268412685126861268712688126891269012691126921269312694126951269612697126981269912700127011270212703127041270512706127071270812709127101271112712127131271412715127161271712718127191272012721127221272312724127251272612727127281272912730127311273212733127341273512736127371273812739127401274112742127431274412745127461274712748127491275012751127521275312754127551275612757127581275912760127611276212763127641276512766127671276812769127701277112772127731277412775127761277712778127791278012781127821278312784127851278612787127881278912790127911279212793127941279512796127971279812799128001280112802128031280412805128061280712808128091281012811128121281312814128151281612817128181281912820128211282212823128241282512826128271282812829128301283112832128331283412835128361283712838128391284012841128421284312844128451284612847128481284912850128511285212853128541285512856128571285812859128601286112862128631286412865128661286712868128691287012871128721287312874128751287612877128781287912880128811288212883128841288512886128871288812889128901289112892128931289412895128961289712898128991290012901129021290312904129051290612907129081290912910129111291212913129141291512916129171291812919129201292112922129231292412925129261292712928129291293012931129321293312934129351293612937129381293912940129411294212943129441294512946129471294812949129501295112952129531295412955129561295712958129591296012961129621296312964129651296612967129681296912970129711297212973129741297512976129771297812979129801298112982129831298412985129861298712988129891299012991129921299312994129951299612997129981299913000130011300213003130041300513006130071300813009130101301113012130131301413015130161301713018130191302013021130221302313024130251302613027130281302913030130311303213033130341303513036130371303813039130401304113042130431304413045130461304713048130491305013051130521305313054130551305613057130581305913060130611306213063130641306513066130671306813069130701307113072130731307413075130761307713078130791308013081130821308313084130851308613087130881308913090130911309213093130941309513096130971309813099131001310113102131031310413105131061310713108131091311013111131121311313114131151311613117131181311913120131211312213123131241312513126131271312813129131301313113132131331313413135131361313713138131391314013141131421314313144131451314613147131481314913150131511315213153131541315513156131571315813159131601316113162131631316413165131661316713168131691317013171131721317313174131751317613177131781317913180131811318213183131841318513186131871318813189131901319113192131931319413195131961319713198131991320013201132021320313204132051320613207132081320913210132111321213213132141321513216132171321813219132201322113222132231322413225132261322713228132291323013231132321323313234132351323613237132381323913240132411324213243132441324513246132471324813249132501325113252132531325413255132561325713258132591326013261132621326313264132651326613267132681326913270132711327213273132741327513276132771327813279132801328113282132831328413285132861328713288132891329013291132921329313294132951329613297132981329913300133011330213303133041330513306133071330813309133101331113312133131331413315133161331713318133191332013321133221332313324133251332613327133281332913330133311333213333133341333513336133371333813339133401334113342133431334413345133461334713348133491335013351133521335313354133551335613357133581335913360133611336213363133641336513366133671336813369133701337113372133731337413375133761337713378133791338013381133821338313384133851338613387133881338913390133911339213393133941339513396133971339813399134001340113402134031340413405134061340713408134091341013411134121341313414134151341613417134181341913420134211342213423134241342513426134271342813429134301343113432134331343413435134361343713438134391344013441134421344313444134451344613447134481344913450134511345213453134541345513456134571345813459134601346113462134631346413465134661346713468134691347013471134721347313474134751347613477134781347913480134811348213483134841348513486134871348813489134901349113492134931349413495134961349713498134991350013501135021350313504135051350613507135081350913510135111351213513135141351513516135171351813519135201352113522135231352413525135261352713528135291353013531135321353313534135351353613537135381353913540135411354213543135441354513546135471354813549135501355113552135531355413555135561355713558135591356013561135621356313564135651356613567135681356913570135711357213573135741357513576135771357813579135801358113582135831358413585135861358713588135891359013591135921359313594135951359613597135981359913600136011360213603136041360513606136071360813609136101361113612136131361413615136161361713618136191362013621136221362313624136251362613627136281362913630136311363213633136341363513636136371363813639136401364113642136431364413645136461364713648136491365013651136521365313654136551365613657136581365913660136611366213663136641366513666136671366813669136701367113672136731367413675136761367713678136791368013681136821368313684136851368613687136881368913690136911369213693136941369513696136971369813699137001370113702137031370413705137061370713708137091371013711137121371313714137151371613717137181371913720137211372213723137241372513726137271372813729137301373113732137331373413735137361373713738137391374013741137421374313744137451374613747137481374913750137511375213753137541375513756137571375813759137601376113762137631376413765137661376713768137691377013771137721377313774137751377613777137781377913780137811378213783137841378513786137871378813789137901379113792137931379413795137961379713798137991380013801138021380313804138051380613807138081380913810138111381213813138141381513816138171381813819138201382113822138231382413825138261382713828138291383013831138321383313834138351383613837138381383913840138411384213843138441384513846138471384813849138501385113852138531385413855138561385713858138591386013861138621386313864138651386613867138681386913870138711387213873138741387513876138771387813879138801388113882138831388413885138861388713888138891389013891138921389313894138951389613897138981389913900139011390213903139041390513906139071390813909139101391113912139131391413915139161391713918139191392013921139221392313924139251392613927139281392913930139311393213933139341393513936139371393813939139401394113942139431394413945139461394713948139491395013951139521395313954139551395613957139581395913960139611396213963139641396513966139671396813969139701397113972139731397413975139761397713978139791398013981139821398313984139851398613987139881398913990139911399213993139941399513996139971399813999140001400114002140031400414005140061400714008140091401014011140121401314014140151401614017140181401914020140211402214023140241402514026140271402814029140301403114032140331403414035140361403714038140391404014041140421404314044140451404614047140481404914050140511405214053140541405514056140571405814059140601406114062140631406414065140661406714068140691407014071140721407314074140751407614077140781407914080140811408214083140841408514086140871408814089140901409114092140931409414095140961409714098140991410014101141021410314104141051410614107141081410914110141111411214113141141411514116141171411814119141201412114122141231412414125141261412714128141291413014131141321413314134141351413614137141381413914140141411414214143141441414514146141471414814149141501415114152141531415414155141561415714158141591416014161141621416314164141651416614167141681416914170141711417214173141741417514176141771417814179141801418114182141831418414185141861418714188141891419014191141921419314194141951419614197141981419914200142011420214203142041420514206142071420814209142101421114212142131421414215142161421714218142191422014221142221422314224142251422614227142281422914230142311423214233142341423514236142371423814239142401424114242142431424414245142461424714248142491425014251142521425314254142551425614257142581425914260142611426214263142641426514266142671426814269142701427114272142731427414275142761427714278142791428014281142821428314284142851428614287142881428914290142911429214293142941429514296142971429814299143001430114302143031430414305143061430714308143091431014311143121431314314143151431614317143181431914320143211432214323143241432514326143271432814329143301433114332143331433414335143361433714338143391434014341143421434314344143451434614347143481434914350143511435214353143541435514356143571435814359143601436114362143631436414365143661436714368143691437014371143721437314374143751437614377143781437914380143811438214383143841438514386143871438814389143901439114392143931439414395143961439714398143991440014401144021440314404144051440614407144081440914410144111441214413144141441514416144171441814419144201442114422144231442414425144261442714428144291443014431144321443314434144351443614437144381443914440144411444214443144441444514446144471444814449144501445114452144531445414455144561445714458144591446014461144621446314464144651446614467144681446914470144711447214473144741447514476144771447814479144801448114482144831448414485144861448714488144891449014491144921449314494144951449614497144981449914500145011450214503145041450514506145071450814509145101451114512145131451414515145161451714518145191452014521145221452314524145251452614527145281452914530145311453214533145341453514536145371453814539145401454114542145431454414545145461454714548145491455014551145521455314554145551455614557145581455914560145611456214563145641456514566145671456814569145701457114572145731457414575145761457714578145791458014581145821458314584145851458614587145881458914590145911459214593145941459514596145971459814599146001460114602146031460414605146061460714608146091461014611146121461314614146151461614617146181461914620146211462214623146241462514626146271462814629146301463114632146331463414635146361463714638146391464014641146421464314644146451464614647146481464914650146511465214653146541465514656146571465814659146601466114662146631466414665146661466714668146691467014671146721467314674146751467614677146781467914680146811468214683146841468514686146871468814689146901469114692146931469414695146961469714698146991470014701147021470314704147051470614707147081470914710147111471214713147141471514716147171471814719147201472114722147231472414725147261472714728147291473014731147321473314734147351473614737147381473914740147411474214743147441474514746147471474814749147501475114752147531475414755147561475714758147591476014761147621476314764147651476614767147681476914770147711477214773147741477514776147771477814779147801478114782147831478414785147861478714788147891479014791147921479314794147951479614797147981479914800148011480214803148041480514806148071480814809148101481114812148131481414815148161481714818148191482014821148221482314824148251482614827148281482914830148311483214833148341483514836148371483814839148401484114842148431484414845148461484714848148491485014851148521485314854148551485614857148581485914860148611486214863148641486514866148671486814869148701487114872148731487414875148761487714878148791488014881148821488314884148851488614887148881488914890148911489214893148941489514896148971489814899149001490114902149031490414905149061490714908149091491014911149121491314914149151491614917149181491914920149211492214923149241492514926149271492814929149301493114932149331493414935149361493714938149391494014941149421494314944149451494614947149481494914950149511495214953149541495514956149571495814959149601496114962149631496414965149661496714968149691497014971149721497314974149751497614977149781497914980149811498214983149841498514986149871498814989149901499114992149931499414995149961499714998149991500015001150021500315004150051500615007150081500915010150111501215013150141501515016150171501815019150201502115022150231502415025150261502715028150291503015031150321503315034150351503615037150381503915040150411504215043150441504515046150471504815049150501505115052150531505415055150561505715058150591506015061150621506315064150651506615067150681506915070150711507215073150741507515076150771507815079150801508115082150831508415085150861508715088150891509015091150921509315094150951509615097150981509915100151011510215103151041510515106151071510815109151101511115112151131511415115151161511715118151191512015121151221512315124151251512615127151281512915130151311513215133151341513515136151371513815139151401514115142151431514415145151461514715148151491515015151151521515315154151551515615157151581515915160151611516215163151641516515166151671516815169151701517115172151731517415175151761517715178151791518015181151821518315184151851518615187151881518915190151911519215193151941519515196151971519815199152001520115202152031520415205152061520715208152091521015211152121521315214152151521615217152181521915220152211522215223152241522515226152271522815229152301523115232152331523415235152361523715238152391524015241152421524315244152451524615247152481524915250152511525215253152541525515256152571525815259152601526115262152631526415265152661526715268152691527015271152721527315274152751527615277152781527915280152811528215283152841528515286152871528815289152901529115292152931529415295152961529715298152991530015301153021530315304153051530615307153081530915310153111531215313153141531515316153171531815319153201532115322153231532415325153261532715328153291533015331153321533315334153351533615337153381533915340153411534215343153441534515346153471534815349153501535115352153531535415355153561535715358153591536015361153621536315364153651536615367153681536915370153711537215373153741537515376153771537815379153801538115382153831538415385153861538715388153891539015391153921539315394153951539615397153981539915400154011540215403154041540515406154071540815409154101541115412154131541415415154161541715418154191542015421154221542315424154251542615427154281542915430154311543215433154341543515436154371543815439154401544115442154431544415445154461544715448154491545015451154521545315454154551545615457154581545915460154611546215463154641546515466154671546815469154701547115472154731547415475154761547715478154791548015481154821548315484154851548615487154881548915490154911549215493154941549515496154971549815499155001550115502155031550415505155061550715508155091551015511155121551315514155151551615517155181551915520155211552215523155241552515526155271552815529155301553115532155331553415535155361553715538155391554015541155421554315544155451554615547155481554915550155511555215553155541555515556155571555815559155601556115562155631556415565155661556715568155691557015571155721557315574155751557615577155781557915580155811558215583155841558515586155871558815589155901559115592155931559415595155961559715598155991560015601156021560315604156051560615607156081560915610156111561215613156141561515616156171561815619156201562115622156231562415625156261562715628156291563015631156321563315634156351563615637156381563915640156411564215643156441564515646156471564815649156501565115652156531565415655156561565715658156591566015661156621566315664156651566615667156681566915670156711567215673156741567515676156771567815679156801568115682156831568415685156861568715688156891569015691156921569315694156951569615697156981569915700157011570215703157041570515706157071570815709157101571115712157131571415715157161571715718157191572015721157221572315724157251572615727157281572915730157311573215733157341573515736157371573815739157401574115742157431574415745157461574715748157491575015751157521575315754157551575615757157581575915760157611576215763157641576515766157671576815769157701577115772157731577415775157761577715778157791578015781157821578315784157851578615787157881578915790157911579215793157941579515796157971579815799158001580115802158031580415805158061580715808158091581015811158121581315814158151581615817158181581915820158211582215823158241582515826158271582815829158301583115832158331583415835158361583715838158391584015841158421584315844158451584615847158481584915850158511585215853158541585515856158571585815859158601586115862158631586415865158661586715868158691587015871158721587315874158751587615877158781587915880158811588215883158841588515886158871588815889158901589115892158931589415895158961589715898158991590015901159021590315904159051590615907159081590915910159111591215913159141591515916159171591815919159201592115922159231592415925159261592715928159291593015931159321593315934159351593615937159381593915940159411594215943159441594515946159471594815949159501595115952159531595415955159561595715958159591596015961159621596315964159651596615967159681596915970159711597215973159741597515976159771597815979159801598115982159831598415985159861598715988159891599015991159921599315994159951599615997159981599916000160011600216003160041600516006160071600816009160101601116012160131601416015160161601716018160191602016021160221602316024160251602616027160281602916030160311603216033160341603516036160371603816039160401604116042160431604416045160461604716048160491605016051160521605316054160551605616057160581605916060160611606216063160641606516066160671606816069160701607116072160731607416075160761607716078160791608016081160821608316084160851608616087160881608916090160911609216093160941609516096160971609816099161001610116102161031610416105161061610716108161091611016111161121611316114161151611616117161181611916120161211612216123161241612516126161271612816129161301613116132161331613416135161361613716138161391614016141161421614316144161451614616147161481614916150161511615216153161541615516156161571615816159161601616116162161631616416165161661616716168161691617016171161721617316174161751617616177161781617916180161811618216183161841618516186161871618816189161901619116192161931619416195161961619716198161991620016201162021620316204162051620616207162081620916210162111621216213162141621516216162171621816219162201622116222162231622416225162261622716228162291623016231162321623316234162351623616237162381623916240162411624216243162441624516246162471624816249162501625116252162531625416255162561625716258162591626016261162621626316264162651626616267162681626916270162711627216273162741627516276162771627816279162801628116282162831628416285162861628716288162891629016291162921629316294162951629616297162981629916300163011630216303163041630516306163071630816309163101631116312163131631416315163161631716318163191632016321163221632316324163251632616327163281632916330163311633216333163341633516336163371633816339163401634116342163431634416345163461634716348163491635016351163521635316354163551635616357163581635916360163611636216363163641636516366163671636816369163701637116372163731637416375163761637716378163791638016381163821638316384163851638616387163881638916390163911639216393163941639516396163971639816399164001640116402164031640416405164061640716408164091641016411164121641316414164151641616417164181641916420164211642216423164241642516426164271642816429164301643116432164331643416435164361643716438164391644016441164421644316444164451644616447164481644916450164511645216453164541645516456164571645816459164601646116462164631646416465164661646716468164691647016471164721647316474164751647616477164781647916480164811648216483164841648516486164871648816489164901649116492164931649416495164961649716498164991650016501165021650316504165051650616507165081650916510165111651216513165141651516516165171651816519165201652116522165231652416525165261652716528165291653016531165321653316534165351653616537165381653916540165411654216543165441654516546165471654816549165501655116552165531655416555165561655716558165591656016561165621656316564165651656616567165681656916570165711657216573165741657516576165771657816579165801658116582165831658416585165861658716588165891659016591165921659316594165951659616597165981659916600166011660216603166041660516606166071660816609166101661116612166131661416615166161661716618166191662016621166221662316624166251662616627166281662916630166311663216633166341663516636166371663816639166401664116642166431664416645166461664716648166491665016651166521665316654166551665616657166581665916660166611666216663166641666516666166671666816669166701667116672166731667416675166761667716678166791668016681166821668316684166851668616687166881668916690166911669216693166941669516696166971669816699167001670116702167031670416705167061670716708167091671016711167121671316714167151671616717167181671916720167211672216723167241672516726167271672816729167301673116732167331673416735167361673716738167391674016741167421674316744167451674616747167481674916750167511675216753167541675516756167571675816759167601676116762167631676416765167661676716768167691677016771167721677316774167751677616777167781677916780167811678216783167841678516786167871678816789167901679116792167931679416795167961679716798167991680016801168021680316804168051680616807168081680916810168111681216813168141681516816168171681816819168201682116822168231682416825168261682716828168291683016831168321683316834168351683616837168381683916840168411684216843168441684516846168471684816849168501685116852168531685416855168561685716858168591686016861168621686316864168651686616867168681686916870168711687216873168741687516876168771687816879168801688116882168831688416885168861688716888168891689016891168921689316894168951689616897168981689916900169011690216903169041690516906169071690816909169101691116912169131691416915169161691716918169191692016921169221692316924169251692616927169281692916930169311693216933169341693516936169371693816939169401694116942169431694416945169461694716948169491695016951169521695316954169551695616957169581695916960169611696216963169641696516966169671696816969169701697116972169731697416975169761697716978169791698016981169821698316984169851698616987169881698916990169911699216993169941699516996169971699816999170001700117002170031700417005170061700717008170091701017011170121701317014170151701617017170181701917020170211702217023170241702517026170271702817029170301703117032170331703417035170361703717038170391704017041170421704317044170451704617047170481704917050170511705217053170541705517056170571705817059170601706117062170631706417065170661706717068170691707017071170721707317074170751707617077170781707917080170811708217083170841708517086170871708817089170901709117092170931709417095170961709717098170991710017101171021710317104171051710617107171081710917110171111711217113171141711517116171171711817119171201712117122171231712417125171261712717128171291713017131171321713317134171351713617137171381713917140171411714217143171441714517146171471714817149171501715117152171531715417155171561715717158171591716017161171621716317164171651716617167171681716917170171711717217173171741717517176171771717817179171801718117182171831718417185171861718717188171891719017191171921719317194171951719617197171981719917200172011720217203172041720517206172071720817209172101721117212172131721417215172161721717218172191722017221172221722317224172251722617227172281722917230172311723217233172341723517236172371723817239172401724117242172431724417245172461724717248172491725017251172521725317254172551725617257172581725917260172611726217263172641726517266172671726817269172701727117272172731727417275172761727717278172791728017281172821728317284172851728617287172881728917290172911729217293172941729517296172971729817299173001730117302173031730417305173061730717308173091731017311173121731317314173151731617317173181731917320173211732217323173241732517326173271732817329173301733117332173331733417335173361733717338173391734017341173421734317344173451734617347173481734917350173511735217353173541735517356173571735817359173601736117362173631736417365173661736717368173691737017371173721737317374173751737617377173781737917380173811738217383173841738517386173871738817389173901739117392173931739417395173961739717398173991740017401174021740317404174051740617407174081740917410174111741217413174141741517416174171741817419174201742117422174231742417425174261742717428174291743017431174321743317434174351743617437174381743917440174411744217443174441744517446174471744817449174501745117452174531745417455174561745717458174591746017461174621746317464174651746617467174681746917470174711747217473174741747517476174771747817479174801748117482174831748417485174861748717488174891749017491174921749317494174951749617497174981749917500175011750217503175041750517506175071750817509175101751117512175131751417515175161751717518175191752017521175221752317524175251752617527175281752917530175311753217533175341753517536175371753817539175401754117542175431754417545175461754717548175491755017551175521755317554175551755617557175581755917560175611756217563175641756517566175671756817569175701757117572175731757417575175761757717578175791758017581175821758317584175851758617587175881758917590175911759217593175941759517596175971759817599176001760117602176031760417605176061760717608176091761017611176121761317614176151761617617176181761917620176211762217623176241762517626176271762817629176301763117632176331763417635176361763717638176391764017641176421764317644176451764617647176481764917650176511765217653176541765517656176571765817659176601766117662176631766417665176661766717668176691767017671176721767317674176751767617677176781767917680176811768217683176841768517686176871768817689176901769117692176931769417695176961769717698176991770017701177021770317704177051770617707177081770917710177111771217713177141771517716177171771817719177201772117722177231772417725177261772717728177291773017731177321773317734177351773617737177381773917740177411774217743177441774517746177471774817749177501775117752177531775417755177561775717758177591776017761177621776317764177651776617767177681776917770177711777217773177741777517776177771777817779177801778117782177831778417785177861778717788177891779017791177921779317794177951779617797177981779917800178011780217803178041780517806178071780817809178101781117812178131781417815178161781717818178191782017821178221782317824178251782617827178281782917830178311783217833178341783517836178371783817839178401784117842178431784417845178461784717848178491785017851178521785317854178551785617857178581785917860178611786217863178641786517866178671786817869178701787117872178731787417875178761787717878178791788017881178821788317884178851788617887178881788917890178911789217893178941789517896178971789817899179001790117902179031790417905179061790717908179091791017911179121791317914179151791617917179181791917920179211792217923179241792517926179271792817929179301793117932179331793417935179361793717938179391794017941179421794317944179451794617947179481794917950179511795217953179541795517956179571795817959179601796117962179631796417965179661796717968179691797017971179721797317974179751797617977179781797917980179811798217983179841798517986179871798817989179901799117992179931799417995179961799717998179991800018001180021800318004180051800618007180081800918010180111801218013180141801518016180171801818019180201802118022180231802418025180261802718028180291803018031180321803318034180351803618037180381803918040180411804218043180441804518046180471804818049180501805118052180531805418055180561805718058180591806018061180621806318064180651806618067180681806918070180711807218073180741807518076180771807818079180801808118082180831808418085180861808718088180891809018091180921809318094180951809618097180981809918100181011810218103181041810518106181071810818109181101811118112181131811418115181161811718118181191812018121181221812318124181251812618127181281812918130181311813218133181341813518136181371813818139181401814118142181431814418145181461814718148181491815018151181521815318154181551815618157181581815918160181611816218163181641816518166181671816818169181701817118172181731817418175181761817718178181791818018181181821818318184181851818618187181881818918190181911819218193181941819518196181971819818199182001820118202182031820418205182061820718208182091821018211182121821318214182151821618217182181821918220182211822218223182241822518226182271822818229182301823118232182331823418235182361823718238182391824018241182421824318244182451824618247182481824918250182511825218253182541825518256182571825818259182601826118262182631826418265182661826718268182691827018271182721827318274182751827618277182781827918280182811828218283182841828518286182871828818289182901829118292182931829418295182961829718298182991830018301183021830318304183051830618307183081830918310183111831218313183141831518316183171831818319183201832118322183231832418325183261832718328183291833018331183321833318334183351833618337183381833918340183411834218343183441834518346183471834818349183501835118352183531835418355183561835718358183591836018361183621836318364183651836618367183681836918370183711837218373183741837518376183771837818379183801838118382183831838418385183861838718388183891839018391183921839318394183951839618397183981839918400184011840218403184041840518406184071840818409184101841118412184131841418415184161841718418184191842018421184221842318424184251842618427184281842918430184311843218433184341843518436184371843818439184401844118442184431844418445184461844718448184491845018451184521845318454184551845618457184581845918460184611846218463184641846518466184671846818469184701847118472184731847418475184761847718478184791848018481184821848318484184851848618487184881848918490184911849218493184941849518496184971849818499185001850118502185031850418505185061850718508185091851018511185121851318514185151851618517185181851918520185211852218523185241852518526185271852818529185301853118532185331853418535185361853718538185391854018541185421854318544185451854618547185481854918550185511855218553185541855518556185571855818559185601856118562185631856418565185661856718568185691857018571185721857318574185751857618577185781857918580185811858218583185841858518586185871858818589185901859118592185931859418595185961859718598185991860018601186021860318604186051860618607186081860918610186111861218613186141861518616186171861818619186201862118622186231862418625186261862718628186291863018631186321863318634186351863618637186381863918640186411864218643186441864518646186471864818649186501865118652186531865418655186561865718658186591866018661186621866318664186651866618667186681866918670186711867218673186741867518676186771867818679186801868118682186831868418685186861868718688186891869018691186921869318694186951869618697186981869918700187011870218703187041870518706187071870818709187101871118712187131871418715187161871718718187191872018721187221872318724187251872618727187281872918730187311873218733187341873518736187371873818739187401874118742187431874418745187461874718748187491875018751187521875318754187551875618757187581875918760187611876218763187641876518766187671876818769187701877118772187731877418775187761877718778187791878018781187821878318784187851878618787187881878918790187911879218793187941879518796187971879818799188001880118802188031880418805188061880718808188091881018811188121881318814188151881618817188181881918820188211882218823188241882518826188271882818829188301883118832188331883418835188361883718838188391884018841188421884318844188451884618847188481884918850188511885218853188541885518856188571885818859188601886118862188631886418865188661886718868188691887018871188721887318874188751887618877188781887918880188811888218883188841888518886188871888818889188901889118892188931889418895188961889718898188991890018901189021890318904189051890618907189081890918910189111891218913189141891518916189171891818919189201892118922189231892418925189261892718928189291893018931189321893318934189351893618937189381893918940189411894218943189441894518946189471894818949189501895118952189531895418955189561895718958189591896018961189621896318964189651896618967189681896918970189711897218973189741897518976189771897818979189801898118982189831898418985189861898718988189891899018991189921899318994189951899618997189981899919000190011900219003190041900519006190071900819009190101901119012190131901419015190161901719018190191902019021190221902319024190251902619027190281902919030190311903219033190341903519036190371903819039190401904119042190431904419045190461904719048190491905019051190521905319054190551905619057190581905919060190611906219063190641906519066190671906819069190701907119072190731907419075190761907719078190791908019081190821908319084190851908619087190881908919090190911909219093190941909519096190971909819099191001910119102191031910419105191061910719108191091911019111191121911319114191151911619117191181911919120191211912219123191241912519126191271912819129191301913119132191331913419135191361913719138191391914019141191421914319144191451914619147191481914919150191511915219153191541915519156191571915819159191601916119162191631916419165191661916719168191691917019171191721917319174191751917619177191781917919180191811918219183191841918519186191871918819189191901919119192191931919419195191961919719198191991920019201192021920319204192051920619207192081920919210192111921219213192141921519216192171921819219192201922119222192231922419225192261922719228192291923019231192321923319234192351923619237192381923919240192411924219243192441924519246192471924819249192501925119252192531925419255192561925719258192591926019261192621926319264192651926619267192681926919270192711927219273192741927519276192771927819279192801928119282192831928419285192861928719288192891929019291192921929319294192951929619297192981929919300193011930219303193041930519306193071930819309193101931119312193131931419315193161931719318193191932019321193221932319324193251932619327193281932919330193311933219333193341933519336193371933819339193401934119342193431934419345193461934719348193491935019351193521935319354193551935619357193581935919360193611936219363193641936519366193671936819369193701937119372193731937419375193761937719378193791938019381193821938319384193851938619387193881938919390193911939219393193941939519396193971939819399194001940119402194031940419405194061940719408194091941019411194121941319414194151941619417194181941919420194211942219423194241942519426194271942819429194301943119432194331943419435194361943719438194391944019441194421944319444194451944619447194481944919450194511945219453194541945519456194571945819459194601946119462194631946419465194661946719468194691947019471194721947319474194751947619477194781947919480194811948219483194841948519486194871948819489194901949119492194931949419495194961949719498194991950019501195021950319504195051950619507195081950919510195111951219513195141951519516195171951819519195201952119522195231952419525195261952719528195291953019531195321953319534195351953619537195381953919540195411954219543195441954519546195471954819549195501955119552195531955419555195561955719558195591956019561195621956319564195651956619567195681956919570195711957219573195741957519576195771957819579195801958119582195831958419585195861958719588195891959019591195921959319594195951959619597195981959919600196011960219603196041960519606196071960819609196101961119612196131961419615196161961719618196191962019621196221962319624196251962619627196281962919630196311963219633196341963519636196371963819639196401964119642196431964419645196461964719648196491965019651196521965319654196551965619657196581965919660196611966219663196641966519666196671966819669196701967119672196731967419675196761967719678196791968019681196821968319684196851968619687196881968919690196911969219693196941969519696196971969819699197001970119702197031970419705197061970719708197091971019711197121971319714197151971619717197181971919720197211972219723197241972519726197271972819729197301973119732197331973419735197361973719738197391974019741197421974319744197451974619747197481974919750197511975219753197541975519756197571975819759197601976119762197631976419765197661976719768197691977019771197721977319774197751977619777197781977919780197811978219783197841978519786197871978819789197901979119792197931979419795197961979719798197991980019801198021980319804198051980619807198081980919810198111981219813198141981519816198171981819819198201982119822198231982419825198261982719828198291983019831198321983319834198351983619837198381983919840198411984219843198441984519846198471984819849198501985119852198531985419855198561985719858198591986019861198621986319864198651986619867198681986919870198711987219873198741987519876198771987819879198801988119882198831988419885198861988719888198891989019891198921989319894198951989619897198981989919900199011990219903199041990519906199071990819909199101991119912199131991419915199161991719918199191992019921199221992319924199251992619927199281992919930199311993219933199341993519936199371993819939199401994119942199431994419945199461994719948199491995019951199521995319954199551995619957199581995919960199611996219963199641996519966199671996819969199701997119972199731997419975199761997719978199791998019981199821998319984199851998619987199881998919990199911999219993199941999519996199971999819999200002000120002200032000420005200062000720008200092001020011200122001320014200152001620017200182001920020200212002220023200242002520026200272002820029200302003120032200332003420035200362003720038200392004020041200422004320044200452004620047200482004920050200512005220053200542005520056200572005820059200602006120062200632006420065200662006720068200692007020071200722007320074200752007620077200782007920080200812008220083200842008520086200872008820089200902009120092200932009420095200962009720098200992010020101201022010320104201052010620107201082010920110201112011220113201142011520116201172011820119201202012120122201232012420125201262012720128201292013020131201322013320134201352013620137201382013920140201412014220143201442014520146201472014820149201502015120152201532015420155201562015720158201592016020161201622016320164201652016620167201682016920170201712017220173201742017520176201772017820179201802018120182201832018420185201862018720188201892019020191201922019320194201952019620197201982019920200202012020220203202042020520206202072020820209202102021120212202132021420215202162021720218202192022020221202222022320224202252022620227202282022920230202312023220233202342023520236202372023820239202402024120242202432024420245202462024720248202492025020251202522025320254202552025620257202582025920260202612026220263202642026520266202672026820269202702027120272202732027420275202762027720278202792028020281202822028320284202852028620287202882028920290202912029220293202942029520296202972029820299203002030120302203032030420305203062030720308203092031020311203122031320314203152031620317203182031920320203212032220323203242032520326203272032820329203302033120332203332033420335203362033720338203392034020341203422034320344203452034620347203482034920350203512035220353203542035520356203572035820359203602036120362203632036420365203662036720368203692037020371203722037320374203752037620377203782037920380203812038220383203842038520386203872038820389203902039120392203932039420395203962039720398203992040020401204022040320404204052040620407204082040920410204112041220413204142041520416204172041820419204202042120422204232042420425204262042720428204292043020431204322043320434204352043620437204382043920440204412044220443204442044520446204472044820449204502045120452204532045420455204562045720458204592046020461204622046320464204652046620467204682046920470204712047220473204742047520476204772047820479204802048120482204832048420485204862048720488204892049020491204922049320494204952049620497204982049920500205012050220503205042050520506205072050820509205102051120512205132051420515205162051720518205192052020521205222052320524205252052620527205282052920530205312053220533205342053520536205372053820539205402054120542205432054420545205462054720548205492055020551205522055320554205552055620557205582055920560205612056220563205642056520566205672056820569205702057120572205732057420575205762057720578205792058020581205822058320584205852058620587205882058920590205912059220593205942059520596205972059820599206002060120602206032060420605206062060720608206092061020611206122061320614206152061620617206182061920620206212062220623206242062520626206272062820629206302063120632206332063420635206362063720638206392064020641206422064320644206452064620647206482064920650206512065220653206542065520656206572065820659206602066120662206632066420665206662066720668206692067020671206722067320674206752067620677206782067920680206812068220683206842068520686206872068820689206902069120692206932069420695206962069720698206992070020701207022070320704207052070620707207082070920710207112071220713207142071520716207172071820719207202072120722207232072420725207262072720728207292073020731207322073320734207352073620737207382073920740207412074220743207442074520746207472074820749207502075120752207532075420755207562075720758207592076020761207622076320764207652076620767207682076920770207712077220773207742077520776207772077820779207802078120782207832078420785207862078720788207892079020791207922079320794207952079620797207982079920800208012080220803208042080520806208072080820809208102081120812208132081420815208162081720818208192082020821208222082320824208252082620827208282082920830208312083220833208342083520836208372083820839208402084120842208432084420845208462084720848208492085020851208522085320854208552085620857208582085920860208612086220863208642086520866208672086820869208702087120872208732087420875208762087720878208792088020881208822088320884208852088620887208882088920890208912089220893208942089520896208972089820899209002090120902209032090420905209062090720908209092091020911209122091320914209152091620917209182091920920209212092220923209242092520926209272092820929209302093120932209332093420935209362093720938209392094020941209422094320944209452094620947209482094920950209512095220953209542095520956209572095820959209602096120962209632096420965209662096720968209692097020971209722097320974209752097620977209782097920980209812098220983209842098520986209872098820989209902099120992209932099420995209962099720998209992100021001210022100321004210052100621007210082100921010210112101221013210142101521016210172101821019210202102121022210232102421025210262102721028210292103021031210322103321034210352103621037210382103921040210412104221043210442104521046210472104821049210502105121052210532105421055210562105721058210592106021061210622106321064210652106621067210682106921070210712107221073210742107521076210772107821079210802108121082210832108421085210862108721088210892109021091210922109321094210952109621097210982109921100211012110221103211042110521106211072110821109211102111121112211132111421115211162111721118211192112021121211222112321124211252112621127211282112921130211312113221133211342113521136211372113821139211402114121142211432114421145211462114721148211492115021151211522115321154211552115621157211582115921160211612116221163211642116521166211672116821169211702117121172211732117421175211762117721178211792118021181211822118321184211852118621187211882118921190211912119221193211942119521196211972119821199212002120121202212032120421205212062120721208212092121021211212122121321214212152121621217212182121921220212212122221223212242122521226212272122821229212302123121232212332123421235212362123721238212392124021241212422124321244212452124621247212482124921250212512125221253212542125521256212572125821259212602126121262212632126421265212662126721268212692127021271212722127321274212752127621277212782127921280212812128221283212842128521286212872128821289212902129121292212932129421295212962129721298212992130021301213022130321304213052130621307213082130921310213112131221313213142131521316213172131821319213202132121322213232132421325213262132721328213292133021331213322133321334213352133621337213382133921340213412134221343213442134521346213472134821349213502135121352213532135421355213562135721358213592136021361213622136321364213652136621367213682136921370213712137221373213742137521376213772137821379213802138121382213832138421385213862138721388213892139021391213922139321394213952139621397213982139921400214012140221403214042140521406214072140821409214102141121412214132141421415214162141721418214192142021421214222142321424214252142621427214282142921430214312143221433214342143521436214372143821439214402144121442214432144421445214462144721448214492145021451214522145321454214552145621457214582145921460214612146221463214642146521466214672146821469214702147121472214732147421475214762147721478214792148021481214822148321484214852148621487214882148921490214912149221493214942149521496214972149821499215002150121502215032150421505215062150721508215092151021511215122151321514215152151621517215182151921520215212152221523215242152521526215272152821529215302153121532215332153421535215362153721538215392154021541215422154321544215452154621547215482154921550215512155221553215542155521556215572155821559215602156121562215632156421565215662156721568215692157021571215722157321574215752157621577215782157921580215812158221583215842158521586215872158821589215902159121592215932159421595215962159721598215992160021601216022160321604216052160621607216082160921610216112161221613216142161521616216172161821619216202162121622216232162421625216262162721628216292163021631216322163321634216352163621637216382163921640216412164221643216442164521646216472164821649216502165121652216532165421655216562165721658216592166021661216622166321664216652166621667216682166921670216712167221673216742167521676216772167821679216802168121682216832168421685216862168721688216892169021691216922169321694216952169621697216982169921700217012170221703217042170521706217072170821709217102171121712217132171421715217162171721718217192172021721217222172321724217252172621727217282172921730217312173221733217342173521736217372173821739217402174121742217432174421745217462174721748217492175021751217522175321754217552175621757217582175921760217612176221763217642176521766217672176821769217702177121772217732177421775217762177721778217792178021781217822178321784217852178621787217882178921790217912179221793217942179521796217972179821799218002180121802218032180421805218062180721808218092181021811218122181321814218152181621817218182181921820218212182221823218242182521826218272182821829218302183121832218332183421835218362183721838218392184021841218422184321844218452184621847218482184921850218512185221853218542185521856218572185821859218602186121862218632186421865218662186721868218692187021871218722187321874218752187621877218782187921880218812188221883218842188521886218872188821889218902189121892218932189421895218962189721898218992190021901219022190321904219052190621907219082190921910219112191221913219142191521916219172191821919219202192121922219232192421925219262192721928219292193021931219322193321934219352193621937219382193921940219412194221943219442194521946219472194821949219502195121952219532195421955219562195721958219592196021961219622196321964219652196621967219682196921970219712197221973219742197521976219772197821979219802198121982219832198421985219862198721988219892199021991219922199321994219952199621997219982199922000220012200222003220042200522006220072200822009220102201122012220132201422015220162201722018220192202022021220222202322024220252202622027220282202922030220312203222033220342203522036220372203822039220402204122042220432204422045220462204722048220492205022051220522205322054220552205622057220582205922060220612206222063220642206522066220672206822069220702207122072220732207422075220762207722078220792208022081220822208322084220852208622087220882208922090220912209222093220942209522096220972209822099221002210122102221032210422105221062210722108221092211022111221122211322114221152211622117221182211922120221212212222123221242212522126221272212822129221302213122132221332213422135221362213722138221392214022141221422214322144221452214622147221482214922150221512215222153221542215522156221572215822159221602216122162221632216422165221662216722168221692217022171221722217322174221752217622177221782217922180221812218222183221842218522186221872218822189221902219122192221932219422195221962219722198221992220022201222022220322204222052220622207222082220922210222112221222213222142221522216222172221822219222202222122222222232222422225222262222722228222292223022231222322223322234222352223622237222382223922240222412224222243222442224522246222472224822249222502225122252222532225422255222562225722258222592226022261222622226322264222652226622267222682226922270222712227222273222742227522276222772227822279222802228122282222832228422285222862228722288222892229022291222922229322294222952229622297222982229922300223012230222303223042230522306223072230822309223102231122312223132231422315223162231722318223192232022321223222232322324223252232622327223282232922330223312233222333223342233522336223372233822339223402234122342223432234422345223462234722348223492235022351223522235322354223552235622357223582235922360223612236222363223642236522366223672236822369223702237122372223732237422375223762237722378223792238022381223822238322384223852238622387223882238922390223912239222393223942239522396223972239822399224002240122402224032240422405224062240722408224092241022411224122241322414224152241622417224182241922420224212242222423224242242522426224272242822429224302243122432224332243422435224362243722438224392244022441224422244322444224452244622447224482244922450224512245222453224542245522456224572245822459224602246122462224632246422465224662246722468224692247022471224722247322474224752247622477224782247922480224812248222483224842248522486224872248822489224902249122492224932249422495224962249722498224992250022501225022250322504225052250622507225082250922510225112251222513225142251522516225172251822519225202252122522225232252422525225262252722528225292253022531225322253322534225352253622537225382253922540225412254222543225442254522546225472254822549225502255122552225532255422555225562255722558225592256022561225622256322564225652256622567225682256922570225712257222573225742257522576225772257822579225802258122582225832258422585225862258722588225892259022591225922259322594225952259622597225982259922600226012260222603226042260522606226072260822609226102261122612226132261422615226162261722618226192262022621226222262322624226252262622627226282262922630226312263222633226342263522636226372263822639226402264122642226432264422645226462264722648226492265022651226522265322654226552265622657226582265922660226612266222663226642266522666226672266822669226702267122672226732267422675226762267722678226792268022681226822268322684226852268622687226882268922690226912269222693226942269522696226972269822699227002270122702227032270422705227062270722708227092271022711227122271322714227152271622717227182271922720227212272222723227242272522726227272272822729227302273122732227332273422735227362273722738227392274022741227422274322744227452274622747227482274922750227512275222753227542275522756227572275822759227602276122762227632276422765227662276722768227692277022771227722277322774227752277622777227782277922780227812278222783227842278522786227872278822789227902279122792227932279422795227962279722798227992280022801228022280322804228052280622807228082280922810228112281222813228142281522816228172281822819228202282122822228232282422825228262282722828228292283022831228322283322834228352283622837228382283922840228412284222843228442284522846228472284822849228502285122852228532285422855228562285722858228592286022861228622286322864228652286622867228682286922870228712287222873228742287522876228772287822879228802288122882228832288422885228862288722888228892289022891228922289322894228952289622897228982289922900229012290222903229042290522906229072290822909229102291122912229132291422915229162291722918229192292022921229222292322924229252292622927229282292922930229312293222933229342293522936229372293822939229402294122942229432294422945229462294722948229492295022951229522295322954229552295622957229582295922960229612296222963229642296522966229672296822969229702297122972229732297422975229762297722978229792298022981229822298322984229852298622987229882298922990229912299222993229942299522996229972299822999230002300123002230032300423005230062300723008230092301023011230122301323014230152301623017230182301923020230212302223023230242302523026230272302823029230302303123032230332303423035230362303723038230392304023041230422304323044230452304623047230482304923050230512305223053230542305523056230572305823059230602306123062230632306423065230662306723068230692307023071230722307323074230752307623077230782307923080230812308223083230842308523086230872308823089230902309123092230932309423095230962309723098230992310023101231022310323104231052310623107231082310923110231112311223113231142311523116231172311823119231202312123122231232312423125231262312723128231292313023131231322313323134231352313623137231382313923140231412314223143231442314523146231472314823149231502315123152231532315423155231562315723158231592316023161231622316323164231652316623167231682316923170231712317223173231742317523176231772317823179231802318123182231832318423185231862318723188231892319023191231922319323194231952319623197231982319923200232012320223203232042320523206232072320823209232102321123212232132321423215232162321723218232192322023221232222322323224232252322623227232282322923230232312323223233232342323523236232372323823239232402324123242232432324423245232462324723248232492325023251232522325323254232552325623257232582325923260232612326223263232642326523266232672326823269232702327123272232732327423275232762327723278232792328023281232822328323284232852328623287232882328923290232912329223293232942329523296232972329823299233002330123302233032330423305233062330723308233092331023311233122331323314233152331623317233182331923320233212332223323233242332523326233272332823329233302333123332233332333423335233362333723338233392334023341233422334323344233452334623347233482334923350233512335223353233542335523356233572335823359233602336123362233632336423365233662336723368233692337023371233722337323374233752337623377233782337923380233812338223383233842338523386233872338823389233902339123392233932339423395233962339723398233992340023401234022340323404234052340623407234082340923410234112341223413234142341523416234172341823419234202342123422234232342423425234262342723428234292343023431234322343323434234352343623437234382343923440234412344223443234442344523446234472344823449234502345123452234532345423455234562345723458234592346023461234622346323464234652346623467234682346923470234712347223473234742347523476234772347823479234802348123482234832348423485234862348723488234892349023491234922349323494234952349623497234982349923500235012350223503235042350523506235072350823509235102351123512235132351423515235162351723518235192352023521235222352323524235252352623527235282352923530235312353223533235342353523536235372353823539235402354123542235432354423545235462354723548235492355023551235522355323554235552355623557235582355923560235612356223563235642356523566235672356823569235702357123572235732357423575235762357723578235792358023581235822358323584235852358623587235882358923590235912359223593235942359523596235972359823599236002360123602236032360423605236062360723608236092361023611236122361323614236152361623617236182361923620236212362223623236242362523626236272362823629236302363123632236332363423635236362363723638236392364023641236422364323644236452364623647236482364923650236512365223653236542365523656236572365823659236602366123662236632366423665236662366723668236692367023671236722367323674236752367623677236782367923680236812368223683236842368523686236872368823689236902369123692236932369423695236962369723698236992370023701237022370323704237052370623707237082370923710237112371223713237142371523716237172371823719237202372123722237232372423725237262372723728237292373023731237322373323734237352373623737237382373923740237412374223743237442374523746237472374823749237502375123752237532375423755237562375723758237592376023761237622376323764237652376623767237682376923770237712377223773237742377523776237772377823779237802378123782237832378423785237862378723788237892379023791237922379323794237952379623797237982379923800238012380223803238042380523806238072380823809238102381123812238132381423815238162381723818238192382023821238222382323824238252382623827238282382923830238312383223833238342383523836238372383823839238402384123842238432384423845238462384723848238492385023851238522385323854238552385623857238582385923860238612386223863238642386523866238672386823869238702387123872238732387423875238762387723878238792388023881238822388323884238852388623887238882388923890238912389223893238942389523896238972389823899239002390123902239032390423905239062390723908239092391023911239122391323914239152391623917239182391923920239212392223923239242392523926239272392823929239302393123932239332393423935239362393723938239392394023941239422394323944239452394623947239482394923950239512395223953239542395523956239572395823959239602396123962239632396423965239662396723968239692397023971239722397323974239752397623977239782397923980239812398223983239842398523986239872398823989239902399123992239932399423995239962399723998239992400024001240022400324004240052400624007240082400924010240112401224013240142401524016240172401824019240202402124022240232402424025240262402724028240292403024031240322403324034240352403624037240382403924040240412404224043240442404524046240472404824049240502405124052240532405424055240562405724058240592406024061240622406324064240652406624067240682406924070240712407224073240742407524076240772407824079240802408124082240832408424085240862408724088240892409024091240922409324094240952409624097240982409924100241012410224103241042410524106241072410824109241102411124112241132411424115241162411724118241192412024121241222412324124241252412624127241282412924130241312413224133241342413524136241372413824139241402414124142241432414424145241462414724148241492415024151241522415324154241552415624157241582415924160241612416224163241642416524166241672416824169241702417124172241732417424175241762417724178241792418024181241822418324184241852418624187241882418924190241912419224193241942419524196241972419824199242002420124202242032420424205242062420724208242092421024211242122421324214242152421624217242182421924220242212422224223242242422524226242272422824229242302423124232242332423424235242362423724238242392424024241242422424324244242452424624247242482424924250242512425224253242542425524256242572425824259242602426124262242632426424265242662426724268242692427024271242722427324274242752427624277242782427924280242812428224283242842428524286242872428824289242902429124292242932429424295242962429724298242992430024301243022430324304243052430624307243082430924310243112431224313243142431524316243172431824319243202432124322243232432424325243262432724328243292433024331243322433324334243352433624337243382433924340243412434224343243442434524346243472434824349243502435124352243532435424355243562435724358243592436024361243622436324364243652436624367243682436924370243712437224373243742437524376243772437824379243802438124382243832438424385243862438724388243892439024391243922439324394243952439624397243982439924400244012440224403244042440524406244072440824409244102441124412244132441424415244162441724418244192442024421244222442324424244252442624427244282442924430244312443224433244342443524436244372443824439244402444124442244432444424445244462444724448244492445024451244522445324454244552445624457244582445924460244612446224463244642446524466244672446824469244702447124472244732447424475244762447724478244792448024481244822448324484244852448624487244882448924490244912449224493244942449524496244972449824499245002450124502245032450424505245062450724508245092451024511245122451324514245152451624517245182451924520245212452224523245242452524526245272452824529245302453124532245332453424535245362453724538245392454024541245422454324544245452454624547245482454924550245512455224553245542455524556245572455824559245602456124562245632456424565245662456724568245692457024571245722457324574245752457624577245782457924580245812458224583245842458524586245872458824589245902459124592245932459424595245962459724598245992460024601246022460324604246052460624607246082460924610246112461224613246142461524616246172461824619246202462124622246232462424625246262462724628246292463024631246322463324634246352463624637246382463924640246412464224643246442464524646246472464824649246502465124652246532465424655246562465724658246592466024661246622466324664246652466624667246682466924670246712467224673246742467524676246772467824679246802468124682246832468424685246862468724688246892469024691246922469324694246952469624697246982469924700247012470224703247042470524706247072470824709247102471124712247132471424715247162471724718247192472024721247222472324724247252472624727247282472924730247312473224733247342473524736247372473824739247402474124742247432474424745247462474724748247492475024751247522475324754247552475624757247582475924760247612476224763247642476524766247672476824769247702477124772247732477424775247762477724778247792478024781247822478324784247852478624787247882478924790247912479224793247942479524796247972479824799248002480124802248032480424805248062480724808248092481024811248122481324814248152481624817248182481924820248212482224823248242482524826248272482824829248302483124832248332483424835248362483724838248392484024841248422484324844248452484624847248482484924850248512485224853248542485524856248572485824859248602486124862248632486424865248662486724868248692487024871248722487324874248752487624877248782487924880248812488224883248842488524886248872488824889248902489124892248932489424895248962489724898248992490024901249022490324904249052490624907249082490924910249112491224913249142491524916249172491824919249202492124922249232492424925249262492724928249292493024931249322493324934249352493624937249382493924940249412494224943249442494524946249472494824949249502495124952249532495424955249562495724958249592496024961249622496324964249652496624967249682496924970249712497224973249742497524976249772497824979249802498124982249832498424985249862498724988249892499024991249922499324994249952499624997249982499925000250012500225003250042500525006250072500825009250102501125012250132501425015250162501725018250192502025021250222502325024250252502625027250282502925030250312503225033250342503525036250372503825039250402504125042250432504425045250462504725048250492505025051250522505325054250552505625057250582505925060250612506225063250642506525066250672506825069250702507125072250732507425075250762507725078250792508025081250822508325084250852508625087250882508925090250912509225093250942509525096250972509825099251002510125102251032510425105251062510725108251092511025111251122511325114251152511625117251182511925120251212512225123251242512525126251272512825129251302513125132251332513425135251362513725138251392514025141251422514325144251452514625147251482514925150251512515225153251542515525156251572515825159251602516125162251632516425165251662516725168251692517025171251722517325174251752517625177251782517925180251812518225183251842518525186251872518825189251902519125192251932519425195251962519725198251992520025201252022520325204252052520625207252082520925210252112521225213252142521525216252172521825219252202522125222252232522425225252262522725228252292523025231252322523325234252352523625237252382523925240252412524225243252442524525246252472524825249252502525125252252532525425255252562525725258252592526025261252622526325264252652526625267252682526925270252712527225273252742527525276252772527825279252802528125282252832528425285252862528725288252892529025291252922529325294252952529625297252982529925300253012530225303253042530525306253072530825309253102531125312253132531425315253162531725318253192532025321253222532325324253252532625327253282532925330253312533225333253342533525336253372533825339253402534125342253432534425345253462534725348253492535025351253522535325354253552535625357253582535925360253612536225363253642536525366253672536825369253702537125372253732537425375253762537725378253792538025381253822538325384253852538625387253882538925390253912539225393253942539525396253972539825399254002540125402254032540425405254062540725408254092541025411254122541325414254152541625417254182541925420254212542225423254242542525426254272542825429254302543125432254332543425435254362543725438254392544025441254422544325444254452544625447254482544925450254512545225453254542545525456254572545825459254602546125462254632546425465254662546725468254692547025471254722547325474254752547625477254782547925480254812548225483254842548525486254872548825489254902549125492254932549425495254962549725498254992550025501255022550325504255052550625507255082550925510255112551225513255142551525516255172551825519255202552125522255232552425525255262552725528255292553025531255322553325534255352553625537255382553925540255412554225543255442554525546255472554825549255502555125552255532555425555255562555725558255592556025561255622556325564255652556625567255682556925570255712557225573255742557525576255772557825579255802558125582255832558425585255862558725588255892559025591255922559325594255952559625597255982559925600256012560225603256042560525606256072560825609256102561125612256132561425615256162561725618256192562025621256222562325624256252562625627256282562925630256312563225633256342563525636256372563825639256402564125642256432564425645256462564725648256492565025651256522565325654256552565625657256582565925660256612566225663256642566525666256672566825669256702567125672256732567425675256762567725678256792568025681256822568325684256852568625687256882568925690256912569225693256942569525696256972569825699257002570125702257032570425705257062570725708257092571025711257122571325714257152571625717257182571925720257212572225723257242572525726257272572825729257302573125732257332573425735257362573725738257392574025741257422574325744257452574625747257482574925750257512575225753257542575525756257572575825759257602576125762257632576425765257662576725768257692577025771257722577325774257752577625777257782577925780257812578225783257842578525786257872578825789257902579125792257932579425795257962579725798257992580025801258022580325804258052580625807258082580925810258112581225813258142581525816258172581825819258202582125822258232582425825258262582725828258292583025831258322583325834258352583625837258382583925840258412584225843258442584525846258472584825849258502585125852258532585425855258562585725858258592586025861258622586325864258652586625867258682586925870258712587225873258742587525876258772587825879258802588125882258832588425885258862588725888258892589025891258922589325894258952589625897258982589925900259012590225903259042590525906259072590825909259102591125912259132591425915259162591725918259192592025921259222592325924259252592625927259282592925930259312593225933259342593525936259372593825939259402594125942259432594425945259462594725948259492595025951259522595325954259552595625957259582595925960259612596225963259642596525966259672596825969259702597125972259732597425975259762597725978259792598025981259822598325984259852598625987259882598925990259912599225993259942599525996259972599825999260002600126002260032600426005260062600726008260092601026011260122601326014260152601626017260182601926020260212602226023260242602526026260272602826029260302603126032260332603426035260362603726038260392604026041260422604326044260452604626047260482604926050260512605226053260542605526056260572605826059260602606126062260632606426065260662606726068260692607026071260722607326074260752607626077260782607926080260812608226083260842608526086260872608826089260902609126092260932609426095260962609726098260992610026101261022610326104261052610626107261082610926110261112611226113261142611526116261172611826119261202612126122261232612426125261262612726128261292613026131261322613326134261352613626137261382613926140261412614226143261442614526146261472614826149261502615126152261532615426155261562615726158261592616026161261622616326164261652616626167261682616926170261712617226173261742617526176261772617826179261802618126182261832618426185261862618726188261892619026191261922619326194261952619626197261982619926200262012620226203262042620526206262072620826209262102621126212262132621426215262162621726218262192622026221262222622326224262252622626227262282622926230262312623226233262342623526236262372623826239262402624126242262432624426245262462624726248262492625026251262522625326254262552625626257262582625926260262612626226263262642626526266262672626826269262702627126272262732627426275262762627726278262792628026281262822628326284262852628626287262882628926290262912629226293262942629526296262972629826299263002630126302263032630426305263062630726308263092631026311263122631326314263152631626317263182631926320263212632226323263242632526326263272632826329263302633126332263332633426335263362633726338263392634026341263422634326344263452634626347263482634926350263512635226353263542635526356263572635826359263602636126362263632636426365263662636726368263692637026371263722637326374263752637626377263782637926380263812638226383263842638526386263872638826389263902639126392263932639426395263962639726398263992640026401264022640326404264052640626407264082640926410264112641226413264142641526416264172641826419264202642126422264232642426425264262642726428264292643026431264322643326434264352643626437264382643926440264412644226443264442644526446264472644826449264502645126452264532645426455264562645726458264592646026461264622646326464264652646626467264682646926470264712647226473264742647526476264772647826479264802648126482264832648426485264862648726488264892649026491264922649326494264952649626497264982649926500265012650226503265042650526506265072650826509265102651126512265132651426515265162651726518265192652026521265222652326524265252652626527265282652926530265312653226533265342653526536265372653826539265402654126542265432654426545265462654726548265492655026551265522655326554265552655626557265582655926560265612656226563265642656526566265672656826569265702657126572265732657426575265762657726578265792658026581265822658326584265852658626587265882658926590265912659226593265942659526596265972659826599266002660126602266032660426605266062660726608266092661026611266122661326614266152661626617266182661926620266212662226623266242662526626266272662826629266302663126632266332663426635266362663726638266392664026641266422664326644266452664626647266482664926650266512665226653266542665526656266572665826659266602666126662266632666426665266662666726668266692667026671266722667326674266752667626677266782667926680266812668226683266842668526686266872668826689266902669126692266932669426695266962669726698266992670026701267022670326704267052670626707267082670926710267112671226713267142671526716267172671826719267202672126722267232672426725267262672726728267292673026731267322673326734267352673626737267382673926740267412674226743267442674526746267472674826749267502675126752267532675426755267562675726758267592676026761267622676326764267652676626767267682676926770267712677226773267742677526776267772677826779267802678126782267832678426785267862678726788267892679026791267922679326794267952679626797267982679926800268012680226803268042680526806268072680826809268102681126812268132681426815268162681726818268192682026821268222682326824268252682626827268282682926830268312683226833268342683526836268372683826839268402684126842268432684426845268462684726848268492685026851268522685326854268552685626857268582685926860268612686226863268642686526866268672686826869268702687126872268732687426875268762687726878268792688026881268822688326884268852688626887268882688926890268912689226893268942689526896268972689826899269002690126902269032690426905269062690726908269092691026911269122691326914269152691626917269182691926920269212692226923269242692526926269272692826929269302693126932269332693426935269362693726938269392694026941269422694326944269452694626947269482694926950269512695226953269542695526956269572695826959269602696126962269632696426965269662696726968269692697026971269722697326974269752697626977269782697926980269812698226983269842698526986269872698826989269902699126992269932699426995269962699726998269992700027001270022700327004270052700627007270082700927010270112701227013270142701527016270172701827019270202702127022270232702427025270262702727028270292703027031270322703327034270352703627037270382703927040270412704227043270442704527046270472704827049270502705127052270532705427055270562705727058270592706027061270622706327064270652706627067270682706927070270712707227073270742707527076270772707827079270802708127082270832708427085270862708727088270892709027091270922709327094270952709627097270982709927100271012710227103271042710527106271072710827109271102711127112271132711427115271162711727118271192712027121271222712327124271252712627127271282712927130271312713227133271342713527136271372713827139271402714127142271432714427145271462714727148271492715027151271522715327154271552715627157271582715927160271612716227163271642716527166271672716827169271702717127172271732717427175271762717727178271792718027181271822718327184271852718627187271882718927190271912719227193271942719527196271972719827199272002720127202272032720427205272062720727208272092721027211272122721327214272152721627217272182721927220272212722227223272242722527226272272722827229272302723127232272332723427235272362723727238272392724027241272422724327244272452724627247272482724927250272512725227253272542725527256272572725827259272602726127262272632726427265272662726727268272692727027271272722727327274272752727627277272782727927280272812728227283272842728527286272872728827289272902729127292272932729427295272962729727298272992730027301273022730327304273052730627307273082730927310273112731227313273142731527316273172731827319273202732127322273232732427325273262732727328273292733027331273322733327334273352733627337273382733927340273412734227343273442734527346273472734827349273502735127352273532735427355273562735727358273592736027361273622736327364273652736627367273682736927370273712737227373273742737527376273772737827379273802738127382273832738427385273862738727388273892739027391273922739327394273952739627397273982739927400274012740227403274042740527406274072740827409274102741127412274132741427415274162741727418274192742027421274222742327424274252742627427274282742927430274312743227433274342743527436274372743827439274402744127442274432744427445274462744727448274492745027451274522745327454274552745627457274582745927460274612746227463274642746527466274672746827469274702747127472274732747427475274762747727478274792748027481274822748327484274852748627487274882748927490274912749227493274942749527496274972749827499275002750127502275032750427505275062750727508275092751027511275122751327514275152751627517275182751927520275212752227523275242752527526275272752827529275302753127532275332753427535275362753727538275392754027541275422754327544275452754627547275482754927550275512755227553275542755527556275572755827559275602756127562275632756427565275662756727568275692757027571275722757327574275752757627577275782757927580275812758227583275842758527586275872758827589275902759127592275932759427595275962759727598275992760027601276022760327604276052760627607276082760927610276112761227613276142761527616276172761827619276202762127622276232762427625276262762727628276292763027631276322763327634276352763627637276382763927640276412764227643276442764527646276472764827649276502765127652276532765427655276562765727658276592766027661276622766327664276652766627667276682766927670276712767227673276742767527676276772767827679276802768127682276832768427685276862768727688276892769027691276922769327694276952769627697276982769927700277012770227703277042770527706277072770827709277102771127712277132771427715277162771727718277192772027721277222772327724277252772627727277282772927730277312773227733277342773527736277372773827739277402774127742277432774427745277462774727748277492775027751277522775327754277552775627757277582775927760277612776227763277642776527766277672776827769277702777127772277732777427775277762777727778277792778027781277822778327784277852778627787277882778927790277912779227793277942779527796277972779827799278002780127802278032780427805278062780727808278092781027811278122781327814278152781627817278182781927820278212782227823278242782527826278272782827829278302783127832278332783427835278362783727838278392784027841278422784327844278452784627847278482784927850278512785227853278542785527856278572785827859278602786127862278632786427865278662786727868278692787027871278722787327874278752787627877278782787927880278812788227883278842788527886278872788827889278902789127892278932789427895278962789727898278992790027901279022790327904279052790627907279082790927910279112791227913279142791527916279172791827919279202792127922279232792427925279262792727928279292793027931279322793327934279352793627937279382793927940279412794227943279442794527946279472794827949279502795127952279532795427955279562795727958279592796027961279622796327964279652796627967279682796927970279712797227973279742797527976279772797827979279802798127982279832798427985279862798727988279892799027991279922799327994279952799627997279982799928000280012800228003280042800528006280072800828009280102801128012280132801428015280162801728018280192802028021280222802328024280252802628027280282802928030280312803228033280342803528036280372803828039280402804128042280432804428045280462804728048280492805028051280522805328054280552805628057280582805928060280612806228063280642806528066280672806828069280702807128072280732807428075280762807728078280792808028081280822808328084280852808628087280882808928090280912809228093280942809528096280972809828099281002810128102281032810428105281062810728108281092811028111281122811328114281152811628117281182811928120281212812228123281242812528126281272812828129281302813128132281332813428135281362813728138281392814028141281422814328144281452814628147281482814928150281512815228153281542815528156281572815828159281602816128162281632816428165281662816728168281692817028171281722817328174281752817628177281782817928180281812818228183281842818528186281872818828189281902819128192281932819428195281962819728198281992820028201282022820328204282052820628207282082820928210282112821228213282142821528216282172821828219282202822128222282232822428225282262822728228282292823028231282322823328234282352823628237282382823928240282412824228243282442824528246282472824828249282502825128252282532825428255282562825728258282592826028261282622826328264282652826628267282682826928270282712827228273282742827528276282772827828279282802828128282282832828428285282862828728288282892829028291282922829328294282952829628297282982829928300283012830228303283042830528306283072830828309283102831128312283132831428315283162831728318283192832028321283222832328324283252832628327283282832928330283312833228333283342833528336283372833828339283402834128342283432834428345283462834728348283492835028351283522835328354283552835628357283582835928360283612836228363283642836528366283672836828369283702837128372283732837428375283762837728378283792838028381283822838328384283852838628387283882838928390283912839228393283942839528396283972839828399284002840128402284032840428405284062840728408284092841028411284122841328414284152841628417284182841928420284212842228423284242842528426284272842828429284302843128432284332843428435284362843728438284392844028441284422844328444284452844628447284482844928450284512845228453284542845528456284572845828459284602846128462284632846428465284662846728468284692847028471284722847328474284752847628477284782847928480284812848228483284842848528486284872848828489284902849128492284932849428495284962849728498284992850028501285022850328504285052850628507285082850928510285112851228513285142851528516285172851828519285202852128522285232852428525285262852728528285292853028531285322853328534285352853628537285382853928540285412854228543285442854528546285472854828549285502855128552285532855428555285562855728558285592856028561285622856328564285652856628567285682856928570285712857228573285742857528576285772857828579285802858128582285832858428585285862858728588285892859028591285922859328594285952859628597285982859928600286012860228603286042860528606286072860828609286102861128612286132861428615286162861728618286192862028621286222862328624286252862628627286282862928630286312863228633286342863528636286372863828639286402864128642286432864428645286462864728648286492865028651286522865328654286552865628657286582865928660286612866228663286642866528666286672866828669286702867128672286732867428675286762867728678286792868028681286822868328684286852868628687286882868928690286912869228693286942869528696286972869828699287002870128702287032870428705287062870728708287092871028711287122871328714287152871628717287182871928720287212872228723287242872528726287272872828729287302873128732287332873428735287362873728738287392874028741287422874328744287452874628747287482874928750287512875228753287542875528756287572875828759287602876128762287632876428765287662876728768287692877028771287722877328774287752877628777287782877928780287812878228783287842878528786287872878828789287902879128792287932879428795287962879728798287992880028801288022880328804288052880628807288082880928810288112881228813288142881528816288172881828819288202882128822288232882428825288262882728828288292883028831288322883328834288352883628837288382883928840288412884228843288442884528846288472884828849288502885128852288532885428855288562885728858288592886028861288622886328864288652886628867288682886928870288712887228873288742887528876288772887828879288802888128882288832888428885288862888728888288892889028891288922889328894288952889628897288982889928900289012890228903289042890528906289072890828909289102891128912289132891428915289162891728918289192892028921289222892328924289252892628927289282892928930289312893228933289342893528936289372893828939289402894128942289432894428945289462894728948289492895028951289522895328954289552895628957289582895928960289612896228963289642896528966289672896828969289702897128972289732897428975289762897728978289792898028981289822898328984289852898628987289882898928990289912899228993289942899528996289972899828999290002900129002290032900429005290062900729008290092901029011290122901329014290152901629017290182901929020290212902229023290242902529026290272902829029290302903129032290332903429035290362903729038290392904029041290422904329044290452904629047290482904929050290512905229053290542905529056290572905829059290602906129062290632906429065290662906729068290692907029071290722907329074290752907629077290782907929080290812908229083290842908529086290872908829089290902909129092290932909429095290962909729098290992910029101291022910329104291052910629107291082910929110291112911229113291142911529116291172911829119291202912129122291232912429125291262912729128291292913029131291322913329134291352913629137291382913929140291412914229143291442914529146291472914829149291502915129152291532915429155291562915729158291592916029161291622916329164291652916629167291682916929170291712917229173291742917529176291772917829179291802918129182291832918429185291862918729188291892919029191291922919329194291952919629197291982919929200292012920229203292042920529206292072920829209292102921129212292132921429215292162921729218292192922029221292222922329224292252922629227292282922929230292312923229233292342923529236292372923829239292402924129242292432924429245292462924729248292492925029251292522925329254292552925629257292582925929260292612926229263292642926529266292672926829269292702927129272292732927429275292762927729278292792928029281292822928329284292852928629287292882928929290292912929229293292942929529296292972929829299293002930129302293032930429305293062930729308293092931029311293122931329314293152931629317293182931929320293212932229323293242932529326293272932829329293302933129332293332933429335293362933729338293392934029341293422934329344293452934629347293482934929350293512935229353293542935529356293572935829359293602936129362293632936429365293662936729368293692937029371293722937329374293752937629377293782937929380293812938229383293842938529386293872938829389293902939129392293932939429395293962939729398293992940029401294022940329404294052940629407294082940929410294112941229413294142941529416294172941829419294202942129422294232942429425294262942729428294292943029431294322943329434294352943629437294382943929440294412944229443294442944529446294472944829449294502945129452294532945429455294562945729458294592946029461294622946329464294652946629467294682946929470294712947229473294742947529476294772947829479294802948129482294832948429485294862948729488294892949029491294922949329494294952949629497294982949929500295012950229503295042950529506295072950829509295102951129512295132951429515295162951729518295192952029521295222952329524295252952629527295282952929530295312953229533295342953529536295372953829539295402954129542295432954429545295462954729548295492955029551295522955329554295552955629557295582955929560295612956229563295642956529566295672956829569295702957129572295732957429575295762957729578295792958029581295822958329584295852958629587295882958929590295912959229593295942959529596295972959829599296002960129602296032960429605296062960729608296092961029611296122961329614296152961629617296182961929620296212962229623296242962529626296272962829629296302963129632296332963429635296362963729638296392964029641296422964329644296452964629647296482964929650296512965229653296542965529656296572965829659296602966129662296632966429665296662966729668296692967029671296722967329674296752967629677296782967929680296812968229683296842968529686296872968829689296902969129692296932969429695296962969729698296992970029701297022970329704297052970629707297082970929710297112971229713297142971529716297172971829719297202972129722297232972429725297262972729728297292973029731297322973329734297352973629737297382973929740297412974229743297442974529746297472974829749297502975129752297532975429755297562975729758297592976029761297622976329764297652976629767297682976929770297712977229773297742977529776297772977829779297802978129782297832978429785297862978729788297892979029791297922979329794297952979629797297982979929800298012980229803298042980529806298072980829809298102981129812298132981429815298162981729818298192982029821298222982329824298252982629827298282982929830298312983229833298342983529836298372983829839298402984129842298432984429845298462984729848298492985029851298522985329854298552985629857298582985929860298612986229863298642986529866298672986829869298702987129872298732987429875298762987729878298792988029881298822988329884298852988629887298882988929890298912989229893298942989529896298972989829899299002990129902299032990429905299062990729908299092991029911299122991329914299152991629917299182991929920299212992229923299242992529926299272992829929299302993129932299332993429935299362993729938299392994029941299422994329944299452994629947299482994929950299512995229953299542995529956299572995829959299602996129962299632996429965299662996729968299692997029971299722997329974299752997629977299782997929980299812998229983299842998529986299872998829989299902999129992299932999429995299962999729998299993000030001300023000330004300053000630007300083000930010300113001230013300143001530016300173001830019300203002130022300233002430025300263002730028300293003030031300323003330034300353003630037300383003930040300413004230043300443004530046300473004830049300503005130052300533005430055300563005730058300593006030061300623006330064300653006630067300683006930070300713007230073300743007530076300773007830079300803008130082300833008430085300863008730088300893009030091300923009330094300953009630097300983009930100301013010230103301043010530106301073010830109301103011130112301133011430115301163011730118301193012030121301223012330124301253012630127301283012930130301313013230133301343013530136301373013830139301403014130142301433014430145301463014730148301493015030151301523015330154301553015630157301583015930160301613016230163301643016530166301673016830169301703017130172301733017430175301763017730178301793018030181301823018330184301853018630187301883018930190301913019230193301943019530196301973019830199302003020130202302033020430205302063020730208302093021030211302123021330214302153021630217302183021930220302213022230223302243022530226302273022830229302303023130232302333023430235302363023730238302393024030241302423024330244302453024630247302483024930250302513025230253302543025530256302573025830259302603026130262302633026430265302663026730268302693027030271302723027330274302753027630277302783027930280302813028230283302843028530286302873028830289302903029130292302933029430295302963029730298302993030030301303023030330304303053030630307303083030930310303113031230313303143031530316303173031830319303203032130322303233032430325303263032730328303293033030331303323033330334303353033630337303383033930340303413034230343303443034530346303473034830349303503035130352303533035430355303563035730358303593036030361303623036330364303653036630367303683036930370303713037230373303743037530376303773037830379303803038130382303833038430385303863038730388303893039030391303923039330394303953039630397303983039930400304013040230403304043040530406304073040830409304103041130412304133041430415304163041730418304193042030421304223042330424304253042630427304283042930430304313043230433304343043530436304373043830439304403044130442304433044430445304463044730448304493045030451304523045330454304553045630457304583045930460304613046230463304643046530466304673046830469304703047130472304733047430475304763047730478304793048030481304823048330484304853048630487304883048930490304913049230493304943049530496304973049830499305003050130502305033050430505305063050730508305093051030511305123051330514305153051630517305183051930520305213052230523305243052530526305273052830529305303053130532305333053430535305363053730538305393054030541305423054330544305453054630547305483054930550305513055230553305543055530556305573055830559305603056130562305633056430565305663056730568305693057030571305723057330574305753057630577305783057930580305813058230583305843058530586305873058830589305903059130592305933059430595305963059730598305993060030601306023060330604306053060630607306083060930610306113061230613306143061530616306173061830619306203062130622306233062430625306263062730628306293063030631306323063330634306353063630637306383063930640306413064230643306443064530646306473064830649306503065130652306533065430655306563065730658306593066030661306623066330664306653066630667306683066930670306713067230673306743067530676306773067830679306803068130682306833068430685306863068730688306893069030691306923069330694306953069630697306983069930700307013070230703307043070530706307073070830709307103071130712307133071430715307163071730718307193072030721307223072330724307253072630727307283072930730307313073230733307343073530736307373073830739307403074130742307433074430745307463074730748307493075030751307523075330754307553075630757307583075930760307613076230763307643076530766307673076830769307703077130772307733077430775307763077730778307793078030781307823078330784307853078630787307883078930790307913079230793307943079530796307973079830799308003080130802308033080430805308063080730808308093081030811308123081330814308153081630817308183081930820308213082230823308243082530826308273082830829308303083130832308333083430835308363083730838308393084030841308423084330844308453084630847308483084930850308513085230853308543085530856308573085830859308603086130862308633086430865308663086730868308693087030871308723087330874308753087630877308783087930880308813088230883308843088530886308873088830889308903089130892308933089430895308963089730898308993090030901309023090330904309053090630907309083090930910309113091230913309143091530916309173091830919309203092130922309233092430925309263092730928309293093030931309323093330934309353093630937309383093930940309413094230943309443094530946309473094830949309503095130952309533095430955309563095730958309593096030961309623096330964309653096630967309683096930970309713097230973309743097530976309773097830979309803098130982309833098430985309863098730988309893099030991309923099330994309953099630997309983099931000310013100231003310043100531006310073100831009310103101131012310133101431015310163101731018310193102031021310223102331024310253102631027310283102931030310313103231033310343103531036310373103831039310403104131042310433104431045310463104731048310493105031051310523105331054310553105631057310583105931060310613106231063310643106531066310673106831069310703107131072310733107431075310763107731078310793108031081310823108331084310853108631087310883108931090310913109231093310943109531096310973109831099311003110131102311033110431105311063110731108311093111031111311123111331114311153111631117311183111931120311213112231123311243112531126311273112831129311303113131132311333113431135311363113731138311393114031141311423114331144311453114631147311483114931150311513115231153311543115531156311573115831159311603116131162311633116431165311663116731168311693117031171311723117331174311753117631177311783117931180311813118231183311843118531186311873118831189311903119131192311933119431195311963119731198311993120031201312023120331204312053120631207312083120931210312113121231213312143121531216312173121831219312203122131222312233122431225312263122731228312293123031231312323123331234312353123631237312383123931240312413124231243312443124531246312473124831249312503125131252312533125431255312563125731258312593126031261312623126331264312653126631267312683126931270312713127231273312743127531276312773127831279312803128131282312833128431285312863128731288312893129031291312923129331294312953129631297312983129931300313013130231303313043130531306313073130831309313103131131312313133131431315313163131731318313193132031321313223132331324313253132631327313283132931330313313133231333313343133531336313373133831339313403134131342313433134431345313463134731348313493135031351313523135331354313553135631357313583135931360313613136231363313643136531366313673136831369313703137131372313733137431375313763137731378313793138031381313823138331384313853138631387313883138931390313913139231393313943139531396313973139831399314003140131402314033140431405314063140731408314093141031411314123141331414314153141631417314183141931420314213142231423314243142531426314273142831429314303143131432314333143431435314363143731438314393144031441314423144331444314453144631447314483144931450314513145231453314543145531456314573145831459314603146131462314633146431465314663146731468314693147031471314723147331474314753147631477314783147931480314813148231483314843148531486314873148831489314903149131492314933149431495314963149731498314993150031501315023150331504315053150631507315083150931510315113151231513315143151531516315173151831519315203152131522315233152431525315263152731528315293153031531315323153331534315353153631537315383153931540315413154231543315443154531546315473154831549315503155131552315533155431555315563155731558315593156031561315623156331564315653156631567315683156931570315713157231573315743157531576315773157831579315803158131582315833158431585315863158731588315893159031591315923159331594315953159631597315983159931600316013160231603316043160531606316073160831609316103161131612316133161431615316163161731618316193162031621316223162331624316253162631627316283162931630316313163231633316343163531636316373163831639316403164131642316433164431645316463164731648316493165031651316523165331654316553165631657316583165931660316613166231663316643166531666316673166831669316703167131672316733167431675316763167731678316793168031681316823168331684316853168631687316883168931690316913169231693316943169531696316973169831699317003170131702317033170431705317063170731708317093171031711317123171331714317153171631717317183171931720317213172231723317243172531726317273172831729317303173131732317333173431735317363173731738317393174031741317423174331744317453174631747317483174931750317513175231753317543175531756317573175831759317603176131762317633176431765317663176731768317693177031771317723177331774317753177631777317783177931780317813178231783317843178531786317873178831789317903179131792317933179431795317963179731798317993180031801318023180331804318053180631807318083180931810318113181231813318143181531816318173181831819318203182131822318233182431825318263182731828318293183031831318323183331834318353183631837318383183931840318413184231843318443184531846318473184831849318503185131852318533185431855318563185731858318593186031861318623186331864318653186631867318683186931870318713187231873318743187531876318773187831879318803188131882318833188431885318863188731888318893189031891318923189331894318953189631897318983189931900319013190231903319043190531906319073190831909319103191131912319133191431915319163191731918319193192031921319223192331924319253192631927319283192931930319313193231933319343193531936319373193831939319403194131942319433194431945319463194731948319493195031951319523195331954319553195631957319583195931960319613196231963319643196531966319673196831969319703197131972319733197431975319763197731978319793198031981319823198331984319853198631987319883198931990319913199231993319943199531996319973199831999320003200132002320033200432005320063200732008320093201032011320123201332014320153201632017320183201932020320213202232023320243202532026320273202832029320303203132032320333203432035320363203732038320393204032041320423204332044320453204632047320483204932050320513205232053320543205532056320573205832059320603206132062320633206432065320663206732068320693207032071320723207332074320753207632077320783207932080320813208232083320843208532086320873208832089320903209132092320933209432095320963209732098320993210032101321023210332104321053210632107321083210932110321113211232113321143211532116321173211832119321203212132122321233212432125321263212732128321293213032131321323213332134321353213632137321383213932140321413214232143321443214532146321473214832149321503215132152321533215432155321563215732158321593216032161321623216332164321653216632167321683216932170321713217232173321743217532176321773217832179321803218132182321833218432185321863218732188321893219032191321923219332194321953219632197321983219932200322013220232203322043220532206322073220832209322103221132212322133221432215322163221732218322193222032221322223222332224322253222632227322283222932230322313223232233322343223532236322373223832239322403224132242322433224432245322463224732248322493225032251322523225332254322553225632257322583225932260322613226232263322643226532266322673226832269322703227132272322733227432275322763227732278322793228032281322823228332284322853228632287322883228932290322913229232293322943229532296322973229832299323003230132302323033230432305323063230732308323093231032311323123231332314323153231632317323183231932320323213232232323323243232532326323273232832329323303233132332323333233432335323363233732338323393234032341323423234332344323453234632347323483234932350323513235232353323543235532356323573235832359323603236132362323633236432365323663236732368323693237032371323723237332374323753237632377323783237932380323813238232383323843238532386323873238832389323903239132392323933239432395323963239732398323993240032401324023240332404324053240632407324083240932410324113241232413324143241532416324173241832419324203242132422324233242432425324263242732428324293243032431324323243332434324353243632437324383243932440324413244232443324443244532446324473244832449324503245132452324533245432455324563245732458324593246032461324623246332464324653246632467324683246932470324713247232473324743247532476324773247832479324803248132482324833248432485324863248732488324893249032491324923249332494324953249632497324983249932500325013250232503325043250532506325073250832509325103251132512325133251432515325163251732518325193252032521325223252332524325253252632527325283252932530325313253232533325343253532536325373253832539325403254132542325433254432545325463254732548325493255032551325523255332554325553255632557325583255932560325613256232563325643256532566325673256832569325703257132572325733257432575325763257732578325793258032581325823258332584325853258632587325883258932590325913259232593325943259532596325973259832599326003260132602326033260432605326063260732608326093261032611326123261332614326153261632617326183261932620326213262232623326243262532626326273262832629326303263132632326333263432635326363263732638326393264032641326423264332644326453264632647326483264932650326513265232653326543265532656326573265832659326603266132662326633266432665326663266732668326693267032671326723267332674326753267632677326783267932680326813268232683326843268532686326873268832689326903269132692326933269432695326963269732698326993270032701327023270332704327053270632707327083270932710327113271232713327143271532716327173271832719327203272132722327233272432725327263272732728327293273032731327323273332734327353273632737327383273932740327413274232743327443274532746327473274832749327503275132752327533275432755327563275732758327593276032761327623276332764327653276632767327683276932770327713277232773327743277532776327773277832779327803278132782327833278432785327863278732788327893279032791327923279332794327953279632797327983279932800328013280232803328043280532806328073280832809328103281132812328133281432815328163281732818328193282032821328223282332824328253282632827328283282932830328313283232833328343283532836328373283832839328403284132842328433284432845328463284732848328493285032851328523285332854328553285632857328583285932860328613286232863328643286532866328673286832869328703287132872328733287432875328763287732878328793288032881328823288332884328853288632887328883288932890328913289232893328943289532896328973289832899329003290132902329033290432905329063290732908329093291032911329123291332914329153291632917329183291932920329213292232923329243292532926329273292832929329303293132932329333293432935329363293732938329393294032941329423294332944329453294632947329483294932950329513295232953329543295532956329573295832959329603296132962329633296432965329663296732968329693297032971329723297332974329753297632977329783297932980329813298232983329843298532986329873298832989329903299132992329933299432995329963299732998329993300033001330023300333004330053300633007330083300933010330113301233013330143301533016330173301833019330203302133022330233302433025330263302733028330293303033031330323303333034330353303633037330383303933040330413304233043330443304533046330473304833049330503305133052330533305433055330563305733058330593306033061330623306333064330653306633067330683306933070330713307233073330743307533076330773307833079330803308133082330833308433085330863308733088330893309033091330923309333094330953309633097330983309933100331013310233103331043310533106331073310833109331103311133112331133311433115331163311733118331193312033121331223312333124331253312633127331283312933130331313313233133331343313533136331373313833139331403314133142331433314433145331463314733148331493315033151331523315333154331553315633157331583315933160331613316233163331643316533166331673316833169331703317133172331733317433175331763317733178331793318033181331823318333184331853318633187331883318933190331913319233193331943319533196331973319833199332003320133202332033320433205332063320733208332093321033211332123321333214332153321633217332183321933220332213322233223332243322533226332273322833229332303323133232332333323433235332363323733238332393324033241332423324333244332453324633247332483324933250332513325233253332543325533256332573325833259332603326133262332633326433265332663326733268332693327033271332723327333274332753327633277332783327933280332813328233283332843328533286332873328833289332903329133292332933329433295332963329733298332993330033301333023330333304333053330633307333083330933310333113331233313333143331533316333173331833319333203332133322333233332433325333263332733328333293333033331333323333333334333353333633337333383333933340333413334233343333443334533346333473334833349333503335133352333533335433355333563335733358333593336033361333623336333364333653336633367333683336933370333713337233373333743337533376333773337833379333803338133382333833338433385333863338733388333893339033391333923339333394333953339633397333983339933400334013340233403334043340533406334073340833409334103341133412334133341433415334163341733418334193342033421334223342333424334253342633427334283342933430334313343233433334343343533436334373343833439334403344133442334433344433445334463344733448334493345033451334523345333454334553345633457334583345933460334613346233463334643346533466334673346833469334703347133472334733347433475334763347733478334793348033481334823348333484334853348633487334883348933490334913349233493334943349533496334973349833499335003350133502335033350433505335063350733508335093351033511335123351333514335153351633517335183351933520335213352233523335243352533526335273352833529335303353133532335333353433535335363353733538335393354033541335423354333544335453354633547335483354933550335513355233553335543355533556335573355833559335603356133562335633356433565335663356733568335693357033571335723357333574335753357633577335783357933580335813358233583335843358533586335873358833589335903359133592335933359433595335963359733598335993360033601336023360333604336053360633607336083360933610336113361233613336143361533616336173361833619336203362133622336233362433625336263362733628336293363033631336323363333634336353363633637336383363933640336413364233643336443364533646336473364833649336503365133652336533365433655336563365733658336593366033661336623366333664336653366633667336683366933670336713367233673336743367533676336773367833679336803368133682336833368433685336863368733688336893369033691336923369333694336953369633697336983369933700337013370233703337043370533706337073370833709337103371133712337133371433715337163371733718337193372033721337223372333724337253372633727337283372933730337313373233733337343373533736337373373833739337403374133742337433374433745337463374733748337493375033751337523375333754337553375633757337583375933760337613376233763337643376533766337673376833769337703377133772337733377433775337763377733778337793378033781337823378333784337853378633787337883378933790337913379233793337943379533796337973379833799338003380133802338033380433805338063380733808338093381033811338123381333814338153381633817338183381933820338213382233823338243382533826338273382833829338303383133832338333383433835338363383733838338393384033841338423384333844338453384633847338483384933850338513385233853338543385533856338573385833859338603386133862338633386433865338663386733868338693387033871338723387333874338753387633877338783387933880338813388233883338843388533886338873388833889338903389133892338933389433895338963389733898338993390033901339023390333904339053390633907339083390933910339113391233913339143391533916339173391833919339203392133922339233392433925339263392733928339293393033931339323393333934339353393633937339383393933940339413394233943339443394533946339473394833949339503395133952339533395433955339563395733958339593396033961339623396333964339653396633967339683396933970339713397233973339743397533976339773397833979339803398133982339833398433985339863398733988339893399033991339923399333994339953399633997339983399934000340013400234003340043400534006340073400834009340103401134012340133401434015340163401734018340193402034021340223402334024340253402634027340283402934030340313403234033340343403534036340373403834039340403404134042340433404434045340463404734048340493405034051340523405334054340553405634057340583405934060340613406234063340643406534066340673406834069340703407134072340733407434075340763407734078340793408034081340823408334084340853408634087340883408934090340913409234093340943409534096340973409834099341003410134102341033410434105341063410734108341093411034111341123411334114341153411634117341183411934120341213412234123341243412534126341273412834129341303413134132341333413434135341363413734138341393414034141341423414334144341453414634147341483414934150341513415234153341543415534156341573415834159341603416134162341633416434165341663416734168341693417034171341723417334174341753417634177341783417934180341813418234183341843418534186341873418834189341903419134192341933419434195341963419734198341993420034201342023420334204342053420634207342083420934210342113421234213342143421534216342173421834219342203422134222342233422434225342263422734228342293423034231342323423334234342353423634237342383423934240342413424234243342443424534246342473424834249342503425134252342533425434255342563425734258342593426034261342623426334264342653426634267342683426934270342713427234273342743427534276342773427834279342803428134282342833428434285342863428734288342893429034291342923429334294342953429634297342983429934300343013430234303343043430534306343073430834309343103431134312343133431434315343163431734318343193432034321343223432334324343253432634327343283432934330343313433234333343343433534336343373433834339343403434134342343433434434345343463434734348343493435034351343523435334354343553435634357343583435934360343613436234363343643436534366343673436834369343703437134372343733437434375343763437734378343793438034381343823438334384343853438634387343883438934390343913439234393343943439534396343973439834399344003440134402344033440434405344063440734408344093441034411344123441334414344153441634417344183441934420344213442234423344243442534426344273442834429344303443134432344333443434435344363443734438344393444034441344423444334444344453444634447344483444934450344513445234453344543445534456344573445834459344603446134462344633446434465344663446734468344693447034471344723447334474344753447634477344783447934480344813448234483344843448534486344873448834489344903449134492344933449434495344963449734498344993450034501345023450334504345053450634507345083450934510345113451234513345143451534516345173451834519345203452134522345233452434525345263452734528345293453034531345323453334534345353453634537345383453934540345413454234543345443454534546345473454834549345503455134552345533455434555345563455734558345593456034561345623456334564345653456634567345683456934570345713457234573345743457534576345773457834579345803458134582345833458434585345863458734588345893459034591345923459334594345953459634597345983459934600346013460234603346043460534606346073460834609346103461134612346133461434615346163461734618346193462034621346223462334624346253462634627346283462934630346313463234633346343463534636346373463834639346403464134642346433464434645346463464734648346493465034651346523465334654346553465634657346583465934660346613466234663346643466534666346673466834669346703467134672346733467434675346763467734678346793468034681346823468334684346853468634687346883468934690346913469234693346943469534696346973469834699347003470134702347033470434705347063470734708347093471034711347123471334714347153471634717347183471934720347213472234723347243472534726347273472834729347303473134732347333473434735347363473734738347393474034741347423474334744347453474634747347483474934750347513475234753347543475534756347573475834759347603476134762347633476434765347663476734768347693477034771347723477334774347753477634777347783477934780347813478234783347843478534786347873478834789347903479134792347933479434795347963479734798347993480034801348023480334804348053480634807348083480934810348113481234813348143481534816348173481834819348203482134822348233482434825348263482734828348293483034831348323483334834348353483634837348383483934840348413484234843348443484534846348473484834849348503485134852348533485434855348563485734858348593486034861348623486334864348653486634867348683486934870348713487234873348743487534876348773487834879348803488134882348833488434885348863488734888348893489034891348923489334894348953489634897348983489934900349013490234903349043490534906349073490834909349103491134912349133491434915349163491734918349193492034921349223492334924349253492634927349283492934930349313493234933349343493534936349373493834939349403494134942349433494434945349463494734948349493495034951349523495334954349553495634957349583495934960349613496234963349643496534966349673496834969349703497134972349733497434975349763497734978349793498034981349823498334984349853498634987349883498934990349913499234993349943499534996349973499834999350003500135002350033500435005350063500735008350093501035011350123501335014350153501635017350183501935020350213502235023350243502535026350273502835029350303503135032350333503435035350363503735038350393504035041350423504335044350453504635047350483504935050350513505235053350543505535056350573505835059350603506135062350633506435065350663506735068350693507035071350723507335074350753507635077350783507935080350813508235083350843508535086350873508835089350903509135092350933509435095350963509735098350993510035101351023510335104351053510635107351083510935110351113511235113351143511535116351173511835119351203512135122351233512435125351263512735128351293513035131351323513335134351353513635137351383513935140351413514235143351443514535146351473514835149351503515135152351533515435155351563515735158351593516035161351623516335164351653516635167351683516935170351713517235173351743517535176351773517835179351803518135182351833518435185351863518735188351893519035191351923519335194351953519635197351983519935200352013520235203352043520535206352073520835209352103521135212352133521435215352163521735218352193522035221352223522335224352253522635227352283522935230352313523235233352343523535236352373523835239352403524135242352433524435245352463524735248352493525035251352523525335254352553525635257352583525935260352613526235263352643526535266352673526835269352703527135272352733527435275352763527735278352793528035281352823528335284352853528635287352883528935290352913529235293352943529535296352973529835299353003530135302353033530435305353063530735308353093531035311353123531335314353153531635317353183531935320353213532235323353243532535326353273532835329353303533135332353333533435335353363533735338353393534035341353423534335344353453534635347353483534935350353513535235353353543535535356353573535835359353603536135362353633536435365353663536735368353693537035371353723537335374353753537635377353783537935380353813538235383353843538535386353873538835389353903539135392353933539435395353963539735398353993540035401354023540335404354053540635407354083540935410354113541235413354143541535416354173541835419354203542135422354233542435425354263542735428354293543035431354323543335434354353543635437354383543935440354413544235443354443544535446354473544835449354503545135452354533545435455354563545735458354593546035461354623546335464354653546635467354683546935470354713547235473354743547535476354773547835479354803548135482354833548435485354863548735488354893549035491354923549335494354953549635497354983549935500355013550235503355043550535506355073550835509355103551135512355133551435515355163551735518355193552035521355223552335524355253552635527355283552935530355313553235533355343553535536355373553835539355403554135542355433554435545355463554735548355493555035551355523555335554355553555635557355583555935560355613556235563355643556535566355673556835569355703557135572355733557435575355763557735578355793558035581355823558335584355853558635587355883558935590355913559235593355943559535596355973559835599356003560135602356033560435605356063560735608356093561035611356123561335614356153561635617356183561935620356213562235623356243562535626356273562835629356303563135632356333563435635356363563735638356393564035641356423564335644356453564635647356483564935650356513565235653356543565535656356573565835659356603566135662356633566435665356663566735668356693567035671356723567335674356753567635677356783567935680356813568235683356843568535686356873568835689356903569135692356933569435695356963569735698356993570035701357023570335704357053570635707357083570935710357113571235713357143571535716357173571835719357203572135722357233572435725357263572735728357293573035731357323573335734357353573635737357383573935740357413574235743357443574535746357473574835749357503575135752357533575435755357563575735758357593576035761357623576335764357653576635767357683576935770357713577235773357743577535776357773577835779357803578135782357833578435785357863578735788357893579035791357923579335794357953579635797357983579935800358013580235803358043580535806358073580835809358103581135812358133581435815358163581735818358193582035821358223582335824358253582635827358283582935830358313583235833358343583535836358373583835839358403584135842358433584435845358463584735848358493585035851358523585335854358553585635857358583585935860358613586235863358643586535866358673586835869358703587135872358733587435875358763587735878358793588035881358823588335884358853588635887358883588935890358913589235893358943589535896358973589835899359003590135902359033590435905359063590735908359093591035911359123591335914359153591635917359183591935920359213592235923359243592535926359273592835929359303593135932359333593435935359363593735938359393594035941359423594335944359453594635947359483594935950359513595235953359543595535956359573595835959359603596135962359633596435965359663596735968359693597035971359723597335974359753597635977359783597935980359813598235983359843598535986359873598835989359903599135992359933599435995359963599735998359993600036001360023600336004360053600636007360083600936010360113601236013360143601536016360173601836019360203602136022360233602436025360263602736028360293603036031360323603336034360353603636037360383603936040360413604236043360443604536046360473604836049360503605136052360533605436055360563605736058360593606036061360623606336064360653606636067360683606936070360713607236073360743607536076360773607836079360803608136082360833608436085360863608736088360893609036091360923609336094360953609636097360983609936100361013610236103361043610536106361073610836109361103611136112361133611436115361163611736118361193612036121361223612336124361253612636127361283612936130361313613236133361343613536136361373613836139361403614136142361433614436145361463614736148361493615036151361523615336154361553615636157361583615936160361613616236163361643616536166361673616836169361703617136172361733617436175361763617736178361793618036181361823618336184361853618636187361883618936190361913619236193361943619536196361973619836199362003620136202362033620436205362063620736208362093621036211362123621336214362153621636217362183621936220362213622236223362243622536226362273622836229362303623136232362333623436235362363623736238362393624036241362423624336244362453624636247362483624936250362513625236253362543625536256362573625836259362603626136262362633626436265362663626736268362693627036271362723627336274362753627636277362783627936280362813628236283362843628536286362873628836289362903629136292362933629436295362963629736298362993630036301363023630336304363053630636307363083630936310363113631236313363143631536316363173631836319363203632136322363233632436325363263632736328363293633036331363323633336334363353633636337363383633936340363413634236343363443634536346363473634836349363503635136352363533635436355363563635736358363593636036361363623636336364363653636636367363683636936370363713637236373363743637536376363773637836379363803638136382363833638436385363863638736388363893639036391363923639336394363953639636397363983639936400364013640236403364043640536406364073640836409364103641136412364133641436415364163641736418364193642036421364223642336424364253642636427364283642936430364313643236433364343643536436364373643836439364403644136442364433644436445364463644736448364493645036451364523645336454364553645636457364583645936460364613646236463364643646536466364673646836469364703647136472364733647436475364763647736478364793648036481364823648336484364853648636487364883648936490364913649236493364943649536496364973649836499365003650136502365033650436505365063650736508365093651036511365123651336514365153651636517365183651936520365213652236523365243652536526365273652836529365303653136532365333653436535365363653736538365393654036541365423654336544365453654636547365483654936550365513655236553365543655536556365573655836559365603656136562365633656436565365663656736568365693657036571365723657336574365753657636577365783657936580365813658236583365843658536586365873658836589365903659136592365933659436595365963659736598365993660036601366023660336604366053660636607366083660936610366113661236613366143661536616366173661836619366203662136622366233662436625366263662736628366293663036631366323663336634366353663636637366383663936640366413664236643366443664536646366473664836649366503665136652366533665436655366563665736658366593666036661366623666336664366653666636667366683666936670366713667236673366743667536676366773667836679366803668136682366833668436685366863668736688366893669036691366923669336694366953669636697366983669936700367013670236703367043670536706367073670836709367103671136712367133671436715367163671736718367193672036721367223672336724367253672636727367283672936730367313673236733367343673536736367373673836739367403674136742367433674436745367463674736748367493675036751367523675336754367553675636757367583675936760367613676236763367643676536766367673676836769367703677136772367733677436775367763677736778367793678036781367823678336784367853678636787367883678936790367913679236793367943679536796367973679836799368003680136802368033680436805368063680736808368093681036811368123681336814368153681636817368183681936820368213682236823368243682536826368273682836829368303683136832368333683436835368363683736838368393684036841368423684336844368453684636847368483684936850368513685236853368543685536856368573685836859368603686136862368633686436865368663686736868368693687036871368723687336874368753687636877368783687936880368813688236883368843688536886368873688836889368903689136892368933689436895368963689736898368993690036901369023690336904369053690636907369083690936910369113691236913369143691536916369173691836919369203692136922369233692436925369263692736928369293693036931369323693336934369353693636937369383693936940369413694236943369443694536946369473694836949369503695136952369533695436955369563695736958369593696036961369623696336964369653696636967369683696936970369713697236973369743697536976369773697836979369803698136982369833698436985369863698736988369893699036991369923699336994369953699636997369983699937000370013700237003370043700537006370073700837009370103701137012370133701437015370163701737018370193702037021370223702337024370253702637027370283702937030370313703237033370343703537036370373703837039370403704137042370433704437045370463704737048370493705037051370523705337054370553705637057370583705937060370613706237063370643706537066370673706837069370703707137072370733707437075370763707737078370793708037081370823708337084370853708637087370883708937090370913709237093370943709537096370973709837099371003710137102371033710437105371063710737108371093711037111371123711337114371153711637117371183711937120371213712237123371243712537126371273712837129371303713137132371333713437135371363713737138371393714037141371423714337144371453714637147371483714937150371513715237153371543715537156371573715837159371603716137162371633716437165371663716737168371693717037171371723717337174371753717637177371783717937180371813718237183371843718537186371873718837189371903719137192371933719437195371963719737198371993720037201372023720337204372053720637207372083720937210372113721237213372143721537216372173721837219372203722137222372233722437225372263722737228372293723037231372323723337234372353723637237372383723937240372413724237243372443724537246372473724837249372503725137252372533725437255372563725737258372593726037261372623726337264372653726637267372683726937270372713727237273372743727537276372773727837279372803728137282372833728437285372863728737288372893729037291372923729337294372953729637297372983729937300373013730237303373043730537306373073730837309373103731137312373133731437315373163731737318373193732037321373223732337324373253732637327373283732937330373313733237333373343733537336373373733837339373403734137342373433734437345373463734737348373493735037351373523735337354373553735637357373583735937360373613736237363373643736537366373673736837369373703737137372373733737437375373763737737378373793738037381373823738337384373853738637387373883738937390373913739237393373943739537396373973739837399374003740137402374033740437405374063740737408374093741037411374123741337414374153741637417374183741937420374213742237423374243742537426374273742837429374303743137432374333743437435374363743737438374393744037441374423744337444374453744637447374483744937450374513745237453374543745537456374573745837459374603746137462374633746437465374663746737468374693747037471374723747337474374753747637477374783747937480374813748237483374843748537486374873748837489374903749137492374933749437495374963749737498374993750037501375023750337504375053750637507375083750937510375113751237513375143751537516375173751837519375203752137522375233752437525375263752737528375293753037531375323753337534375353753637537375383753937540375413754237543375443754537546375473754837549375503755137552375533755437555375563755737558375593756037561375623756337564375653756637567375683756937570375713757237573375743757537576375773757837579375803758137582375833758437585375863758737588375893759037591375923759337594375953759637597375983759937600376013760237603376043760537606376073760837609376103761137612376133761437615376163761737618376193762037621376223762337624376253762637627376283762937630376313763237633376343763537636376373763837639376403764137642376433764437645376463764737648376493765037651376523765337654376553765637657376583765937660376613766237663376643766537666376673766837669376703767137672376733767437675376763767737678376793768037681376823768337684376853768637687376883768937690376913769237693376943769537696376973769837699377003770137702377033770437705377063770737708377093771037711377123771337714377153771637717377183771937720377213772237723377243772537726377273772837729377303773137732377333773437735377363773737738377393774037741377423774337744377453774637747377483774937750377513775237753377543775537756377573775837759377603776137762377633776437765377663776737768377693777037771377723777337774377753777637777377783777937780377813778237783377843778537786377873778837789377903779137792377933779437795377963779737798377993780037801378023780337804378053780637807378083780937810378113781237813378143781537816378173781837819378203782137822378233782437825378263782737828378293783037831378323783337834378353783637837378383783937840378413784237843378443784537846378473784837849378503785137852378533785437855378563785737858378593786037861378623786337864378653786637867378683786937870378713787237873378743787537876378773787837879378803788137882378833788437885378863788737888378893789037891378923789337894378953789637897378983789937900379013790237903379043790537906379073790837909379103791137912379133791437915379163791737918379193792037921379223792337924379253792637927379283792937930379313793237933379343793537936379373793837939379403794137942379433794437945379463794737948379493795037951379523795337954379553795637957379583795937960379613796237963379643796537966379673796837969379703797137972379733797437975379763797737978379793798037981379823798337984379853798637987379883798937990379913799237993379943799537996379973799837999380003800138002380033800438005380063800738008380093801038011380123801338014380153801638017380183801938020380213802238023380243802538026380273802838029380303803138032380333803438035380363803738038380393804038041380423804338044380453804638047380483804938050380513805238053380543805538056380573805838059380603806138062380633806438065380663806738068380693807038071380723807338074380753807638077380783807938080380813808238083380843808538086380873808838089380903809138092380933809438095380963809738098380993810038101381023810338104381053810638107381083810938110381113811238113381143811538116381173811838119381203812138122381233812438125381263812738128381293813038131381323813338134381353813638137381383813938140381413814238143381443814538146381473814838149381503815138152381533815438155381563815738158381593816038161381623816338164381653816638167381683816938170381713817238173381743817538176381773817838179381803818138182381833818438185381863818738188381893819038191381923819338194381953819638197381983819938200382013820238203382043820538206382073820838209382103821138212382133821438215382163821738218382193822038221382223822338224382253822638227382283822938230382313823238233382343823538236382373823838239382403824138242382433824438245382463824738248382493825038251382523825338254382553825638257382583825938260382613826238263382643826538266382673826838269382703827138272382733827438275382763827738278382793828038281382823828338284382853828638287382883828938290382913829238293382943829538296382973829838299383003830138302383033830438305383063830738308383093831038311383123831338314383153831638317383183831938320383213832238323383243832538326383273832838329383303833138332383333833438335383363833738338383393834038341383423834338344383453834638347383483834938350383513835238353383543835538356383573835838359383603836138362383633836438365383663836738368383693837038371383723837338374383753837638377383783837938380383813838238383383843838538386383873838838389383903839138392383933839438395383963839738398383993840038401384023840338404384053840638407384083840938410384113841238413384143841538416384173841838419384203842138422384233842438425384263842738428384293843038431384323843338434384353843638437384383843938440384413844238443384443844538446384473844838449384503845138452384533845438455384563845738458384593846038461384623846338464384653846638467384683846938470384713847238473384743847538476384773847838479384803848138482384833848438485384863848738488384893849038491384923849338494384953849638497384983849938500385013850238503385043850538506385073850838509385103851138512385133851438515385163851738518385193852038521385223852338524385253852638527385283852938530385313853238533385343853538536385373853838539385403854138542385433854438545385463854738548385493855038551385523855338554385553855638557385583855938560385613856238563385643856538566385673856838569385703857138572385733857438575385763857738578385793858038581385823858338584385853858638587385883858938590385913859238593385943859538596385973859838599386003860138602386033860438605386063860738608386093861038611386123861338614386153861638617386183861938620386213862238623386243862538626386273862838629386303863138632386333863438635386363863738638386393864038641386423864338644386453864638647386483864938650386513865238653386543865538656386573865838659386603866138662386633866438665386663866738668386693867038671386723867338674386753867638677386783867938680386813868238683386843868538686386873868838689386903869138692386933869438695386963869738698386993870038701387023870338704387053870638707387083870938710387113871238713387143871538716387173871838719387203872138722387233872438725387263872738728387293873038731387323873338734387353873638737387383873938740387413874238743387443874538746387473874838749387503875138752387533875438755387563875738758387593876038761387623876338764387653876638767387683876938770387713877238773387743877538776387773877838779387803878138782387833878438785387863878738788387893879038791387923879338794387953879638797387983879938800388013880238803388043880538806388073880838809388103881138812388133881438815388163881738818388193882038821388223882338824388253882638827388283882938830388313883238833388343883538836388373883838839388403884138842388433884438845388463884738848388493885038851388523885338854388553885638857388583885938860388613886238863388643886538866388673886838869388703887138872388733887438875388763887738878388793888038881388823888338884388853888638887388883888938890388913889238893388943889538896388973889838899389003890138902389033890438905389063890738908389093891038911389123891338914389153891638917389183891938920389213892238923389243892538926389273892838929389303893138932389333893438935389363893738938389393894038941389423894338944389453894638947389483894938950389513895238953389543895538956389573895838959389603896138962389633896438965389663896738968389693897038971389723897338974389753897638977389783897938980389813898238983389843898538986389873898838989389903899138992389933899438995389963899738998389993900039001390023900339004390053900639007390083900939010390113901239013390143901539016390173901839019390203902139022390233902439025390263902739028390293903039031390323903339034390353903639037390383903939040390413904239043390443904539046390473904839049390503905139052390533905439055390563905739058390593906039061390623906339064390653906639067390683906939070390713907239073390743907539076390773907839079390803908139082390833908439085390863908739088390893909039091390923909339094390953909639097390983909939100391013910239103391043910539106391073910839109391103911139112391133911439115391163911739118391193912039121391223912339124391253912639127391283912939130391313913239133391343913539136391373913839139391403914139142391433914439145391463914739148391493915039151391523915339154391553915639157391583915939160391613916239163391643916539166391673916839169391703917139172391733917439175391763917739178391793918039181391823918339184391853918639187391883918939190391913919239193391943919539196391973919839199392003920139202392033920439205392063920739208392093921039211392123921339214392153921639217392183921939220392213922239223392243922539226392273922839229392303923139232392333923439235392363923739238392393924039241392423924339244392453924639247392483924939250392513925239253392543925539256392573925839259392603926139262392633926439265392663926739268392693927039271392723927339274392753927639277392783927939280392813928239283392843928539286392873928839289392903929139292392933929439295392963929739298392993930039301393023930339304393053930639307393083930939310393113931239313393143931539316393173931839319393203932139322393233932439325393263932739328393293933039331393323933339334393353933639337393383933939340393413934239343393443934539346393473934839349393503935139352393533935439355393563935739358393593936039361393623936339364393653936639367393683936939370393713937239373393743937539376393773937839379393803938139382393833938439385393863938739388393893939039391393923939339394393953939639397393983939939400394013940239403394043940539406394073940839409394103941139412394133941439415394163941739418394193942039421394223942339424394253942639427394283942939430394313943239433394343943539436394373943839439394403944139442394433944439445394463944739448394493945039451394523945339454394553945639457394583945939460394613946239463394643946539466394673946839469394703947139472394733947439475394763947739478394793948039481394823948339484394853948639487394883948939490394913949239493394943949539496394973949839499395003950139502395033950439505395063950739508395093951039511395123951339514395153951639517395183951939520395213952239523395243952539526395273952839529395303953139532395333953439535395363953739538395393954039541395423954339544395453954639547395483954939550395513955239553395543955539556395573955839559395603956139562395633956439565395663956739568395693957039571395723957339574395753957639577395783957939580395813958239583395843958539586395873958839589395903959139592395933959439595395963959739598395993960039601396023960339604396053960639607396083960939610396113961239613396143961539616396173961839619396203962139622396233962439625396263962739628396293963039631396323963339634396353963639637396383963939640396413964239643396443964539646396473964839649396503965139652396533965439655396563965739658396593966039661396623966339664396653966639667396683966939670396713967239673396743967539676396773967839679396803968139682396833968439685396863968739688396893969039691396923969339694396953969639697396983969939700397013970239703397043970539706397073970839709397103971139712397133971439715397163971739718397193972039721397223972339724397253972639727397283972939730397313973239733397343973539736397373973839739397403974139742397433974439745397463974739748397493975039751397523975339754397553975639757397583975939760397613976239763397643976539766397673976839769397703977139772397733977439775397763977739778397793978039781397823978339784397853978639787397883978939790397913979239793397943979539796397973979839799398003980139802398033980439805398063980739808398093981039811398123981339814398153981639817398183981939820398213982239823398243982539826398273982839829398303983139832398333983439835398363983739838398393984039841398423984339844398453984639847398483984939850398513985239853398543985539856398573985839859398603986139862398633986439865398663986739868398693987039871398723987339874398753987639877398783987939880398813988239883398843988539886398873988839889398903989139892398933989439895398963989739898398993990039901399023990339904399053990639907399083990939910399113991239913399143991539916399173991839919399203992139922399233992439925399263992739928399293993039931399323993339934399353993639937399383993939940399413994239943399443994539946399473994839949399503995139952399533995439955399563995739958399593996039961399623996339964399653996639967399683996939970399713997239973399743997539976399773997839979399803998139982399833998439985399863998739988399893999039991399923999339994399953999639997399983999940000400014000240003400044000540006400074000840009400104001140012400134001440015400164001740018400194002040021400224002340024400254002640027400284002940030400314003240033400344003540036400374003840039400404004140042400434004440045400464004740048400494005040051400524005340054400554005640057400584005940060400614006240063400644006540066400674006840069400704007140072400734007440075400764007740078400794008040081400824008340084400854008640087400884008940090400914009240093400944009540096400974009840099401004010140102401034010440105401064010740108401094011040111401124011340114401154011640117401184011940120401214012240123401244012540126401274012840129401304013140132401334013440135401364013740138401394014040141401424014340144401454014640147401484014940150401514015240153401544015540156401574015840159401604016140162401634016440165401664016740168401694017040171401724017340174401754017640177401784017940180401814018240183401844018540186401874018840189401904019140192401934019440195401964019740198401994020040201402024020340204402054020640207402084020940210402114021240213402144021540216402174021840219402204022140222402234022440225402264022740228402294023040231402324023340234402354023640237402384023940240402414024240243402444024540246402474024840249402504025140252402534025440255402564025740258402594026040261402624026340264402654026640267402684026940270402714027240273402744027540276402774027840279402804028140282402834028440285402864028740288402894029040291402924029340294402954029640297402984029940300403014030240303403044030540306403074030840309403104031140312403134031440315403164031740318403194032040321403224032340324403254032640327403284032940330403314033240333403344033540336403374033840339403404034140342403434034440345403464034740348403494035040351403524035340354403554035640357403584035940360403614036240363403644036540366403674036840369403704037140372403734037440375403764037740378403794038040381403824038340384403854038640387403884038940390403914039240393403944039540396403974039840399404004040140402404034040440405404064040740408404094041040411404124041340414404154041640417404184041940420404214042240423404244042540426404274042840429404304043140432404334043440435404364043740438404394044040441404424044340444404454044640447404484044940450404514045240453404544045540456404574045840459404604046140462404634046440465404664046740468404694047040471404724047340474404754047640477404784047940480404814048240483404844048540486404874048840489404904049140492404934049440495404964049740498404994050040501405024050340504405054050640507405084050940510405114051240513405144051540516405174051840519405204052140522405234052440525405264052740528405294053040531405324053340534405354053640537405384053940540405414054240543405444054540546405474054840549405504055140552405534055440555405564055740558405594056040561405624056340564405654056640567405684056940570405714057240573405744057540576405774057840579405804058140582405834058440585405864058740588405894059040591405924059340594405954059640597405984059940600406014060240603406044060540606406074060840609406104061140612406134061440615406164061740618406194062040621406224062340624406254062640627406284062940630406314063240633406344063540636406374063840639406404064140642406434064440645406464064740648406494065040651406524065340654406554065640657406584065940660406614066240663406644066540666406674066840669406704067140672406734067440675406764067740678406794068040681406824068340684406854068640687406884068940690406914069240693406944069540696406974069840699407004070140702407034070440705407064070740708407094071040711407124071340714407154071640717407184071940720407214072240723407244072540726407274072840729407304073140732407334073440735407364073740738407394074040741407424074340744407454074640747407484074940750407514075240753407544075540756407574075840759407604076140762407634076440765407664076740768407694077040771407724077340774407754077640777407784077940780407814078240783407844078540786407874078840789407904079140792407934079440795407964079740798407994080040801408024080340804408054080640807408084080940810408114081240813408144081540816408174081840819408204082140822408234082440825408264082740828408294083040831408324083340834408354083640837408384083940840408414084240843408444084540846408474084840849408504085140852408534085440855408564085740858408594086040861408624086340864408654086640867408684086940870408714087240873408744087540876408774087840879408804088140882408834088440885408864088740888408894089040891408924089340894408954089640897408984089940900409014090240903409044090540906409074090840909409104091140912409134091440915409164091740918409194092040921409224092340924409254092640927409284092940930409314093240933409344093540936409374093840939409404094140942409434094440945409464094740948409494095040951409524095340954409554095640957409584095940960409614096240963409644096540966409674096840969409704097140972409734097440975409764097740978409794098040981409824098340984409854098640987409884098940990409914099240993409944099540996409974099840999410004100141002410034100441005410064100741008410094101041011410124101341014410154101641017410184101941020410214102241023410244102541026410274102841029410304103141032410334103441035410364103741038410394104041041410424104341044410454104641047410484104941050410514105241053410544105541056410574105841059410604106141062410634106441065410664106741068410694107041071410724107341074410754107641077410784107941080410814108241083410844108541086410874108841089410904109141092410934109441095410964109741098410994110041101411024110341104411054110641107411084110941110411114111241113411144111541116411174111841119411204112141122411234112441125411264112741128411294113041131411324113341134411354113641137411384113941140411414114241143411444114541146411474114841149411504115141152411534115441155411564115741158411594116041161411624116341164411654116641167411684116941170411714117241173411744117541176411774117841179411804118141182411834118441185411864118741188411894119041191411924119341194411954119641197411984119941200412014120241203412044120541206412074120841209412104121141212412134121441215412164121741218412194122041221412224122341224412254122641227412284122941230412314123241233412344123541236412374123841239412404124141242412434124441245412464124741248412494125041251412524125341254412554125641257412584125941260412614126241263412644126541266412674126841269412704127141272412734127441275412764127741278412794128041281412824128341284412854128641287412884128941290412914129241293412944129541296412974129841299413004130141302413034130441305413064130741308413094131041311413124131341314413154131641317413184131941320413214132241323413244132541326413274132841329413304133141332413334133441335413364133741338413394134041341413424134341344413454134641347413484134941350413514135241353413544135541356413574135841359413604136141362413634136441365413664136741368413694137041371413724137341374413754137641377413784137941380413814138241383413844138541386413874138841389413904139141392413934139441395413964139741398413994140041401414024140341404414054140641407414084140941410414114141241413414144141541416414174141841419414204142141422414234142441425414264142741428414294143041431414324143341434414354143641437414384143941440414414144241443414444144541446414474144841449414504145141452414534145441455414564145741458414594146041461414624146341464414654146641467414684146941470414714147241473414744147541476414774147841479414804148141482414834148441485414864148741488414894149041491414924149341494414954149641497414984149941500415014150241503415044150541506415074150841509415104151141512415134151441515415164151741518415194152041521415224152341524415254152641527415284152941530415314153241533415344153541536415374153841539415404154141542415434154441545415464154741548415494155041551415524155341554415554155641557415584155941560415614156241563415644156541566415674156841569415704157141572415734157441575415764157741578415794158041581415824158341584415854158641587415884158941590415914159241593415944159541596415974159841599416004160141602416034160441605416064160741608416094161041611416124161341614416154161641617416184161941620416214162241623416244162541626416274162841629416304163141632416334163441635416364163741638416394164041641416424164341644416454164641647416484164941650416514165241653416544165541656416574165841659416604166141662416634166441665416664166741668416694167041671416724167341674416754167641677416784167941680416814168241683416844168541686416874168841689416904169141692416934169441695416964169741698416994170041701417024170341704417054170641707417084170941710417114171241713417144171541716417174171841719417204172141722417234172441725417264172741728417294173041731417324173341734417354173641737417384173941740417414174241743417444174541746417474174841749417504175141752417534175441755417564175741758417594176041761417624176341764417654176641767417684176941770417714177241773417744177541776417774177841779417804178141782417834178441785417864178741788417894179041791417924179341794417954179641797417984179941800418014180241803418044180541806418074180841809418104181141812418134181441815418164181741818418194182041821418224182341824418254182641827418284182941830418314183241833418344183541836418374183841839418404184141842418434184441845418464184741848418494185041851418524185341854418554185641857418584185941860418614186241863418644186541866418674186841869418704187141872418734187441875418764187741878418794188041881418824188341884418854188641887418884188941890418914189241893418944189541896418974189841899419004190141902419034190441905419064190741908419094191041911419124191341914419154191641917419184191941920419214192241923419244192541926419274192841929419304193141932419334193441935419364193741938419394194041941419424194341944419454194641947419484194941950419514195241953419544195541956419574195841959419604196141962419634196441965419664196741968419694197041971419724197341974419754197641977419784197941980419814198241983419844198541986419874198841989419904199141992419934199441995419964199741998419994200042001420024200342004420054200642007420084200942010420114201242013420144201542016420174201842019420204202142022420234202442025420264202742028420294203042031420324203342034420354203642037420384203942040420414204242043420444204542046420474204842049420504205142052420534205442055420564205742058420594206042061420624206342064420654206642067420684206942070420714207242073420744207542076420774207842079420804208142082420834208442085420864208742088420894209042091420924209342094420954209642097420984209942100421014210242103421044210542106421074210842109421104211142112421134211442115421164211742118421194212042121421224212342124421254212642127421284212942130421314213242133421344213542136421374213842139421404214142142421434214442145421464214742148421494215042151421524215342154421554215642157421584215942160421614216242163421644216542166421674216842169421704217142172421734217442175421764217742178421794218042181421824218342184421854218642187421884218942190421914219242193421944219542196421974219842199422004220142202422034220442205422064220742208422094221042211422124221342214422154221642217422184221942220422214222242223422244222542226422274222842229422304223142232422334223442235422364223742238422394224042241422424224342244422454224642247422484224942250422514225242253422544225542256422574225842259422604226142262422634226442265422664226742268422694227042271422724227342274422754227642277422784227942280422814228242283422844228542286422874228842289422904229142292422934229442295422964229742298422994230042301423024230342304423054230642307423084230942310423114231242313423144231542316423174231842319423204232142322423234232442325423264232742328423294233042331423324233342334423354233642337423384233942340423414234242343423444234542346423474234842349423504235142352423534235442355423564235742358423594236042361423624236342364423654236642367423684236942370423714237242373423744237542376423774237842379423804238142382423834238442385423864238742388423894239042391423924239342394423954239642397423984239942400424014240242403424044240542406424074240842409424104241142412424134241442415424164241742418424194242042421424224242342424424254242642427424284242942430424314243242433424344243542436424374243842439424404244142442424434244442445424464244742448424494245042451424524245342454424554245642457424584245942460424614246242463424644246542466424674246842469424704247142472424734247442475424764247742478424794248042481424824248342484424854248642487424884248942490424914249242493424944249542496424974249842499425004250142502425034250442505425064250742508425094251042511425124251342514425154251642517425184251942520425214252242523425244252542526425274252842529425304253142532425334253442535425364253742538425394254042541425424254342544425454254642547425484254942550425514255242553425544255542556425574255842559425604256142562425634256442565425664256742568425694257042571425724257342574425754257642577425784257942580425814258242583425844258542586425874258842589425904259142592425934259442595425964259742598425994260042601426024260342604426054260642607426084260942610426114261242613426144261542616426174261842619426204262142622426234262442625426264262742628426294263042631426324263342634426354263642637426384263942640426414264242643426444264542646426474264842649426504265142652426534265442655426564265742658426594266042661426624266342664426654266642667426684266942670426714267242673426744267542676426774267842679426804268142682426834268442685426864268742688426894269042691426924269342694426954269642697426984269942700427014270242703427044270542706427074270842709427104271142712427134271442715427164271742718427194272042721427224272342724427254272642727427284272942730427314273242733427344273542736427374273842739427404274142742427434274442745427464274742748427494275042751427524275342754427554275642757427584275942760427614276242763427644276542766427674276842769427704277142772427734277442775427764277742778427794278042781427824278342784427854278642787427884278942790427914279242793427944279542796427974279842799428004280142802428034280442805428064280742808428094281042811428124281342814428154281642817428184281942820428214282242823428244282542826428274282842829428304283142832428334283442835428364283742838428394284042841428424284342844428454284642847428484284942850428514285242853428544285542856428574285842859428604286142862428634286442865428664286742868428694287042871428724287342874428754287642877428784287942880428814288242883428844288542886428874288842889428904289142892428934289442895428964289742898428994290042901429024290342904429054290642907429084290942910429114291242913429144291542916429174291842919429204292142922429234292442925429264292742928429294293042931429324293342934429354293642937429384293942940429414294242943429444294542946429474294842949429504295142952429534295442955429564295742958429594296042961429624296342964429654296642967429684296942970429714297242973429744297542976429774297842979429804298142982429834298442985429864298742988429894299042991429924299342994429954299642997429984299943000430014300243003430044300543006430074300843009430104301143012430134301443015430164301743018430194302043021430224302343024430254302643027430284302943030430314303243033430344303543036430374303843039430404304143042430434304443045430464304743048430494305043051430524305343054430554305643057430584305943060430614306243063430644306543066430674306843069430704307143072430734307443075430764307743078430794308043081430824308343084430854308643087430884308943090430914309243093430944309543096430974309843099431004310143102431034310443105431064310743108431094311043111431124311343114431154311643117431184311943120431214312243123431244312543126431274312843129431304313143132431334313443135431364313743138431394314043141431424314343144431454314643147431484314943150431514315243153431544315543156431574315843159431604316143162431634316443165431664316743168431694317043171431724317343174431754317643177431784317943180431814318243183431844318543186431874318843189431904319143192431934319443195431964319743198431994320043201432024320343204432054320643207432084320943210432114321243213432144321543216432174321843219432204322143222432234322443225432264322743228432294323043231432324323343234432354323643237432384323943240432414324243243432444324543246432474324843249432504325143252432534325443255432564325743258432594326043261432624326343264432654326643267432684326943270432714327243273432744327543276432774327843279432804328143282432834328443285432864328743288432894329043291432924329343294432954329643297432984329943300433014330243303433044330543306433074330843309433104331143312433134331443315433164331743318433194332043321433224332343324433254332643327433284332943330433314333243333433344333543336433374333843339433404334143342433434334443345433464334743348433494335043351433524335343354433554335643357433584335943360433614336243363433644336543366433674336843369433704337143372433734337443375433764337743378433794338043381433824338343384433854338643387433884338943390433914339243393433944339543396433974339843399434004340143402434034340443405434064340743408434094341043411434124341343414434154341643417434184341943420434214342243423434244342543426434274342843429434304343143432434334343443435434364343743438434394344043441434424344343444434454344643447434484344943450434514345243453434544345543456434574345843459434604346143462434634346443465434664346743468434694347043471434724347343474434754347643477434784347943480434814348243483434844348543486434874348843489434904349143492434934349443495434964349743498434994350043501435024350343504435054350643507435084350943510435114351243513435144351543516435174351843519435204352143522435234352443525435264352743528435294353043531435324353343534435354353643537435384353943540435414354243543435444354543546435474354843549435504355143552435534355443555435564355743558435594356043561435624356343564435654356643567435684356943570435714357243573435744357543576435774357843579435804358143582435834358443585435864358743588435894359043591435924359343594435954359643597435984359943600436014360243603436044360543606436074360843609436104361143612436134361443615436164361743618436194362043621436224362343624436254362643627436284362943630436314363243633436344363543636436374363843639436404364143642436434364443645436464364743648436494365043651436524365343654436554365643657436584365943660436614366243663436644366543666436674366843669436704367143672436734367443675436764367743678436794368043681436824368343684436854368643687436884368943690436914369243693436944369543696436974369843699437004370143702437034370443705437064370743708437094371043711437124371343714437154371643717437184371943720437214372243723437244372543726437274372843729437304373143732437334373443735437364373743738437394374043741437424374343744437454374643747437484374943750437514375243753437544375543756437574375843759437604376143762437634376443765437664376743768437694377043771437724377343774437754377643777437784377943780437814378243783437844378543786437874378843789437904379143792437934379443795437964379743798437994380043801438024380343804438054380643807438084380943810438114381243813438144381543816438174381843819438204382143822438234382443825438264382743828438294383043831438324383343834438354383643837438384383943840438414384243843438444384543846438474384843849438504385143852438534385443855438564385743858438594386043861438624386343864438654386643867438684386943870438714387243873438744387543876438774387843879438804388143882438834388443885438864388743888438894389043891438924389343894438954389643897438984389943900439014390243903439044390543906439074390843909439104391143912439134391443915439164391743918439194392043921439224392343924439254392643927439284392943930439314393243933439344393543936439374393843939439404394143942439434394443945439464394743948439494395043951439524395343954439554395643957439584395943960439614396243963439644396543966439674396843969439704397143972439734397443975439764397743978439794398043981439824398343984439854398643987439884398943990439914399243993439944399543996439974399843999440004400144002440034400444005440064400744008440094401044011440124401344014440154401644017440184401944020440214402244023440244402544026440274402844029440304403144032440334403444035440364403744038440394404044041440424404344044440454404644047440484404944050440514405244053440544405544056440574405844059440604406144062440634406444065440664406744068440694407044071440724407344074440754407644077440784407944080440814408244083440844408544086440874408844089440904409144092440934409444095440964409744098440994410044101441024410344104441054410644107441084410944110441114411244113441144411544116441174411844119441204412144122441234412444125441264412744128441294413044131441324413344134441354413644137441384413944140441414414244143441444414544146441474414844149441504415144152441534415444155441564415744158441594416044161441624416344164441654416644167441684416944170441714417244173441744417544176441774417844179441804418144182441834418444185441864418744188441894419044191441924419344194441954419644197441984419944200442014420244203442044420544206442074420844209442104421144212442134421444215442164421744218442194422044221442224422344224442254422644227442284422944230442314423244233442344423544236442374423844239442404424144242442434424444245442464424744248442494425044251442524425344254442554425644257442584425944260442614426244263442644426544266442674426844269442704427144272442734427444275442764427744278442794428044281442824428344284442854428644287442884428944290442914429244293442944429544296442974429844299443004430144302443034430444305443064430744308443094431044311443124431344314443154431644317443184431944320443214432244323443244432544326443274432844329443304433144332443334433444335443364433744338443394434044341443424434344344443454434644347443484434944350443514435244353443544435544356443574435844359443604436144362443634436444365443664436744368443694437044371443724437344374443754437644377443784437944380443814438244383443844438544386443874438844389443904439144392443934439444395443964439744398443994440044401444024440344404444054440644407444084440944410444114441244413444144441544416444174441844419444204442144422444234442444425444264442744428444294443044431444324443344434444354443644437444384443944440444414444244443444444444544446444474444844449444504445144452444534445444455444564445744458444594446044461444624446344464444654446644467444684446944470444714447244473444744447544476444774447844479444804448144482444834448444485444864448744488444894449044491444924449344494444954449644497444984449944500445014450244503445044450544506445074450844509445104451144512445134451444515445164451744518445194452044521445224452344524445254452644527445284452944530445314453244533445344453544536445374453844539445404454144542445434454444545445464454744548445494455044551445524455344554445554455644557445584455944560445614456244563445644456544566445674456844569445704457144572445734457444575445764457744578445794458044581445824458344584445854458644587445884458944590445914459244593445944459544596445974459844599446004460144602446034460444605446064460744608446094461044611446124461344614446154461644617446184461944620446214462244623446244462544626446274462844629446304463144632446334463444635446364463744638446394464044641446424464344644446454464644647446484464944650446514465244653446544465544656446574465844659446604466144662446634466444665446664466744668446694467044671446724467344674446754467644677446784467944680446814468244683446844468544686446874468844689446904469144692446934469444695446964469744698446994470044701447024470344704447054470644707447084470944710447114471244713447144471544716447174471844719447204472144722447234472444725447264472744728447294473044731447324473344734447354473644737447384473944740447414474244743447444474544746447474474844749447504475144752447534475444755447564475744758447594476044761447624476344764447654476644767447684476944770447714477244773447744477544776447774477844779447804478144782447834478444785447864478744788447894479044791447924479344794447954479644797447984479944800448014480244803448044480544806448074480844809448104481144812448134481444815448164481744818448194482044821448224482344824448254482644827448284482944830448314483244833448344483544836448374483844839448404484144842448434484444845448464484744848448494485044851448524485344854448554485644857448584485944860448614486244863448644486544866448674486844869448704487144872448734487444875448764487744878448794488044881448824488344884448854488644887448884488944890448914489244893448944489544896448974489844899449004490144902449034490444905449064490744908449094491044911449124491344914449154491644917449184491944920449214492244923449244492544926449274492844929449304493144932449334493444935449364493744938449394494044941449424494344944449454494644947449484494944950449514495244953449544495544956449574495844959449604496144962449634496444965449664496744968449694497044971449724497344974449754497644977449784497944980449814498244983449844498544986449874498844989449904499144992449934499444995449964499744998449994500045001450024500345004450054500645007450084500945010450114501245013450144501545016450174501845019450204502145022450234502445025450264502745028450294503045031450324503345034450354503645037450384503945040450414504245043450444504545046450474504845049450504505145052450534505445055450564505745058450594506045061450624506345064450654506645067450684506945070450714507245073450744507545076450774507845079450804508145082450834508445085450864508745088450894509045091450924509345094450954509645097450984509945100451014510245103451044510545106451074510845109451104511145112451134511445115451164511745118451194512045121451224512345124451254512645127451284512945130451314513245133451344513545136451374513845139451404514145142451434514445145451464514745148451494515045151451524515345154451554515645157451584515945160451614516245163451644516545166451674516845169451704517145172451734517445175451764517745178451794518045181451824518345184451854518645187451884518945190451914519245193451944519545196451974519845199452004520145202452034520445205452064520745208452094521045211452124521345214452154521645217452184521945220452214522245223452244522545226452274522845229452304523145232452334523445235452364523745238452394524045241452424524345244452454524645247452484524945250452514525245253452544525545256452574525845259452604526145262452634526445265452664526745268452694527045271452724527345274452754527645277452784527945280452814528245283452844528545286452874528845289452904529145292452934529445295452964529745298452994530045301453024530345304453054530645307453084530945310453114531245313453144531545316453174531845319453204532145322453234532445325453264532745328453294533045331453324533345334453354533645337453384533945340453414534245343453444534545346453474534845349453504535145352453534535445355453564535745358453594536045361453624536345364453654536645367453684536945370453714537245373453744537545376453774537845379453804538145382453834538445385453864538745388453894539045391453924539345394453954539645397453984539945400454014540245403454044540545406454074540845409454104541145412454134541445415454164541745418454194542045421454224542345424454254542645427454284542945430454314543245433454344543545436454374543845439454404544145442454434544445445454464544745448454494545045451454524545345454454554545645457454584545945460454614546245463454644546545466454674546845469454704547145472454734547445475454764547745478454794548045481454824548345484454854548645487454884548945490454914549245493454944549545496454974549845499455004550145502455034550445505455064550745508455094551045511455124551345514455154551645517455184551945520455214552245523455244552545526455274552845529455304553145532455334553445535455364553745538455394554045541455424554345544455454554645547455484554945550455514555245553455544555545556455574555845559455604556145562455634556445565455664556745568455694557045571455724557345574455754557645577455784557945580455814558245583455844558545586455874558845589455904559145592455934559445595455964559745598455994560045601456024560345604456054560645607456084560945610456114561245613456144561545616456174561845619456204562145622456234562445625456264562745628456294563045631456324563345634456354563645637456384563945640456414564245643456444564545646456474564845649456504565145652456534565445655456564565745658456594566045661456624566345664456654566645667456684566945670456714567245673456744567545676456774567845679456804568145682456834568445685456864568745688456894569045691456924569345694456954569645697456984569945700457014570245703457044570545706457074570845709457104571145712457134571445715457164571745718457194572045721457224572345724457254572645727457284572945730457314573245733457344573545736457374573845739457404574145742457434574445745457464574745748457494575045751457524575345754457554575645757457584575945760457614576245763457644576545766457674576845769457704577145772457734577445775457764577745778457794578045781457824578345784457854578645787457884578945790457914579245793457944579545796457974579845799458004580145802458034580445805458064580745808458094581045811458124581345814458154581645817458184581945820458214582245823458244582545826458274582845829458304583145832458334583445835458364583745838458394584045841458424584345844458454584645847458484584945850458514585245853458544585545856458574585845859458604586145862458634586445865458664586745868458694587045871458724587345874458754587645877458784587945880458814588245883458844588545886458874588845889458904589145892458934589445895458964589745898458994590045901459024590345904459054590645907459084590945910459114591245913459144591545916459174591845919459204592145922459234592445925459264592745928459294593045931459324593345934459354593645937459384593945940459414594245943459444594545946459474594845949459504595145952459534595445955459564595745958459594596045961459624596345964459654596645967459684596945970459714597245973459744597545976459774597845979459804598145982459834598445985459864598745988459894599045991459924599345994459954599645997459984599946000460014600246003460044600546006460074600846009460104601146012460134601446015460164601746018460194602046021460224602346024460254602646027460284602946030460314603246033460344603546036460374603846039460404604146042460434604446045460464604746048460494605046051460524605346054460554605646057460584605946060460614606246063460644606546066460674606846069460704607146072460734607446075460764607746078460794608046081460824608346084460854608646087460884608946090460914609246093460944609546096460974609846099461004610146102461034610446105461064610746108461094611046111461124611346114461154611646117461184611946120461214612246123461244612546126461274612846129461304613146132461334613446135461364613746138461394614046141461424614346144461454614646147461484614946150461514615246153461544615546156461574615846159461604616146162461634616446165461664616746168461694617046171461724617346174461754617646177461784617946180461814618246183461844618546186461874618846189461904619146192461934619446195461964619746198461994620046201462024620346204462054620646207462084620946210462114621246213462144621546216462174621846219462204622146222462234622446225462264622746228462294623046231462324623346234462354623646237462384623946240462414624246243462444624546246462474624846249462504625146252462534625446255462564625746258462594626046261462624626346264462654626646267462684626946270462714627246273462744627546276462774627846279462804628146282462834628446285462864628746288462894629046291462924629346294462954629646297462984629946300463014630246303463044630546306463074630846309463104631146312463134631446315463164631746318463194632046321463224632346324463254632646327463284632946330463314633246333463344633546336463374633846339463404634146342463434634446345463464634746348463494635046351463524635346354463554635646357463584635946360463614636246363463644636546366463674636846369463704637146372463734637446375463764637746378463794638046381463824638346384463854638646387463884638946390463914639246393463944639546396463974639846399464004640146402464034640446405464064640746408464094641046411464124641346414464154641646417464184641946420464214642246423464244642546426464274642846429464304643146432464334643446435464364643746438464394644046441464424644346444464454644646447464484644946450464514645246453464544645546456464574645846459464604646146462464634646446465464664646746468464694647046471464724647346474464754647646477464784647946480464814648246483464844648546486464874648846489464904649146492464934649446495464964649746498464994650046501465024650346504465054650646507465084650946510465114651246513465144651546516465174651846519465204652146522465234652446525465264652746528465294653046531465324653346534465354653646537465384653946540465414654246543465444654546546465474654846549465504655146552465534655446555465564655746558465594656046561465624656346564465654656646567465684656946570465714657246573465744657546576465774657846579465804658146582465834658446585465864658746588465894659046591465924659346594465954659646597465984659946600466014660246603466044660546606466074660846609466104661146612466134661446615466164661746618466194662046621466224662346624466254662646627466284662946630466314663246633466344663546636466374663846639466404664146642466434664446645466464664746648466494665046651466524665346654466554665646657466584665946660466614666246663466644666546666466674666846669466704667146672466734667446675466764667746678466794668046681466824668346684466854668646687466884668946690466914669246693466944669546696466974669846699467004670146702467034670446705467064670746708467094671046711467124671346714467154671646717467184671946720467214672246723467244672546726467274672846729467304673146732467334673446735467364673746738467394674046741467424674346744467454674646747467484674946750467514675246753467544675546756467574675846759467604676146762467634676446765467664676746768467694677046771467724677346774467754677646777467784677946780467814678246783467844678546786467874678846789467904679146792467934679446795467964679746798467994680046801468024680346804468054680646807468084680946810468114681246813468144681546816468174681846819468204682146822468234682446825468264682746828468294683046831468324683346834468354683646837468384683946840468414684246843468444684546846468474684846849468504685146852468534685446855468564685746858468594686046861468624686346864468654686646867468684686946870468714687246873468744687546876468774687846879468804688146882468834688446885468864688746888468894689046891468924689346894468954689646897468984689946900469014690246903469044690546906469074690846909469104691146912469134691446915469164691746918469194692046921469224692346924469254692646927469284692946930469314693246933469344693546936469374693846939469404694146942469434694446945469464694746948469494695046951469524695346954469554695646957469584695946960469614696246963469644696546966469674696846969469704697146972469734697446975469764697746978469794698046981469824698346984469854698646987469884698946990469914699246993469944699546996469974699846999470004700147002470034700447005470064700747008470094701047011470124701347014470154701647017470184701947020470214702247023470244702547026470274702847029470304703147032470334703447035470364703747038470394704047041470424704347044470454704647047470484704947050470514705247053470544705547056470574705847059470604706147062470634706447065470664706747068470694707047071470724707347074470754707647077470784707947080470814708247083470844708547086470874708847089470904709147092470934709447095470964709747098470994710047101471024710347104471054710647107471084710947110471114711247113471144711547116471174711847119471204712147122471234712447125471264712747128471294713047131471324713347134471354713647137471384713947140471414714247143471444714547146471474714847149471504715147152471534715447155471564715747158471594716047161471624716347164471654716647167471684716947170471714717247173471744717547176471774717847179471804718147182471834718447185471864718747188471894719047191471924719347194471954719647197471984719947200472014720247203472044720547206472074720847209472104721147212472134721447215472164721747218472194722047221472224722347224472254722647227472284722947230472314723247233472344723547236472374723847239472404724147242472434724447245472464724747248472494725047251472524725347254472554725647257472584725947260472614726247263472644726547266472674726847269472704727147272472734727447275472764727747278472794728047281472824728347284472854728647287472884728947290472914729247293472944729547296472974729847299473004730147302473034730447305473064730747308473094731047311473124731347314473154731647317473184731947320473214732247323473244732547326473274732847329473304733147332473334733447335473364733747338473394734047341473424734347344473454734647347473484734947350473514735247353473544735547356473574735847359473604736147362473634736447365473664736747368473694737047371473724737347374473754737647377473784737947380473814738247383473844738547386473874738847389473904739147392473934739447395473964739747398473994740047401474024740347404474054740647407474084740947410474114741247413474144741547416474174741847419474204742147422474234742447425474264742747428474294743047431474324743347434474354743647437474384743947440474414744247443474444744547446474474744847449474504745147452474534745447455474564745747458474594746047461474624746347464474654746647467474684746947470474714747247473474744747547476474774747847479474804748147482474834748447485474864748747488474894749047491474924749347494474954749647497474984749947500475014750247503475044750547506475074750847509475104751147512475134751447515475164751747518475194752047521475224752347524475254752647527475284752947530475314753247533475344753547536475374753847539475404754147542475434754447545475464754747548475494755047551475524755347554475554755647557475584755947560475614756247563475644756547566475674756847569475704757147572475734757447575475764757747578475794758047581475824758347584475854758647587475884758947590475914759247593475944759547596475974759847599476004760147602476034760447605476064760747608476094761047611476124761347614476154761647617476184761947620476214762247623476244762547626476274762847629476304763147632476334763447635476364763747638476394764047641476424764347644476454764647647476484764947650476514765247653476544765547656476574765847659476604766147662476634766447665476664766747668476694767047671476724767347674476754767647677476784767947680476814768247683476844768547686476874768847689476904769147692476934769447695476964769747698476994770047701477024770347704477054770647707477084770947710477114771247713477144771547716477174771847719477204772147722477234772447725477264772747728477294773047731477324773347734477354773647737477384773947740477414774247743477444774547746477474774847749477504775147752477534775447755477564775747758477594776047761477624776347764477654776647767477684776947770477714777247773477744777547776477774777847779477804778147782477834778447785477864778747788477894779047791477924779347794477954779647797477984779947800478014780247803478044780547806478074780847809478104781147812478134781447815478164781747818478194782047821478224782347824478254782647827478284782947830478314783247833478344783547836478374783847839478404784147842478434784447845478464784747848478494785047851478524785347854478554785647857478584785947860478614786247863478644786547866478674786847869478704787147872478734787447875478764787747878478794788047881478824788347884478854788647887478884788947890478914789247893478944789547896478974789847899479004790147902479034790447905479064790747908479094791047911479124791347914479154791647917479184791947920479214792247923479244792547926479274792847929479304793147932479334793447935479364793747938479394794047941479424794347944479454794647947479484794947950479514795247953479544795547956479574795847959479604796147962479634796447965479664796747968479694797047971479724797347974479754797647977479784797947980479814798247983479844798547986479874798847989479904799147992479934799447995479964799747998479994800048001480024800348004480054800648007480084800948010480114801248013480144801548016480174801848019480204802148022480234802448025480264802748028480294803048031480324803348034480354803648037480384803948040480414804248043480444804548046480474804848049480504805148052480534805448055480564805748058480594806048061480624806348064480654806648067480684806948070480714807248073480744807548076480774807848079480804808148082480834808448085480864808748088480894809048091480924809348094480954809648097480984809948100481014810248103481044810548106481074810848109481104811148112481134811448115481164811748118481194812048121481224812348124481254812648127481284812948130481314813248133481344813548136481374813848139481404814148142481434814448145481464814748148481494815048151481524815348154481554815648157481584815948160481614816248163481644816548166481674816848169481704817148172481734817448175481764817748178481794818048181481824818348184481854818648187481884818948190481914819248193481944819548196481974819848199482004820148202482034820448205482064820748208482094821048211482124821348214482154821648217482184821948220482214822248223482244822548226482274822848229482304823148232482334823448235482364823748238482394824048241482424824348244482454824648247482484824948250482514825248253482544825548256482574825848259482604826148262482634826448265482664826748268482694827048271482724827348274482754827648277482784827948280482814828248283482844828548286482874828848289482904829148292482934829448295482964829748298482994830048301483024830348304483054830648307483084830948310483114831248313483144831548316483174831848319483204832148322483234832448325483264832748328483294833048331483324833348334483354833648337483384833948340483414834248343483444834548346483474834848349483504835148352483534835448355483564835748358483594836048361483624836348364483654836648367483684836948370483714837248373483744837548376483774837848379483804838148382483834838448385483864838748388483894839048391483924839348394483954839648397483984839948400484014840248403484044840548406484074840848409484104841148412484134841448415484164841748418484194842048421484224842348424484254842648427484284842948430484314843248433484344843548436484374843848439484404844148442484434844448445484464844748448484494845048451484524845348454484554845648457484584845948460484614846248463484644846548466484674846848469484704847148472484734847448475484764847748478484794848048481484824848348484484854848648487484884848948490484914849248493484944849548496484974849848499485004850148502485034850448505485064850748508485094851048511485124851348514485154851648517485184851948520485214852248523485244852548526485274852848529485304853148532485334853448535485364853748538485394854048541485424854348544485454854648547485484854948550485514855248553485544855548556485574855848559485604856148562485634856448565485664856748568485694857048571485724857348574485754857648577485784857948580485814858248583485844858548586485874858848589485904859148592485934859448595485964859748598485994860048601486024860348604486054860648607486084860948610486114861248613486144861548616486174861848619486204862148622486234862448625486264862748628486294863048631486324863348634486354863648637486384863948640486414864248643486444864548646486474864848649486504865148652486534865448655486564865748658486594866048661486624866348664486654866648667486684866948670486714867248673486744867548676486774867848679486804868148682486834868448685486864868748688486894869048691486924869348694486954869648697486984869948700487014870248703487044870548706487074870848709487104871148712487134871448715487164871748718487194872048721487224872348724487254872648727487284872948730487314873248733487344873548736487374873848739487404874148742487434874448745487464874748748487494875048751487524875348754487554875648757487584875948760487614876248763487644876548766487674876848769487704877148772487734877448775487764877748778487794878048781487824878348784487854878648787487884878948790487914879248793487944879548796487974879848799488004880148802488034880448805488064880748808488094881048811488124881348814488154881648817488184881948820488214882248823488244882548826488274882848829488304883148832488334883448835488364883748838488394884048841488424884348844488454884648847488484884948850488514885248853488544885548856488574885848859488604886148862488634886448865488664886748868488694887048871488724887348874488754887648877488784887948880488814888248883488844888548886488874888848889488904889148892488934889448895488964889748898488994890048901489024890348904489054890648907489084890948910489114891248913489144891548916489174891848919489204892148922489234892448925489264892748928489294893048931489324893348934489354893648937489384893948940489414894248943489444894548946489474894848949489504895148952489534895448955489564895748958489594896048961489624896348964489654896648967489684896948970489714897248973489744897548976489774897848979489804898148982489834898448985489864898748988489894899048991489924899348994489954899648997489984899949000490014900249003490044900549006490074900849009490104901149012490134901449015490164901749018490194902049021490224902349024490254902649027490284902949030490314903249033490344903549036490374903849039490404904149042490434904449045490464904749048490494905049051490524905349054490554905649057490584905949060490614906249063490644906549066490674906849069490704907149072490734907449075490764907749078490794908049081490824908349084490854908649087490884908949090490914909249093490944909549096490974909849099491004910149102491034910449105491064910749108491094911049111491124911349114491154911649117491184911949120491214912249123491244912549126491274912849129491304913149132491334913449135491364913749138491394914049141491424914349144491454914649147491484914949150491514915249153491544915549156491574915849159491604916149162491634916449165491664916749168491694917049171491724917349174491754917649177491784917949180491814918249183491844918549186491874918849189491904919149192491934919449195491964919749198491994920049201492024920349204492054920649207492084920949210492114921249213492144921549216492174921849219492204922149222492234922449225492264922749228492294923049231492324923349234492354923649237492384923949240492414924249243492444924549246492474924849249492504925149252492534925449255492564925749258492594926049261492624926349264492654926649267492684926949270492714927249273492744927549276492774927849279492804928149282492834928449285492864928749288492894929049291492924929349294492954929649297492984929949300493014930249303493044930549306493074930849309493104931149312493134931449315493164931749318493194932049321493224932349324493254932649327493284932949330493314933249333493344933549336493374933849339493404934149342493434934449345493464934749348493494935049351493524935349354493554935649357493584935949360493614936249363493644936549366493674936849369493704937149372493734937449375493764937749378493794938049381493824938349384493854938649387493884938949390493914939249393493944939549396493974939849399494004940149402494034940449405494064940749408494094941049411494124941349414494154941649417494184941949420494214942249423494244942549426494274942849429494304943149432494334943449435494364943749438494394944049441494424944349444494454944649447494484944949450494514945249453494544945549456494574945849459494604946149462494634946449465494664946749468494694947049471494724947349474494754947649477494784947949480494814948249483494844948549486494874948849489494904949149492494934949449495494964949749498494994950049501495024950349504495054950649507495084950949510495114951249513495144951549516495174951849519495204952149522495234952449525495264952749528495294953049531495324953349534495354953649537495384953949540495414954249543495444954549546495474954849549495504955149552495534955449555495564955749558495594956049561495624956349564495654956649567495684956949570495714957249573495744957549576495774957849579495804958149582495834958449585495864958749588495894959049591495924959349594495954959649597495984959949600496014960249603496044960549606496074960849609496104961149612496134961449615496164961749618496194962049621496224962349624496254962649627496284962949630496314963249633496344963549636496374963849639496404964149642496434964449645496464964749648496494965049651496524965349654496554965649657496584965949660496614966249663496644966549666496674966849669496704967149672496734967449675496764967749678496794968049681496824968349684496854968649687496884968949690496914969249693496944969549696496974969849699497004970149702497034970449705497064970749708497094971049711497124971349714497154971649717497184971949720497214972249723497244972549726497274972849729497304973149732497334973449735497364973749738497394974049741497424974349744497454974649747497484974949750497514975249753497544975549756497574975849759497604976149762497634976449765497664976749768497694977049771497724977349774497754977649777497784977949780497814978249783497844978549786497874978849789497904979149792497934979449795497964979749798497994980049801498024980349804498054980649807498084980949810498114981249813498144981549816498174981849819498204982149822498234982449825498264982749828498294983049831498324983349834498354983649837498384983949840498414984249843498444984549846498474984849849498504985149852498534985449855498564985749858498594986049861498624986349864498654986649867498684986949870498714987249873498744987549876498774987849879498804988149882498834988449885498864988749888498894989049891498924989349894498954989649897498984989949900499014990249903499044990549906499074990849909499104991149912499134991449915499164991749918499194992049921499224992349924499254992649927499284992949930499314993249933499344993549936499374993849939499404994149942499434994449945499464994749948499494995049951499524995349954499554995649957499584995949960499614996249963499644996549966499674996849969499704997149972499734997449975499764997749978499794998049981499824998349984499854998649987499884998949990499914999249993499944999549996499974999849999500005000150002500035000450005500065000750008500095001050011500125001350014500155001650017500185001950020500215002250023500245002550026500275002850029500305003150032500335003450035500365003750038500395004050041500425004350044500455004650047500485004950050500515005250053500545005550056500575005850059500605006150062500635006450065500665006750068500695007050071500725007350074500755007650077500785007950080500815008250083500845008550086500875008850089500905009150092500935009450095500965009750098500995010050101501025010350104501055010650107501085010950110501115011250113501145011550116501175011850119501205012150122501235012450125501265012750128501295013050131501325013350134501355013650137501385013950140501415014250143501445014550146501475014850149501505015150152501535015450155501565015750158501595016050161501625016350164501655016650167501685016950170501715017250173501745017550176501775017850179501805018150182501835018450185501865018750188501895019050191501925019350194501955019650197501985019950200502015020250203502045020550206502075020850209502105021150212502135021450215502165021750218502195022050221502225022350224502255022650227502285022950230502315023250233502345023550236502375023850239502405024150242502435024450245502465024750248502495025050251502525025350254502555025650257502585025950260502615026250263502645026550266502675026850269502705027150272502735027450275502765027750278502795028050281502825028350284502855028650287502885028950290502915029250293502945029550296502975029850299503005030150302503035030450305503065030750308503095031050311503125031350314503155031650317503185031950320503215032250323503245032550326503275032850329503305033150332503335033450335503365033750338503395034050341503425034350344503455034650347503485034950350503515035250353503545035550356503575035850359503605036150362503635036450365503665036750368503695037050371503725037350374503755037650377503785037950380503815038250383503845038550386503875038850389503905039150392503935039450395503965039750398503995040050401504025040350404504055040650407504085040950410504115041250413504145041550416504175041850419504205042150422504235042450425504265042750428504295043050431504325043350434504355043650437504385043950440504415044250443504445044550446504475044850449504505045150452504535045450455504565045750458504595046050461504625046350464504655046650467504685046950470504715047250473504745047550476504775047850479504805048150482504835048450485504865048750488504895049050491504925049350494504955049650497504985049950500505015050250503505045050550506505075050850509505105051150512505135051450515505165051750518505195052050521505225052350524505255052650527505285052950530505315053250533505345053550536505375053850539505405054150542505435054450545505465054750548505495055050551505525055350554505555055650557505585055950560505615056250563505645056550566505675056850569505705057150572505735057450575505765057750578505795058050581505825058350584505855058650587505885058950590505915059250593505945059550596505975059850599506005060150602506035060450605506065060750608506095061050611506125061350614506155061650617506185061950620506215062250623506245062550626506275062850629506305063150632506335063450635506365063750638506395064050641506425064350644506455064650647506485064950650506515065250653506545065550656506575065850659506605066150662506635066450665506665066750668506695067050671506725067350674506755067650677506785067950680506815068250683506845068550686506875068850689506905069150692506935069450695506965069750698506995070050701507025070350704507055070650707507085070950710507115071250713507145071550716507175071850719507205072150722507235072450725507265072750728507295073050731507325073350734507355073650737507385073950740507415074250743507445074550746507475074850749507505075150752507535075450755507565075750758507595076050761507625076350764507655076650767507685076950770507715077250773507745077550776507775077850779507805078150782507835078450785507865078750788507895079050791507925079350794507955079650797507985079950800508015080250803508045080550806508075080850809508105081150812508135081450815508165081750818508195082050821508225082350824508255082650827508285082950830508315083250833508345083550836508375083850839508405084150842508435084450845508465084750848508495085050851508525085350854508555085650857508585085950860508615086250863508645086550866508675086850869508705087150872508735087450875508765087750878508795088050881508825088350884508855088650887508885088950890508915089250893508945089550896508975089850899509005090150902509035090450905509065090750908509095091050911509125091350914509155091650917509185091950920509215092250923509245092550926509275092850929509305093150932509335093450935509365093750938509395094050941509425094350944509455094650947509485094950950509515095250953509545095550956509575095850959509605096150962509635096450965509665096750968509695097050971509725097350974509755097650977509785097950980509815098250983509845098550986509875098850989509905099150992509935099450995509965099750998509995100051001510025100351004510055100651007510085100951010510115101251013510145101551016510175101851019510205102151022510235102451025510265102751028510295103051031510325103351034510355103651037510385103951040510415104251043510445104551046510475104851049510505105151052510535105451055510565105751058510595106051061510625106351064510655106651067510685106951070510715107251073510745107551076510775107851079510805108151082510835108451085510865108751088510895109051091510925109351094510955109651097510985109951100511015110251103511045110551106511075110851109511105111151112511135111451115511165111751118511195112051121511225112351124511255112651127511285112951130511315113251133511345113551136511375113851139511405114151142511435114451145511465114751148511495115051151511525115351154511555115651157511585115951160511615116251163511645116551166511675116851169511705117151172511735117451175511765117751178511795118051181511825118351184511855118651187511885118951190511915119251193511945119551196511975119851199512005120151202512035120451205512065120751208512095121051211512125121351214512155121651217512185121951220512215122251223512245122551226512275122851229512305123151232512335123451235512365123751238512395124051241512425124351244512455124651247512485124951250512515125251253512545125551256512575125851259512605126151262512635126451265512665126751268512695127051271512725127351274512755127651277512785127951280512815128251283512845128551286512875128851289512905129151292512935129451295512965129751298512995130051301513025130351304513055130651307513085130951310513115131251313513145131551316513175131851319513205132151322513235132451325513265132751328513295133051331513325133351334513355133651337513385133951340513415134251343513445134551346513475134851349513505135151352513535135451355513565135751358513595136051361513625136351364513655136651367513685136951370513715137251373513745137551376513775137851379513805138151382513835138451385513865138751388513895139051391513925139351394513955139651397513985139951400514015140251403514045140551406514075140851409514105141151412514135141451415514165141751418514195142051421514225142351424514255142651427514285142951430514315143251433514345143551436514375143851439514405144151442514435144451445514465144751448514495145051451514525145351454514555145651457514585145951460514615146251463514645146551466514675146851469514705147151472514735147451475514765147751478514795148051481514825148351484514855148651487514885148951490514915149251493514945149551496514975149851499515005150151502515035150451505515065150751508515095151051511515125151351514515155151651517515185151951520515215152251523515245152551526515275152851529515305153151532515335153451535515365153751538515395154051541515425154351544515455154651547515485154951550515515155251553515545155551556515575155851559515605156151562515635156451565515665156751568515695157051571515725157351574515755157651577515785157951580515815158251583515845158551586515875158851589515905159151592515935159451595515965159751598515995160051601516025160351604516055160651607516085160951610516115161251613516145161551616516175161851619516205162151622516235162451625516265162751628516295163051631516325163351634516355163651637516385163951640516415164251643516445164551646516475164851649516505165151652516535165451655516565165751658516595166051661516625166351664516655166651667516685166951670516715167251673516745167551676516775167851679516805168151682516835168451685516865168751688516895169051691516925169351694516955169651697516985169951700517015170251703517045170551706517075170851709517105171151712517135171451715517165171751718517195172051721517225172351724517255172651727517285172951730517315173251733517345173551736517375173851739517405174151742517435174451745517465174751748517495175051751517525175351754517555175651757517585175951760517615176251763517645176551766517675176851769517705177151772517735177451775517765177751778517795178051781517825178351784517855178651787517885178951790517915179251793517945179551796517975179851799518005180151802518035180451805518065180751808518095181051811518125181351814518155181651817518185181951820518215182251823518245182551826518275182851829518305183151832518335183451835518365183751838518395184051841518425184351844518455184651847518485184951850518515185251853518545185551856518575185851859518605186151862518635186451865518665186751868518695187051871518725187351874518755187651877518785187951880518815188251883518845188551886518875188851889518905189151892518935189451895518965189751898518995190051901519025190351904519055190651907519085190951910519115191251913519145191551916519175191851919519205192151922519235192451925519265192751928519295193051931519325193351934519355193651937519385193951940519415194251943519445194551946519475194851949519505195151952519535195451955519565195751958519595196051961519625196351964519655196651967519685196951970519715197251973519745197551976519775197851979519805198151982519835198451985519865198751988519895199051991519925199351994519955199651997519985199952000520015200252003520045200552006520075200852009520105201152012520135201452015520165201752018520195202052021520225202352024520255202652027520285202952030520315203252033520345203552036520375203852039520405204152042520435204452045520465204752048520495205052051520525205352054520555205652057520585205952060520615206252063520645206552066520675206852069520705207152072520735207452075520765207752078520795208052081520825208352084520855208652087520885208952090520915209252093520945209552096520975209852099521005210152102521035210452105521065210752108521095211052111521125211352114521155211652117521185211952120521215212252123521245212552126521275212852129521305213152132521335213452135521365213752138521395214052141521425214352144521455214652147521485214952150521515215252153521545215552156521575215852159521605216152162521635216452165521665216752168521695217052171521725217352174521755217652177521785217952180521815218252183521845218552186521875218852189521905219152192521935219452195521965219752198521995220052201522025220352204522055220652207522085220952210522115221252213522145221552216522175221852219522205222152222522235222452225522265222752228522295223052231522325223352234522355223652237522385223952240522415224252243522445224552246522475224852249522505225152252522535225452255522565225752258522595226052261522625226352264522655226652267522685226952270522715227252273522745227552276522775227852279522805228152282522835228452285522865228752288522895229052291522925229352294522955229652297522985229952300523015230252303523045230552306523075230852309523105231152312523135231452315523165231752318523195232052321523225232352324523255232652327523285232952330523315233252333523345233552336523375233852339523405234152342523435234452345523465234752348523495235052351523525235352354523555235652357523585235952360523615236252363523645236552366523675236852369523705237152372523735237452375523765237752378523795238052381523825238352384523855238652387523885238952390523915239252393523945239552396523975239852399524005240152402524035240452405524065240752408524095241052411524125241352414524155241652417524185241952420524215242252423524245242552426524275242852429524305243152432524335243452435524365243752438524395244052441524425244352444524455244652447524485244952450524515245252453524545245552456524575245852459524605246152462524635246452465524665246752468524695247052471524725247352474524755247652477524785247952480524815248252483524845248552486524875248852489524905249152492524935249452495524965249752498524995250052501525025250352504525055250652507525085250952510525115251252513525145251552516525175251852519525205252152522525235252452525525265252752528525295253052531525325253352534525355253652537525385253952540525415254252543525445254552546525475254852549525505255152552525535255452555525565255752558525595256052561525625256352564525655256652567525685256952570525715257252573525745257552576525775257852579525805258152582525835258452585525865258752588525895259052591525925259352594525955259652597525985259952600526015260252603526045260552606526075260852609526105261152612526135261452615526165261752618526195262052621526225262352624526255262652627526285262952630526315263252633526345263552636526375263852639526405264152642526435264452645526465264752648526495265052651526525265352654526555265652657526585265952660526615266252663526645266552666526675266852669526705267152672526735267452675526765267752678526795268052681526825268352684526855268652687526885268952690526915269252693526945269552696526975269852699527005270152702527035270452705527065270752708527095271052711527125271352714527155271652717527185271952720527215272252723527245272552726527275272852729527305273152732527335273452735527365273752738527395274052741527425274352744527455274652747527485274952750527515275252753527545275552756527575275852759527605276152762527635276452765527665276752768527695277052771527725277352774527755277652777527785277952780527815278252783527845278552786527875278852789527905279152792527935279452795527965279752798527995280052801528025280352804528055280652807528085280952810528115281252813528145281552816528175281852819528205282152822528235282452825528265282752828528295283052831528325283352834528355283652837528385283952840528415284252843528445284552846528475284852849528505285152852528535285452855528565285752858528595286052861528625286352864528655286652867528685286952870528715287252873528745287552876528775287852879528805288152882528835288452885528865288752888528895289052891528925289352894528955289652897528985289952900529015290252903529045290552906529075290852909529105291152912529135291452915529165291752918529195292052921529225292352924529255292652927529285292952930529315293252933529345293552936529375293852939529405294152942529435294452945529465294752948529495295052951529525295352954529555295652957529585295952960529615296252963529645296552966529675296852969529705297152972529735297452975529765297752978529795298052981529825298352984529855298652987529885298952990529915299252993529945299552996529975299852999530005300153002530035300453005530065300753008530095301053011530125301353014530155301653017530185301953020530215302253023530245302553026530275302853029530305303153032530335303453035530365303753038530395304053041530425304353044530455304653047530485304953050530515305253053530545305553056530575305853059530605306153062530635306453065530665306753068530695307053071530725307353074530755307653077530785307953080530815308253083530845308553086530875308853089530905309153092530935309453095530965309753098530995310053101531025310353104531055310653107531085310953110531115311253113531145311553116531175311853119531205312153122531235312453125531265312753128531295313053131531325313353134531355313653137531385313953140531415314253143531445314553146531475314853149531505315153152531535315453155531565315753158531595316053161531625316353164531655316653167531685316953170531715317253173531745317553176531775317853179531805318153182531835318453185531865318753188531895319053191531925319353194531955319653197531985319953200532015320253203532045320553206532075320853209532105321153212532135321453215532165321753218532195322053221532225322353224532255322653227532285322953230532315323253233532345323553236532375323853239532405324153242532435324453245532465324753248532495325053251532525325353254532555325653257532585325953260532615326253263532645326553266532675326853269532705327153272532735327453275532765327753278532795328053281532825328353284532855328653287532885328953290532915329253293532945329553296532975329853299533005330153302533035330453305533065330753308533095331053311533125331353314533155331653317533185331953320533215332253323533245332553326533275332853329533305333153332533335333453335533365333753338533395334053341533425334353344533455334653347533485334953350533515335253353533545335553356533575335853359533605336153362533635336453365533665336753368533695337053371533725337353374533755337653377533785337953380533815338253383533845338553386533875338853389533905339153392533935339453395533965339753398533995340053401534025340353404534055340653407534085340953410534115341253413534145341553416534175341853419534205342153422534235342453425534265342753428534295343053431534325343353434534355343653437534385343953440534415344253443534445344553446534475344853449534505345153452534535345453455534565345753458534595346053461534625346353464534655346653467534685346953470534715347253473534745347553476534775347853479534805348153482534835348453485534865348753488534895349053491534925349353494534955349653497534985349953500535015350253503535045350553506535075350853509535105351153512535135351453515535165351753518535195352053521535225352353524535255352653527535285352953530535315353253533535345353553536535375353853539535405354153542535435354453545535465354753548535495355053551535525355353554535555355653557535585355953560535615356253563535645356553566535675356853569535705357153572535735357453575535765357753578535795358053581535825358353584535855358653587535885358953590535915359253593535945359553596535975359853599536005360153602536035360453605536065360753608536095361053611536125361353614536155361653617536185361953620536215362253623536245362553626536275362853629536305363153632536335363453635536365363753638536395364053641536425364353644536455364653647536485364953650536515365253653536545365553656536575365853659536605366153662536635366453665536665366753668536695367053671536725367353674536755367653677536785367953680536815368253683536845368553686536875368853689536905369153692536935369453695536965369753698536995370053701537025370353704537055370653707537085370953710537115371253713537145371553716537175371853719537205372153722537235372453725537265372753728537295373053731537325373353734537355373653737537385373953740537415374253743537445374553746537475374853749537505375153752537535375453755537565375753758537595376053761537625376353764537655376653767537685376953770537715377253773537745377553776537775377853779537805378153782537835378453785537865378753788537895379053791537925379353794537955379653797537985379953800538015380253803538045380553806538075380853809538105381153812538135381453815538165381753818538195382053821538225382353824538255382653827538285382953830538315383253833538345383553836538375383853839538405384153842538435384453845538465384753848538495385053851538525385353854538555385653857538585385953860538615386253863538645386553866538675386853869538705387153872538735387453875538765387753878538795388053881538825388353884538855388653887538885388953890538915389253893538945389553896538975389853899539005390153902539035390453905539065390753908539095391053911539125391353914539155391653917539185391953920539215392253923539245392553926539275392853929539305393153932539335393453935539365393753938539395394053941539425394353944539455394653947539485394953950539515395253953539545395553956539575395853959539605396153962539635396453965539665396753968539695397053971539725397353974539755397653977539785397953980539815398253983539845398553986539875398853989539905399153992539935399453995539965399753998539995400054001540025400354004540055400654007540085400954010540115401254013540145401554016540175401854019540205402154022540235402454025540265402754028540295403054031540325403354034540355403654037540385403954040540415404254043540445404554046540475404854049540505405154052540535405454055540565405754058540595406054061540625406354064540655406654067540685406954070540715407254073540745407554076540775407854079540805408154082540835408454085540865408754088540895409054091540925409354094540955409654097540985409954100541015410254103541045410554106541075410854109541105411154112541135411454115541165411754118541195412054121541225412354124541255412654127541285412954130541315413254133541345413554136541375413854139541405414154142541435414454145541465414754148541495415054151541525415354154541555415654157541585415954160541615416254163541645416554166541675416854169541705417154172541735417454175541765417754178541795418054181541825418354184541855418654187541885418954190541915419254193541945419554196541975419854199542005420154202542035420454205542065420754208542095421054211542125421354214542155421654217542185421954220542215422254223542245422554226542275422854229542305423154232542335423454235542365423754238542395424054241542425424354244542455424654247542485424954250542515425254253542545425554256542575425854259542605426154262542635426454265542665426754268542695427054271542725427354274542755427654277542785427954280542815428254283542845428554286542875428854289542905429154292542935429454295542965429754298542995430054301543025430354304543055430654307543085430954310543115431254313543145431554316543175431854319543205432154322543235432454325543265432754328543295433054331543325433354334543355433654337543385433954340543415434254343543445434554346543475434854349543505435154352543535435454355543565435754358543595436054361543625436354364543655436654367543685436954370543715437254373543745437554376543775437854379543805438154382543835438454385543865438754388543895439054391543925439354394543955439654397543985439954400544015440254403544045440554406544075440854409544105441154412544135441454415544165441754418544195442054421544225442354424544255442654427544285442954430544315443254433544345443554436544375443854439544405444154442544435444454445544465444754448544495445054451544525445354454544555445654457544585445954460544615446254463544645446554466544675446854469544705447154472544735447454475544765447754478544795448054481544825448354484544855448654487544885448954490544915449254493544945449554496544975449854499545005450154502545035450454505545065450754508545095451054511545125451354514545155451654517545185451954520545215452254523545245452554526545275452854529545305453154532545335453454535545365453754538545395454054541545425454354544545455454654547545485454954550545515455254553545545455554556545575455854559545605456154562545635456454565545665456754568545695457054571545725457354574545755457654577545785457954580545815458254583545845458554586545875458854589545905459154592545935459454595545965459754598545995460054601546025460354604546055460654607546085460954610546115461254613546145461554616546175461854619546205462154622546235462454625546265462754628546295463054631546325463354634546355463654637546385463954640546415464254643546445464554646546475464854649546505465154652546535465454655546565465754658546595466054661546625466354664546655466654667546685466954670546715467254673546745467554676546775467854679546805468154682546835468454685546865468754688546895469054691546925469354694546955469654697546985469954700547015470254703547045470554706547075470854709547105471154712547135471454715547165471754718547195472054721547225472354724547255472654727547285472954730547315473254733547345473554736547375473854739547405474154742547435474454745547465474754748547495475054751547525475354754547555475654757547585475954760547615476254763547645476554766547675476854769547705477154772547735477454775547765477754778547795478054781547825478354784547855478654787547885478954790547915479254793547945479554796547975479854799548005480154802548035480454805548065480754808548095481054811548125481354814548155481654817548185481954820548215482254823548245482554826548275482854829548305483154832548335483454835548365483754838548395484054841548425484354844548455484654847548485484954850548515485254853548545485554856548575485854859548605486154862548635486454865548665486754868548695487054871548725487354874548755487654877548785487954880548815488254883548845488554886548875488854889548905489154892548935489454895548965489754898548995490054901549025490354904549055490654907549085490954910549115491254913549145491554916549175491854919549205492154922549235492454925549265492754928549295493054931549325493354934549355493654937549385493954940549415494254943549445494554946549475494854949549505495154952549535495454955549565495754958549595496054961549625496354964549655496654967549685496954970549715497254973549745497554976549775497854979549805498154982549835498454985549865498754988549895499054991549925499354994549955499654997549985499955000550015500255003550045500555006550075500855009550105501155012550135501455015550165501755018550195502055021550225502355024550255502655027550285502955030550315503255033550345503555036550375503855039550405504155042550435504455045550465504755048550495505055051550525505355054550555505655057550585505955060550615506255063550645506555066550675506855069550705507155072550735507455075550765507755078550795508055081550825508355084550855508655087550885508955090550915509255093550945509555096550975509855099551005510155102551035510455105551065510755108551095511055111551125511355114551155511655117551185511955120551215512255123551245512555126551275512855129551305513155132551335513455135551365513755138551395514055141551425514355144551455514655147551485514955150551515515255153551545515555156551575515855159551605516155162551635516455165551665516755168551695517055171551725517355174551755517655177551785517955180551815518255183551845518555186551875518855189551905519155192551935519455195551965519755198551995520055201552025520355204552055520655207552085520955210552115521255213552145521555216552175521855219552205522155222552235522455225552265522755228552295523055231552325523355234552355523655237552385523955240552415524255243552445524555246552475524855249552505525155252552535525455255552565525755258552595526055261552625526355264552655526655267552685526955270552715527255273552745527555276552775527855279552805528155282552835528455285552865528755288552895529055291552925529355294552955529655297552985529955300553015530255303553045530555306553075530855309553105531155312553135531455315553165531755318553195532055321553225532355324553255532655327553285532955330553315533255333553345533555336553375533855339553405534155342553435534455345553465534755348553495535055351553525535355354553555535655357553585535955360553615536255363553645536555366553675536855369553705537155372553735537455375553765537755378553795538055381553825538355384553855538655387553885538955390553915539255393553945539555396553975539855399554005540155402554035540455405554065540755408554095541055411554125541355414554155541655417554185541955420554215542255423554245542555426554275542855429554305543155432554335543455435554365543755438554395544055441554425544355444554455544655447554485544955450554515545255453554545545555456554575545855459554605546155462554635546455465554665546755468554695547055471554725547355474554755547655477554785547955480554815548255483554845548555486554875548855489554905549155492554935549455495554965549755498554995550055501555025550355504555055550655507555085550955510555115551255513555145551555516555175551855519555205552155522555235552455525555265552755528555295553055531555325553355534555355553655537555385553955540555415554255543555445554555546555475554855549555505555155552555535555455555555565555755558555595556055561555625556355564555655556655567555685556955570555715557255573555745557555576555775557855579555805558155582555835558455585555865558755588555895559055591555925559355594555955559655597555985559955600556015560255603556045560555606556075560855609556105561155612556135561455615556165561755618556195562055621556225562355624556255562655627556285562955630556315563255633556345563555636556375563855639556405564155642556435564455645556465564755648556495565055651556525565355654556555565655657556585565955660556615566255663556645566555666556675566855669556705567155672556735567455675556765567755678556795568055681556825568355684556855568655687556885568955690556915569255693556945569555696556975569855699557005570155702557035570455705557065570755708557095571055711557125571355714557155571655717557185571955720557215572255723557245572555726557275572855729557305573155732557335573455735557365573755738557395574055741557425574355744557455574655747557485574955750557515575255753557545575555756557575575855759557605576155762557635576455765557665576755768557695577055771557725577355774557755577655777557785577955780557815578255783557845578555786557875578855789557905579155792557935579455795557965579755798557995580055801558025580355804558055580655807558085580955810558115581255813558145581555816558175581855819558205582155822558235582455825558265582755828558295583055831558325583355834558355583655837558385583955840558415584255843558445584555846558475584855849558505585155852558535585455855558565585755858558595586055861558625586355864558655586655867558685586955870558715587255873558745587555876558775587855879558805588155882558835588455885558865588755888558895589055891558925589355894558955589655897558985589955900559015590255903559045590555906559075590855909559105591155912559135591455915559165591755918559195592055921559225592355924559255592655927559285592955930559315593255933559345593555936559375593855939559405594155942559435594455945559465594755948559495595055951559525595355954559555595655957559585595955960559615596255963559645596555966559675596855969559705597155972559735597455975559765597755978559795598055981559825598355984559855598655987559885598955990559915599255993559945599555996559975599855999560005600156002560035600456005560065600756008560095601056011560125601356014560155601656017560185601956020560215602256023560245602556026560275602856029560305603156032560335603456035560365603756038560395604056041560425604356044560455604656047560485604956050560515605256053560545605556056560575605856059560605606156062560635606456065560665606756068560695607056071560725607356074560755607656077560785607956080560815608256083560845608556086560875608856089560905609156092560935609456095560965609756098560995610056101561025610356104561055610656107561085610956110561115611256113561145611556116561175611856119561205612156122561235612456125561265612756128561295613056131561325613356134561355613656137561385613956140561415614256143561445614556146561475614856149561505615156152561535615456155561565615756158561595616056161561625616356164561655616656167561685616956170561715617256173561745617556176561775617856179561805618156182561835618456185561865618756188561895619056191561925619356194561955619656197561985619956200562015620256203562045620556206562075620856209562105621156212562135621456215562165621756218562195622056221562225622356224562255622656227562285622956230562315623256233562345623556236562375623856239562405624156242562435624456245562465624756248562495625056251562525625356254562555625656257562585625956260562615626256263562645626556266562675626856269562705627156272562735627456275562765627756278562795628056281562825628356284562855628656287562885628956290562915629256293562945629556296562975629856299563005630156302563035630456305563065630756308563095631056311563125631356314563155631656317563185631956320563215632256323563245632556326563275632856329563305633156332563335633456335563365633756338563395634056341563425634356344563455634656347563485634956350563515635256353563545635556356563575635856359563605636156362563635636456365563665636756368563695637056371563725637356374563755637656377563785637956380563815638256383563845638556386563875638856389563905639156392563935639456395563965639756398563995640056401564025640356404564055640656407564085640956410564115641256413564145641556416564175641856419564205642156422564235642456425564265642756428564295643056431564325643356434564355643656437564385643956440564415644256443564445644556446564475644856449564505645156452564535645456455564565645756458564595646056461564625646356464564655646656467564685646956470564715647256473564745647556476564775647856479564805648156482564835648456485564865648756488564895649056491564925649356494564955649656497564985649956500565015650256503565045650556506565075650856509565105651156512565135651456515565165651756518565195652056521565225652356524565255652656527565285652956530565315653256533565345653556536565375653856539565405654156542565435654456545565465654756548565495655056551565525655356554565555655656557565585655956560565615656256563565645656556566565675656856569565705657156572565735657456575565765657756578565795658056581565825658356584565855658656587565885658956590565915659256593565945659556596565975659856599566005660156602566035660456605566065660756608566095661056611566125661356614566155661656617566185661956620566215662256623566245662556626566275662856629566305663156632566335663456635566365663756638566395664056641566425664356644566455664656647566485664956650566515665256653566545665556656566575665856659566605666156662566635666456665566665666756668566695667056671566725667356674566755667656677566785667956680566815668256683566845668556686566875668856689566905669156692566935669456695566965669756698566995670056701567025670356704567055670656707567085670956710567115671256713567145671556716567175671856719567205672156722567235672456725567265672756728567295673056731567325673356734567355673656737567385673956740567415674256743567445674556746567475674856749567505675156752567535675456755567565675756758567595676056761567625676356764567655676656767567685676956770567715677256773567745677556776567775677856779567805678156782567835678456785567865678756788567895679056791567925679356794567955679656797567985679956800568015680256803568045680556806568075680856809568105681156812568135681456815568165681756818568195682056821568225682356824568255682656827568285682956830568315683256833568345683556836568375683856839568405684156842568435684456845568465684756848568495685056851568525685356854568555685656857568585685956860568615686256863568645686556866568675686856869568705687156872568735687456875568765687756878568795688056881568825688356884568855688656887568885688956890568915689256893568945689556896568975689856899569005690156902569035690456905569065690756908569095691056911569125691356914569155691656917569185691956920569215692256923569245692556926569275692856929569305693156932569335693456935569365693756938569395694056941569425694356944569455694656947569485694956950569515695256953569545695556956569575695856959569605696156962569635696456965569665696756968569695697056971569725697356974569755697656977569785697956980569815698256983569845698556986569875698856989569905699156992569935699456995569965699756998569995700057001570025700357004570055700657007570085700957010570115701257013570145701557016570175701857019570205702157022570235702457025570265702757028570295703057031570325703357034570355703657037570385703957040570415704257043570445704557046570475704857049570505705157052570535705457055570565705757058570595706057061570625706357064570655706657067570685706957070570715707257073570745707557076570775707857079570805708157082570835708457085570865708757088570895709057091570925709357094570955709657097570985709957100571015710257103571045710557106571075710857109571105711157112571135711457115571165711757118571195712057121571225712357124571255712657127571285712957130571315713257133571345713557136571375713857139571405714157142571435714457145571465714757148571495715057151571525715357154571555715657157571585715957160571615716257163571645716557166571675716857169571705717157172571735717457175571765717757178571795718057181571825718357184571855718657187571885718957190571915719257193571945719557196571975719857199572005720157202572035720457205572065720757208572095721057211572125721357214572155721657217572185721957220572215722257223572245722557226572275722857229572305723157232572335723457235572365723757238572395724057241572425724357244572455724657247572485724957250572515725257253572545725557256572575725857259572605726157262572635726457265572665726757268572695727057271572725727357274572755727657277572785727957280572815728257283572845728557286572875728857289572905729157292572935729457295572965729757298572995730057301573025730357304573055730657307573085730957310573115731257313573145731557316573175731857319573205732157322573235732457325573265732757328573295733057331573325733357334573355733657337573385733957340573415734257343573445734557346573475734857349573505735157352573535735457355573565735757358573595736057361573625736357364573655736657367573685736957370573715737257373573745737557376573775737857379573805738157382573835738457385573865738757388573895739057391573925739357394573955739657397573985739957400574015740257403574045740557406574075740857409574105741157412574135741457415574165741757418574195742057421574225742357424574255742657427574285742957430574315743257433574345743557436574375743857439574405744157442574435744457445574465744757448574495745057451574525745357454574555745657457574585745957460574615746257463574645746557466574675746857469574705747157472574735747457475574765747757478574795748057481574825748357484574855748657487574885748957490574915749257493574945749557496574975749857499575005750157502575035750457505575065750757508575095751057511575125751357514575155751657517575185751957520575215752257523575245752557526575275752857529575305753157532575335753457535575365753757538575395754057541575425754357544575455754657547575485754957550575515755257553575545755557556575575755857559575605756157562575635756457565575665756757568575695757057571575725757357574575755757657577575785757957580575815758257583575845758557586575875758857589575905759157592575935759457595575965759757598575995760057601576025760357604576055760657607576085760957610576115761257613576145761557616576175761857619576205762157622576235762457625576265762757628576295763057631576325763357634576355763657637576385763957640576415764257643576445764557646576475764857649576505765157652576535765457655576565765757658576595766057661576625766357664576655766657667576685766957670576715767257673576745767557676576775767857679576805768157682576835768457685576865768757688576895769057691576925769357694576955769657697576985769957700577015770257703577045770557706577075770857709577105771157712577135771457715577165771757718577195772057721577225772357724577255772657727577285772957730577315773257733577345773557736577375773857739577405774157742577435774457745577465774757748577495775057751577525775357754577555775657757577585775957760577615776257763577645776557766577675776857769577705777157772577735777457775577765777757778577795778057781577825778357784577855778657787577885778957790577915779257793577945779557796577975779857799578005780157802578035780457805578065780757808578095781057811578125781357814578155781657817578185781957820578215782257823578245782557826578275782857829578305783157832578335783457835578365783757838578395784057841578425784357844578455784657847578485784957850578515785257853578545785557856578575785857859578605786157862578635786457865578665786757868578695787057871578725787357874578755787657877578785787957880578815788257883578845788557886578875788857889578905789157892578935789457895578965789757898578995790057901579025790357904579055790657907579085790957910579115791257913579145791557916579175791857919579205792157922579235792457925579265792757928579295793057931579325793357934579355793657937579385793957940579415794257943579445794557946579475794857949579505795157952579535795457955579565795757958579595796057961579625796357964579655796657967579685796957970579715797257973579745797557976579775797857979579805798157982579835798457985579865798757988579895799057991579925799357994579955799657997579985799958000580015800258003580045800558006580075800858009580105801158012580135801458015580165801758018580195802058021580225802358024580255802658027580285802958030580315803258033580345803558036580375803858039580405804158042580435804458045580465804758048580495805058051580525805358054580555805658057580585805958060580615806258063580645806558066580675806858069580705807158072580735807458075580765807758078580795808058081580825808358084580855808658087580885808958090580915809258093580945809558096580975809858099581005810158102581035810458105581065810758108581095811058111581125811358114581155811658117581185811958120581215812258123581245812558126581275812858129581305813158132581335813458135581365813758138581395814058141581425814358144581455814658147581485814958150581515815258153581545815558156581575815858159581605816158162581635816458165581665816758168581695817058171581725817358174581755817658177581785817958180581815818258183581845818558186581875818858189581905819158192581935819458195581965819758198581995820058201582025820358204582055820658207582085820958210582115821258213582145821558216582175821858219582205822158222582235822458225582265822758228582295823058231582325823358234582355823658237582385823958240582415824258243582445824558246582475824858249582505825158252582535825458255582565825758258582595826058261582625826358264582655826658267582685826958270582715827258273582745827558276582775827858279582805828158282582835828458285582865828758288582895829058291582925829358294582955829658297582985829958300583015830258303583045830558306583075830858309583105831158312583135831458315583165831758318583195832058321583225832358324583255832658327583285832958330583315833258333583345833558336583375833858339583405834158342583435834458345583465834758348583495835058351583525835358354583555835658357583585835958360583615836258363583645836558366583675836858369583705837158372583735837458375583765837758378583795838058381583825838358384583855838658387583885838958390583915839258393583945839558396583975839858399584005840158402584035840458405584065840758408584095841058411584125841358414584155841658417584185841958420584215842258423584245842558426584275842858429584305843158432584335843458435584365843758438584395844058441584425844358444584455844658447584485844958450584515845258453584545845558456584575845858459584605846158462584635846458465584665846758468584695847058471584725847358474584755847658477584785847958480584815848258483584845848558486584875848858489584905849158492584935849458495584965849758498584995850058501585025850358504585055850658507585085850958510585115851258513585145851558516585175851858519585205852158522585235852458525585265852758528585295853058531585325853358534585355853658537585385853958540585415854258543585445854558546585475854858549585505855158552585535855458555585565855758558585595856058561585625856358564585655856658567585685856958570585715857258573585745857558576585775857858579585805858158582585835858458585585865858758588585895859058591585925859358594585955859658597585985859958600586015860258603586045860558606586075860858609586105861158612586135861458615586165861758618586195862058621586225862358624586255862658627586285862958630586315863258633586345863558636586375863858639586405864158642586435864458645586465864758648586495865058651586525865358654586555865658657586585865958660586615866258663586645866558666586675866858669586705867158672586735867458675586765867758678586795868058681586825868358684586855868658687586885868958690586915869258693586945869558696586975869858699587005870158702587035870458705587065870758708587095871058711587125871358714587155871658717587185871958720587215872258723587245872558726587275872858729587305873158732587335873458735587365873758738587395874058741587425874358744587455874658747587485874958750587515875258753587545875558756587575875858759587605876158762587635876458765587665876758768587695877058771587725877358774587755877658777587785877958780587815878258783587845878558786587875878858789587905879158792587935879458795587965879758798587995880058801588025880358804588055880658807588085880958810588115881258813588145881558816588175881858819588205882158822588235882458825588265882758828588295883058831588325883358834588355883658837588385883958840588415884258843588445884558846588475884858849588505885158852588535885458855588565885758858588595886058861588625886358864588655886658867588685886958870588715887258873588745887558876588775887858879588805888158882588835888458885588865888758888588895889058891588925889358894588955889658897588985889958900589015890258903589045890558906589075890858909589105891158912589135891458915589165891758918589195892058921589225892358924589255892658927589285892958930589315893258933589345893558936589375893858939589405894158942589435894458945589465894758948589495895058951589525895358954589555895658957589585895958960589615896258963589645896558966589675896858969589705897158972589735897458975589765897758978589795898058981589825898358984589855898658987589885898958990589915899258993589945899558996589975899858999590005900159002590035900459005590065900759008590095901059011590125901359014590155901659017590185901959020590215902259023590245902559026590275902859029590305903159032590335903459035590365903759038590395904059041590425904359044590455904659047590485904959050590515905259053590545905559056590575905859059590605906159062590635906459065590665906759068590695907059071590725907359074590755907659077590785907959080590815908259083590845908559086590875908859089590905909159092590935909459095590965909759098590995910059101591025910359104591055910659107591085910959110591115911259113591145911559116591175911859119591205912159122591235912459125591265912759128591295913059131591325913359134591355913659137591385913959140591415914259143591445914559146591475914859149591505915159152591535915459155591565915759158591595916059161591625916359164591655916659167591685916959170591715917259173591745917559176591775917859179591805918159182591835918459185591865918759188591895919059191591925919359194591955919659197591985919959200592015920259203592045920559206592075920859209592105921159212592135921459215592165921759218592195922059221592225922359224592255922659227592285922959230592315923259233592345923559236592375923859239592405924159242592435924459245592465924759248592495925059251592525925359254592555925659257592585925959260592615926259263592645926559266592675926859269592705927159272592735927459275592765927759278592795928059281592825928359284592855928659287592885928959290592915929259293592945929559296592975929859299593005930159302593035930459305593065930759308593095931059311593125931359314593155931659317593185931959320593215932259323593245932559326593275932859329593305933159332593335933459335593365933759338593395934059341593425934359344593455934659347593485934959350593515935259353593545935559356593575935859359593605936159362593635936459365593665936759368593695937059371593725937359374593755937659377593785937959380593815938259383593845938559386593875938859389593905939159392593935939459395593965939759398593995940059401594025940359404594055940659407594085940959410594115941259413594145941559416594175941859419594205942159422594235942459425594265942759428594295943059431594325943359434594355943659437594385943959440594415944259443594445944559446594475944859449594505945159452594535945459455594565945759458594595946059461594625946359464594655946659467594685946959470594715947259473594745947559476594775947859479594805948159482594835948459485594865948759488594895949059491594925949359494594955949659497594985949959500595015950259503595045950559506595075950859509595105951159512595135951459515595165951759518595195952059521595225952359524595255952659527595285952959530595315953259533595345953559536595375953859539595405954159542595435954459545595465954759548595495955059551595525955359554595555955659557595585955959560595615956259563595645956559566595675956859569595705957159572595735957459575595765957759578595795958059581595825958359584595855958659587595885958959590595915959259593595945959559596595975959859599596005960159602596035960459605596065960759608596095961059611596125961359614596155961659617596185961959620596215962259623596245962559626596275962859629596305963159632596335963459635596365963759638596395964059641596425964359644596455964659647596485964959650596515965259653596545965559656596575965859659596605966159662596635966459665596665966759668596695967059671596725967359674596755967659677596785967959680596815968259683596845968559686596875968859689596905969159692596935969459695596965969759698596995970059701597025970359704597055970659707597085970959710597115971259713597145971559716597175971859719597205972159722597235972459725597265972759728597295973059731597325973359734597355973659737597385973959740597415974259743597445974559746597475974859749597505975159752597535975459755597565975759758597595976059761597625976359764597655976659767597685976959770597715977259773597745977559776597775977859779597805978159782597835978459785597865978759788597895979059791597925979359794597955979659797597985979959800598015980259803598045980559806598075980859809598105981159812598135981459815598165981759818598195982059821598225982359824598255982659827598285982959830598315983259833598345983559836598375983859839598405984159842598435984459845598465984759848598495985059851598525985359854598555985659857598585985959860598615986259863598645986559866598675986859869598705987159872598735987459875598765987759878598795988059881598825988359884598855988659887598885988959890598915989259893598945989559896598975989859899599005990159902599035990459905599065990759908599095991059911599125991359914599155991659917599185991959920599215992259923599245992559926599275992859929599305993159932599335993459935599365993759938599395994059941599425994359944599455994659947599485994959950599515995259953599545995559956599575995859959599605996159962599635996459965599665996759968599695997059971599725997359974599755997659977599785997959980599815998259983599845998559986599875998859989599905999159992599935999459995599965999759998599996000060001600026000360004600056000660007600086000960010600116001260013600146001560016600176001860019600206002160022600236002460025600266002760028600296003060031600326003360034600356003660037600386003960040600416004260043600446004560046600476004860049600506005160052600536005460055600566005760058600596006060061600626006360064600656006660067600686006960070600716007260073600746007560076600776007860079600806008160082600836008460085600866008760088600896009060091600926009360094600956009660097600986009960100601016010260103601046010560106601076010860109601106011160112601136011460115601166011760118601196012060121601226012360124601256012660127601286012960130601316013260133601346013560136601376013860139601406014160142601436014460145601466014760148601496015060151601526015360154601556015660157601586015960160601616016260163601646016560166601676016860169601706017160172601736017460175601766017760178601796018060181601826018360184601856018660187601886018960190601916019260193601946019560196601976019860199602006020160202602036020460205602066020760208602096021060211602126021360214602156021660217602186021960220602216022260223602246022560226602276022860229602306023160232602336023460235602366023760238602396024060241602426024360244602456024660247602486024960250602516025260253602546025560256602576025860259602606026160262602636026460265602666026760268602696027060271602726027360274602756027660277602786027960280602816028260283602846028560286602876028860289602906029160292602936029460295602966029760298602996030060301603026030360304603056030660307603086030960310603116031260313603146031560316603176031860319603206032160322603236032460325603266032760328603296033060331603326033360334603356033660337603386033960340603416034260343603446034560346603476034860349603506035160352603536035460355603566035760358603596036060361603626036360364603656036660367603686036960370603716037260373603746037560376603776037860379603806038160382603836038460385603866038760388603896039060391603926039360394603956039660397603986039960400604016040260403604046040560406604076040860409604106041160412604136041460415604166041760418604196042060421604226042360424604256042660427604286042960430604316043260433604346043560436604376043860439604406044160442604436044460445604466044760448604496045060451604526045360454604556045660457604586045960460604616046260463604646046560466604676046860469604706047160472604736047460475604766047760478604796048060481604826048360484604856048660487604886048960490604916049260493604946049560496604976049860499605006050160502605036050460505605066050760508605096051060511605126051360514605156051660517605186051960520605216052260523605246052560526605276052860529605306053160532605336053460535605366053760538605396054060541605426054360544605456054660547605486054960550605516055260553605546055560556605576055860559605606056160562605636056460565605666056760568605696057060571605726057360574605756057660577605786057960580605816058260583605846058560586605876058860589605906059160592605936059460595605966059760598605996060060601606026060360604606056060660607606086060960610606116061260613606146061560616606176061860619606206062160622606236062460625606266062760628606296063060631606326063360634606356063660637606386063960640606416064260643606446064560646606476064860649606506065160652606536065460655606566065760658606596066060661606626066360664606656066660667606686066960670606716067260673606746067560676606776067860679606806068160682606836068460685606866068760688606896069060691606926069360694606956069660697606986069960700607016070260703607046070560706607076070860709607106071160712607136071460715607166071760718607196072060721607226072360724607256072660727607286072960730607316073260733607346073560736607376073860739607406074160742607436074460745607466074760748607496075060751607526075360754607556075660757607586075960760607616076260763607646076560766607676076860769607706077160772607736077460775607766077760778607796078060781607826078360784607856078660787607886078960790607916079260793607946079560796607976079860799608006080160802608036080460805608066080760808608096081060811608126081360814608156081660817608186081960820608216082260823608246082560826608276082860829608306083160832608336083460835608366083760838608396084060841608426084360844608456084660847608486084960850608516085260853608546085560856608576085860859608606086160862608636086460865608666086760868608696087060871608726087360874608756087660877608786087960880608816088260883608846088560886608876088860889608906089160892608936089460895608966089760898608996090060901609026090360904609056090660907609086090960910609116091260913609146091560916609176091860919609206092160922609236092460925609266092760928609296093060931609326093360934609356093660937609386093960940609416094260943609446094560946609476094860949609506095160952609536095460955609566095760958609596096060961609626096360964609656096660967609686096960970609716097260973609746097560976609776097860979609806098160982609836098460985609866098760988609896099060991609926099360994609956099660997609986099961000610016100261003610046100561006610076100861009610106101161012610136101461015610166101761018610196102061021610226102361024610256102661027610286102961030610316103261033610346103561036610376103861039610406104161042610436104461045610466104761048610496105061051610526105361054610556105661057610586105961060610616106261063610646106561066610676106861069610706107161072610736107461075610766107761078610796108061081610826108361084610856108661087610886108961090610916109261093610946109561096610976109861099611006110161102611036110461105611066110761108611096111061111611126111361114611156111661117611186111961120611216112261123611246112561126611276112861129611306113161132611336113461135611366113761138611396114061141611426114361144611456114661147611486114961150611516115261153611546115561156611576115861159611606116161162611636116461165611666116761168611696117061171611726117361174611756117661177611786117961180611816118261183611846118561186611876118861189611906119161192611936119461195611966119761198611996120061201612026120361204612056120661207612086120961210612116121261213612146121561216612176121861219612206122161222612236122461225612266122761228612296123061231612326123361234612356123661237612386123961240612416124261243612446124561246612476124861249612506125161252612536125461255612566125761258612596126061261612626126361264612656126661267612686126961270612716127261273612746127561276612776127861279612806128161282612836128461285612866128761288612896129061291612926129361294612956129661297612986129961300613016130261303613046130561306613076130861309613106131161312613136131461315613166131761318613196132061321613226132361324613256132661327613286132961330613316133261333613346133561336613376133861339613406134161342613436134461345613466134761348613496135061351613526135361354613556135661357613586135961360613616136261363613646136561366613676136861369613706137161372613736137461375613766137761378613796138061381613826138361384613856138661387613886138961390613916139261393613946139561396613976139861399614006140161402614036140461405614066140761408614096141061411614126141361414614156141661417614186141961420614216142261423614246142561426614276142861429614306143161432614336143461435614366143761438614396144061441614426144361444614456144661447614486144961450614516145261453614546145561456614576145861459614606146161462614636146461465614666146761468614696147061471614726147361474614756147661477614786147961480614816148261483614846148561486614876148861489614906149161492614936149461495614966149761498614996150061501615026150361504615056150661507615086150961510615116151261513615146151561516615176151861519615206152161522615236152461525615266152761528615296153061531615326153361534615356153661537615386153961540615416154261543615446154561546615476154861549615506155161552615536155461555615566155761558615596156061561615626156361564615656156661567615686156961570615716157261573615746157561576615776157861579615806158161582615836158461585615866158761588615896159061591615926159361594615956159661597615986159961600616016160261603616046160561606616076160861609616106161161612616136161461615616166161761618616196162061621616226162361624616256162661627616286162961630616316163261633616346163561636616376163861639616406164161642616436164461645616466164761648616496165061651616526165361654616556165661657616586165961660616616166261663616646166561666616676166861669616706167161672616736167461675616766167761678616796168061681616826168361684616856168661687616886168961690616916169261693616946169561696616976169861699617006170161702617036170461705617066170761708617096171061711617126171361714617156171661717617186171961720617216172261723617246172561726617276172861729617306173161732617336173461735617366173761738617396174061741617426174361744617456174661747617486174961750617516175261753617546175561756617576175861759617606176161762617636176461765617666176761768617696177061771617726177361774617756177661777617786177961780617816178261783617846178561786617876178861789617906179161792617936179461795617966179761798617996180061801618026180361804618056180661807618086180961810618116181261813618146181561816618176181861819618206182161822618236182461825618266182761828618296183061831618326183361834618356183661837618386183961840618416184261843618446184561846618476184861849618506185161852618536185461855618566185761858618596186061861618626186361864618656186661867618686186961870618716187261873618746187561876618776187861879618806188161882618836188461885618866188761888618896189061891618926189361894618956189661897618986189961900619016190261903619046190561906619076190861909619106191161912619136191461915619166191761918619196192061921619226192361924619256192661927619286192961930619316193261933619346193561936619376193861939619406194161942619436194461945619466194761948619496195061951619526195361954619556195661957619586195961960619616196261963619646196561966619676196861969619706197161972619736197461975619766197761978619796198061981619826198361984619856198661987619886198961990619916199261993619946199561996619976199861999620006200162002620036200462005620066200762008620096201062011620126201362014620156201662017620186201962020620216202262023620246202562026620276202862029620306203162032620336203462035620366203762038620396204062041620426204362044620456204662047620486204962050620516205262053620546205562056620576205862059620606206162062620636206462065620666206762068620696207062071620726207362074620756207662077620786207962080620816208262083620846208562086620876208862089620906209162092620936209462095620966209762098620996210062101621026210362104621056210662107621086210962110621116211262113621146211562116621176211862119621206212162122621236212462125621266212762128621296213062131621326213362134621356213662137621386213962140621416214262143621446214562146621476214862149621506215162152621536215462155621566215762158621596216062161621626216362164621656216662167621686216962170621716217262173621746217562176621776217862179621806218162182621836218462185621866218762188621896219062191621926219362194621956219662197621986219962200622016220262203622046220562206622076220862209622106221162212622136221462215622166221762218622196222062221622226222362224622256222662227622286222962230622316223262233622346223562236622376223862239622406224162242622436224462245622466224762248622496225062251622526225362254622556225662257622586225962260622616226262263622646226562266622676226862269622706227162272622736227462275622766227762278622796228062281622826228362284622856228662287622886228962290622916229262293622946229562296622976229862299623006230162302623036230462305623066230762308623096231062311623126231362314623156231662317623186231962320623216232262323623246232562326623276232862329623306233162332623336233462335623366233762338623396234062341623426234362344623456234662347623486234962350623516235262353623546235562356623576235862359623606236162362623636236462365623666236762368623696237062371623726237362374623756237662377623786237962380623816238262383623846238562386623876238862389623906239162392623936239462395623966239762398623996240062401624026240362404624056240662407624086240962410624116241262413624146241562416624176241862419624206242162422624236242462425624266242762428624296243062431624326243362434624356243662437624386243962440624416244262443624446244562446624476244862449624506245162452624536245462455624566245762458624596246062461624626246362464624656246662467624686246962470624716247262473624746247562476624776247862479624806248162482624836248462485624866248762488624896249062491624926249362494624956249662497624986249962500625016250262503625046250562506625076250862509625106251162512625136251462515625166251762518625196252062521625226252362524625256252662527625286252962530625316253262533625346253562536625376253862539625406254162542625436254462545625466254762548625496255062551625526255362554625556255662557625586255962560625616256262563625646256562566625676256862569625706257162572625736257462575625766257762578625796258062581625826258362584625856258662587625886258962590625916259262593625946259562596625976259862599626006260162602626036260462605626066260762608626096261062611626126261362614626156261662617626186261962620626216262262623626246262562626626276262862629626306263162632626336263462635626366263762638626396264062641626426264362644626456264662647626486264962650626516265262653626546265562656626576265862659626606266162662626636266462665626666266762668626696267062671626726267362674626756267662677626786267962680626816268262683626846268562686626876268862689626906269162692626936269462695626966269762698626996270062701627026270362704627056270662707627086270962710627116271262713627146271562716627176271862719627206272162722627236272462725627266272762728627296273062731627326273362734627356273662737627386273962740627416274262743627446274562746627476274862749627506275162752627536275462755627566275762758627596276062761627626276362764627656276662767627686276962770627716277262773627746277562776627776277862779627806278162782627836278462785627866278762788627896279062791627926279362794627956279662797627986279962800628016280262803628046280562806628076280862809628106281162812628136281462815628166281762818628196282062821628226282362824628256282662827628286282962830628316283262833628346283562836628376283862839628406284162842628436284462845628466284762848628496285062851628526285362854628556285662857628586285962860628616286262863628646286562866628676286862869628706287162872628736287462875628766287762878628796288062881628826288362884628856288662887628886288962890628916289262893628946289562896628976289862899629006290162902629036290462905629066290762908629096291062911629126291362914629156291662917629186291962920629216292262923629246292562926629276292862929629306293162932629336293462935629366293762938629396294062941629426294362944629456294662947629486294962950629516295262953629546295562956629576295862959629606296162962629636296462965629666296762968629696297062971629726297362974629756297662977629786297962980629816298262983629846298562986629876298862989629906299162992629936299462995629966299762998629996300063001630026300363004630056300663007630086300963010630116301263013630146301563016630176301863019630206302163022630236302463025630266302763028630296303063031630326303363034630356303663037630386303963040630416304263043630446304563046630476304863049630506305163052630536305463055630566305763058630596306063061630626306363064630656306663067630686306963070630716307263073630746307563076630776307863079630806308163082630836308463085630866308763088630896309063091630926309363094630956309663097630986309963100631016310263103631046310563106631076310863109631106311163112631136311463115631166311763118631196312063121631226312363124631256312663127631286312963130631316313263133631346313563136631376313863139631406314163142631436314463145631466314763148631496315063151631526315363154631556315663157631586315963160631616316263163631646316563166631676316863169631706317163172631736317463175631766317763178631796318063181631826318363184631856318663187631886318963190631916319263193631946319563196631976319863199632006320163202632036320463205632066320763208632096321063211632126321363214632156321663217632186321963220632216322263223632246322563226632276322863229632306323163232632336323463235632366323763238632396324063241632426324363244632456324663247632486324963250632516325263253632546325563256632576325863259632606326163262632636326463265632666326763268632696327063271632726327363274632756327663277632786327963280632816328263283632846328563286632876328863289632906329163292632936329463295632966329763298632996330063301633026330363304633056330663307633086330963310633116331263313633146331563316633176331863319633206332163322633236332463325633266332763328633296333063331633326333363334633356333663337633386333963340633416334263343633446334563346633476334863349633506335163352633536335463355633566335763358633596336063361633626336363364633656336663367633686336963370633716337263373633746337563376633776337863379633806338163382633836338463385633866338763388633896339063391633926339363394633956339663397633986339963400634016340263403634046340563406634076340863409634106341163412634136341463415634166341763418634196342063421634226342363424634256342663427634286342963430634316343263433634346343563436634376343863439634406344163442634436344463445634466344763448634496345063451634526345363454634556345663457634586345963460634616346263463634646346563466634676346863469634706347163472634736347463475634766347763478634796348063481634826348363484634856348663487634886348963490634916349263493634946349563496634976349863499635006350163502635036350463505635066350763508635096351063511635126351363514635156351663517635186351963520635216352263523635246352563526635276352863529635306353163532635336353463535635366353763538635396354063541635426354363544635456354663547635486354963550635516355263553635546355563556635576355863559635606356163562635636356463565635666356763568635696357063571635726357363574635756357663577635786357963580635816358263583635846358563586635876358863589635906359163592635936359463595635966359763598635996360063601636026360363604636056360663607636086360963610636116361263613636146361563616636176361863619636206362163622636236362463625636266362763628636296363063631636326363363634636356363663637636386363963640636416364263643636446364563646636476364863649636506365163652636536365463655636566365763658636596366063661636626366363664636656366663667636686366963670636716367263673636746367563676636776367863679636806368163682636836368463685636866368763688636896369063691636926369363694636956369663697636986369963700637016370263703637046370563706637076370863709637106371163712637136371463715637166371763718637196372063721637226372363724637256372663727637286372963730637316373263733637346373563736637376373863739637406374163742637436374463745637466374763748637496375063751637526375363754637556375663757637586375963760637616376263763637646376563766637676376863769637706377163772637736377463775637766377763778637796378063781637826378363784637856378663787637886378963790637916379263793637946379563796637976379863799638006380163802638036380463805638066380763808638096381063811638126381363814638156381663817638186381963820638216382263823638246382563826638276382863829638306383163832638336383463835638366383763838638396384063841638426384363844638456384663847638486384963850638516385263853638546385563856638576385863859638606386163862638636386463865638666386763868638696387063871638726387363874638756387663877638786387963880638816388263883638846388563886638876388863889638906389163892638936389463895638966389763898638996390063901639026390363904639056390663907639086390963910639116391263913639146391563916639176391863919639206392163922639236392463925639266392763928639296393063931639326393363934639356393663937639386393963940639416394263943639446394563946639476394863949639506395163952639536395463955639566395763958639596396063961639626396363964639656396663967639686396963970639716397263973639746397563976639776397863979639806398163982639836398463985639866398763988639896399063991639926399363994639956399663997639986399964000640016400264003640046400564006640076400864009640106401164012640136401464015640166401764018640196402064021640226402364024640256402664027640286402964030640316403264033640346403564036640376403864039640406404164042640436404464045640466404764048640496405064051640526405364054640556405664057640586405964060640616406264063640646406564066640676406864069640706407164072640736407464075640766407764078640796408064081640826408364084640856408664087640886408964090640916409264093640946409564096640976409864099641006410164102641036410464105641066410764108641096411064111641126411364114641156411664117641186411964120641216412264123641246412564126641276412864129641306413164132641336413464135641366413764138641396414064141641426414364144641456414664147641486414964150641516415264153641546415564156641576415864159641606416164162641636416464165641666416764168641696417064171641726417364174641756417664177641786417964180641816418264183641846418564186641876418864189641906419164192641936419464195641966419764198641996420064201642026420364204642056420664207642086420964210642116421264213642146421564216642176421864219642206422164222642236422464225642266422764228642296423064231642326423364234642356423664237642386423964240642416424264243642446424564246642476424864249642506425164252642536425464255642566425764258642596426064261642626426364264642656426664267642686426964270642716427264273642746427564276642776427864279642806428164282642836428464285642866428764288642896429064291642926429364294642956429664297642986429964300643016430264303643046430564306643076430864309643106431164312643136431464315643166431764318643196432064321643226432364324643256432664327643286432964330643316433264333643346433564336643376433864339643406434164342643436434464345643466434764348643496435064351643526435364354643556435664357643586435964360643616436264363643646436564366643676436864369643706437164372643736437464375643766437764378643796438064381643826438364384643856438664387643886438964390643916439264393643946439564396643976439864399644006440164402644036440464405644066440764408644096441064411644126441364414644156441664417644186441964420644216442264423644246442564426644276442864429644306443164432644336443464435644366443764438644396444064441644426444364444644456444664447644486444964450644516445264453644546445564456644576445864459644606446164462644636446464465644666446764468644696447064471644726447364474644756447664477644786447964480644816448264483644846448564486644876448864489644906449164492644936449464495644966449764498644996450064501645026450364504645056450664507645086450964510645116451264513645146451564516645176451864519645206452164522645236452464525645266452764528645296453064531645326453364534645356453664537645386453964540645416454264543645446454564546645476454864549645506455164552645536455464555645566455764558645596456064561645626456364564645656456664567645686456964570645716457264573645746457564576645776457864579645806458164582645836458464585645866458764588645896459064591645926459364594645956459664597645986459964600646016460264603646046460564606646076460864609646106461164612646136461464615646166461764618646196462064621646226462364624646256462664627646286462964630646316463264633646346463564636646376463864639646406464164642646436464464645646466464764648646496465064651646526465364654646556465664657646586465964660646616466264663646646466564666646676466864669646706467164672646736467464675646766467764678646796468064681646826468364684646856468664687646886468964690646916469264693646946469564696646976469864699647006470164702647036470464705647066470764708647096471064711647126471364714647156471664717647186471964720647216472264723647246472564726647276472864729647306473164732647336473464735647366473764738647396474064741647426474364744647456474664747647486474964750647516475264753647546475564756647576475864759647606476164762647636476464765647666476764768647696477064771647726477364774647756477664777647786477964780647816478264783647846478564786647876478864789647906479164792647936479464795647966479764798647996480064801648026480364804648056480664807648086480964810648116481264813648146481564816648176481864819648206482164822648236482464825648266482764828648296483064831648326483364834648356483664837648386483964840648416484264843648446484564846648476484864849648506485164852648536485464855648566485764858648596486064861648626486364864648656486664867648686486964870648716487264873648746487564876648776487864879648806488164882648836488464885648866488764888648896489064891648926489364894648956489664897648986489964900649016490264903649046490564906649076490864909649106491164912649136491464915649166491764918649196492064921649226492364924649256492664927649286492964930649316493264933649346493564936649376493864939649406494164942649436494464945649466494764948649496495064951649526495364954649556495664957649586495964960649616496264963649646496564966649676496864969649706497164972649736497464975649766497764978649796498064981649826498364984649856498664987649886498964990649916499264993649946499564996649976499864999650006500165002650036500465005650066500765008650096501065011650126501365014650156501665017650186501965020650216502265023650246502565026650276502865029650306503165032650336503465035650366503765038650396504065041650426504365044650456504665047650486504965050650516505265053650546505565056650576505865059650606506165062650636506465065650666506765068650696507065071650726507365074650756507665077650786507965080650816508265083650846508565086650876508865089650906509165092650936509465095650966509765098650996510065101651026510365104651056510665107651086510965110651116511265113651146511565116651176511865119651206512165122651236512465125651266512765128651296513065131651326513365134651356513665137651386513965140651416514265143651446514565146651476514865149651506515165152651536515465155651566515765158651596516065161651626516365164651656516665167651686516965170651716517265173651746517565176651776517865179651806518165182651836518465185651866518765188651896519065191651926519365194651956519665197651986519965200652016520265203652046520565206652076520865209652106521165212652136521465215652166521765218652196522065221652226522365224652256522665227652286522965230652316523265233652346523565236652376523865239652406524165242652436524465245652466524765248652496525065251652526525365254652556525665257652586525965260652616526265263652646526565266652676526865269652706527165272652736527465275652766527765278652796528065281652826528365284652856528665287652886528965290652916529265293652946529565296652976529865299653006530165302653036530465305653066530765308653096531065311653126531365314653156531665317653186531965320653216532265323653246532565326653276532865329653306533165332653336533465335653366533765338653396534065341653426534365344653456534665347653486534965350653516535265353653546535565356653576535865359653606536165362653636536465365653666536765368653696537065371653726537365374653756537665377653786537965380653816538265383653846538565386653876538865389653906539165392653936539465395653966539765398653996540065401654026540365404654056540665407654086540965410654116541265413654146541565416654176541865419654206542165422654236542465425654266542765428654296543065431654326543365434654356543665437654386543965440654416544265443654446544565446654476544865449654506545165452654536545465455654566545765458654596546065461654626546365464654656546665467654686546965470654716547265473654746547565476654776547865479654806548165482654836548465485654866548765488654896549065491654926549365494654956549665497654986549965500655016550265503655046550565506655076550865509655106551165512655136551465515655166551765518655196552065521655226552365524655256552665527655286552965530655316553265533655346553565536655376553865539655406554165542655436554465545655466554765548655496555065551655526555365554655556555665557655586555965560655616556265563655646556565566655676556865569655706557165572655736557465575655766557765578655796558065581655826558365584655856558665587655886558965590655916559265593655946559565596655976559865599656006560165602656036560465605656066560765608656096561065611656126561365614656156561665617656186561965620656216562265623656246562565626656276562865629656306563165632656336563465635656366563765638656396564065641656426564365644656456564665647656486564965650656516565265653656546565565656656576565865659656606566165662656636566465665656666566765668656696567065671656726567365674656756567665677656786567965680656816568265683656846568565686656876568865689656906569165692656936569465695656966569765698656996570065701657026570365704657056570665707657086570965710657116571265713657146571565716657176571865719657206572165722657236572465725657266572765728657296573065731657326573365734657356573665737657386573965740657416574265743657446574565746657476574865749657506575165752657536575465755657566575765758657596576065761657626576365764657656576665767657686576965770657716577265773657746577565776657776577865779657806578165782657836578465785657866578765788657896579065791657926579365794657956579665797657986579965800658016580265803658046580565806658076580865809658106581165812658136581465815658166581765818658196582065821658226582365824658256582665827658286582965830658316583265833658346583565836658376583865839658406584165842658436584465845658466584765848658496585065851658526585365854658556585665857658586585965860658616586265863658646586565866658676586865869658706587165872658736587465875658766587765878658796588065881658826588365884658856588665887658886588965890658916589265893658946589565896658976589865899659006590165902659036590465905659066590765908659096591065911659126591365914659156591665917659186591965920659216592265923659246592565926659276592865929659306593165932659336593465935659366593765938659396594065941659426594365944659456594665947659486594965950659516595265953659546595565956659576595865959659606596165962659636596465965659666596765968659696597065971659726597365974659756597665977659786597965980659816598265983659846598565986659876598865989659906599165992659936599465995659966599765998659996600066001660026600366004660056600666007660086600966010660116601266013660146601566016660176601866019660206602166022660236602466025660266602766028660296603066031660326603366034660356603666037660386603966040660416604266043660446604566046660476604866049660506605166052660536605466055660566605766058660596606066061660626606366064660656606666067660686606966070660716607266073660746607566076660776607866079660806608166082660836608466085660866608766088660896609066091660926609366094660956609666097660986609966100661016610266103661046610566106661076610866109661106611166112661136611466115661166611766118661196612066121661226612366124661256612666127661286612966130661316613266133661346613566136661376613866139661406614166142661436614466145661466614766148661496615066151661526615366154661556615666157661586615966160661616616266163661646616566166661676616866169661706617166172661736617466175661766617766178661796618066181661826618366184661856618666187661886618966190661916619266193661946619566196661976619866199662006620166202662036620466205662066620766208662096621066211662126621366214662156621666217662186621966220662216622266223662246622566226662276622866229662306623166232662336623466235662366623766238662396624066241662426624366244662456624666247662486624966250662516625266253662546625566256662576625866259662606626166262662636626466265662666626766268662696627066271662726627366274662756627666277662786627966280662816628266283662846628566286662876628866289662906629166292662936629466295662966629766298662996630066301663026630366304663056630666307663086630966310663116631266313663146631566316663176631866319663206632166322663236632466325663266632766328663296633066331663326633366334663356633666337663386633966340663416634266343663446634566346663476634866349663506635166352663536635466355663566635766358663596636066361663626636366364663656636666367663686636966370663716637266373663746637566376663776637866379663806638166382663836638466385663866638766388663896639066391663926639366394663956639666397663986639966400664016640266403664046640566406664076640866409664106641166412664136641466415664166641766418664196642066421664226642366424664256642666427664286642966430664316643266433664346643566436664376643866439664406644166442664436644466445664466644766448664496645066451664526645366454664556645666457664586645966460664616646266463664646646566466664676646866469664706647166472664736647466475664766647766478664796648066481664826648366484664856648666487664886648966490664916649266493664946649566496664976649866499665006650166502665036650466505665066650766508665096651066511665126651366514665156651666517665186651966520665216652266523665246652566526665276652866529665306653166532665336653466535665366653766538665396654066541665426654366544665456654666547665486654966550665516655266553665546655566556665576655866559665606656166562665636656466565665666656766568665696657066571665726657366574665756657666577665786657966580665816658266583665846658566586665876658866589665906659166592665936659466595665966659766598665996660066601666026660366604666056660666607666086660966610666116661266613666146661566616666176661866619666206662166622666236662466625666266662766628666296663066631666326663366634666356663666637666386663966640666416664266643666446664566646666476664866649666506665166652666536665466655666566665766658666596666066661666626666366664666656666666667666686666966670666716667266673666746667566676666776667866679666806668166682666836668466685666866668766688666896669066691666926669366694666956669666697666986669966700667016670266703667046670566706667076670866709667106671166712667136671466715667166671766718667196672066721667226672366724667256672666727667286672966730667316673266733667346673566736667376673866739667406674166742667436674466745667466674766748667496675066751667526675366754667556675666757667586675966760667616676266763667646676566766667676676866769667706677166772667736677466775667766677766778667796678066781667826678366784667856678666787667886678966790667916679266793667946679566796667976679866799668006680166802668036680466805668066680766808668096681066811668126681366814668156681666817668186681966820668216682266823668246682566826668276682866829668306683166832668336683466835668366683766838668396684066841668426684366844668456684666847668486684966850668516685266853668546685566856668576685866859668606686166862668636686466865668666686766868668696687066871668726687366874668756687666877668786687966880668816688266883668846688566886668876688866889668906689166892668936689466895668966689766898668996690066901669026690366904669056690666907669086690966910669116691266913669146691566916669176691866919669206692166922669236692466925669266692766928669296693066931669326693366934669356693666937669386693966940669416694266943669446694566946669476694866949669506695166952669536695466955669566695766958669596696066961669626696366964669656696666967669686696966970669716697266973669746697566976669776697866979669806698166982669836698466985669866698766988669896699066991669926699366994669956699666997669986699967000670016700267003670046700567006670076700867009670106701167012670136701467015670166701767018670196702067021670226702367024670256702667027670286702967030670316703267033670346703567036670376703867039670406704167042670436704467045670466704767048670496705067051670526705367054670556705667057670586705967060670616706267063670646706567066670676706867069670706707167072670736707467075670766707767078670796708067081670826708367084670856708667087670886708967090670916709267093670946709567096670976709867099671006710167102671036710467105671066710767108671096711067111671126711367114671156711667117671186711967120671216712267123671246712567126671276712867129671306713167132671336713467135671366713767138671396714067141671426714367144671456714667147671486714967150671516715267153671546715567156671576715867159671606716167162671636716467165671666716767168671696717067171671726717367174671756717667177671786717967180671816718267183671846718567186671876718867189671906719167192671936719467195671966719767198671996720067201672026720367204672056720667207672086720967210672116721267213672146721567216672176721867219672206722167222672236722467225672266722767228672296723067231672326723367234672356723667237672386723967240672416724267243672446724567246672476724867249672506725167252672536725467255672566725767258672596726067261672626726367264672656726667267672686726967270672716727267273672746727567276672776727867279672806728167282672836728467285672866728767288672896729067291672926729367294672956729667297672986729967300673016730267303673046730567306673076730867309673106731167312673136731467315673166731767318673196732067321673226732367324673256732667327673286732967330673316733267333673346733567336673376733867339673406734167342673436734467345673466734767348673496735067351673526735367354673556735667357673586735967360673616736267363673646736567366673676736867369673706737167372673736737467375673766737767378673796738067381673826738367384673856738667387673886738967390673916739267393673946739567396673976739867399674006740167402674036740467405674066740767408674096741067411674126741367414674156741667417674186741967420674216742267423674246742567426674276742867429674306743167432674336743467435674366743767438674396744067441674426744367444674456744667447674486744967450674516745267453674546745567456674576745867459674606746167462674636746467465674666746767468674696747067471674726747367474674756747667477674786747967480674816748267483674846748567486674876748867489674906749167492674936749467495674966749767498674996750067501675026750367504675056750667507675086750967510675116751267513675146751567516675176751867519675206752167522675236752467525675266752767528675296753067531675326753367534675356753667537675386753967540675416754267543675446754567546675476754867549675506755167552675536755467555675566755767558675596756067561675626756367564675656756667567675686756967570675716757267573675746757567576675776757867579675806758167582675836758467585675866758767588675896759067591675926759367594675956759667597675986759967600676016760267603676046760567606676076760867609676106761167612676136761467615676166761767618676196762067621676226762367624676256762667627676286762967630676316763267633676346763567636676376763867639676406764167642676436764467645676466764767648676496765067651676526765367654676556765667657676586765967660676616766267663676646766567666676676766867669676706767167672676736767467675676766767767678676796768067681676826768367684676856768667687676886768967690676916769267693676946769567696676976769867699677006770167702677036770467705677066770767708677096771067711677126771367714677156771667717677186771967720677216772267723677246772567726677276772867729677306773167732677336773467735677366773767738677396774067741677426774367744677456774667747677486774967750677516775267753677546775567756677576775867759677606776167762677636776467765677666776767768677696777067771677726777367774677756777667777677786777967780677816778267783677846778567786677876778867789677906779167792677936779467795677966779767798677996780067801678026780367804678056780667807678086780967810678116781267813678146781567816678176781867819678206782167822678236782467825678266782767828678296783067831678326783367834678356783667837678386783967840678416784267843678446784567846678476784867849678506785167852678536785467855678566785767858678596786067861678626786367864678656786667867678686786967870678716787267873678746787567876678776787867879678806788167882678836788467885678866788767888678896789067891678926789367894678956789667897678986789967900679016790267903679046790567906679076790867909679106791167912679136791467915679166791767918679196792067921679226792367924679256792667927679286792967930679316793267933679346793567936679376793867939679406794167942679436794467945679466794767948679496795067951679526795367954679556795667957679586795967960679616796267963679646796567966679676796867969679706797167972679736797467975679766797767978679796798067981679826798367984679856798667987679886798967990679916799267993679946799567996679976799867999680006800168002680036800468005680066800768008680096801068011680126801368014680156801668017680186801968020680216802268023680246802568026680276802868029680306803168032680336803468035680366803768038680396804068041680426804368044680456804668047680486804968050680516805268053680546805568056680576805868059680606806168062680636806468065680666806768068680696807068071680726807368074680756807668077680786807968080680816808268083680846808568086680876808868089680906809168092680936809468095680966809768098680996810068101681026810368104681056810668107681086810968110681116811268113681146811568116681176811868119681206812168122681236812468125681266812768128681296813068131681326813368134681356813668137681386813968140681416814268143681446814568146681476814868149681506815168152681536815468155681566815768158681596816068161681626816368164681656816668167681686816968170681716817268173681746817568176681776817868179681806818168182681836818468185681866818768188681896819068191681926819368194681956819668197681986819968200682016820268203682046820568206682076820868209682106821168212682136821468215682166821768218682196822068221682226822368224682256822668227682286822968230682316823268233682346823568236682376823868239682406824168242682436824468245682466824768248682496825068251682526825368254682556825668257682586825968260682616826268263682646826568266682676826868269682706827168272682736827468275682766827768278682796828068281682826828368284682856828668287682886828968290682916829268293682946829568296682976829868299683006830168302683036830468305683066830768308683096831068311683126831368314683156831668317683186831968320683216832268323683246832568326683276832868329683306833168332683336833468335683366833768338683396834068341683426834368344683456834668347683486834968350683516835268353683546835568356683576835868359683606836168362683636836468365683666836768368683696837068371683726837368374683756837668377683786837968380683816838268383683846838568386683876838868389683906839168392683936839468395683966839768398683996840068401684026840368404684056840668407684086840968410684116841268413684146841568416684176841868419684206842168422684236842468425684266842768428684296843068431684326843368434684356843668437684386843968440684416844268443684446844568446684476844868449684506845168452684536845468455684566845768458684596846068461684626846368464684656846668467684686846968470684716847268473684746847568476684776847868479684806848168482684836848468485684866848768488684896849068491684926849368494684956849668497684986849968500685016850268503685046850568506685076850868509685106851168512685136851468515685166851768518685196852068521685226852368524685256852668527685286852968530685316853268533685346853568536685376853868539685406854168542685436854468545685466854768548685496855068551685526855368554685556855668557685586855968560685616856268563685646856568566685676856868569685706857168572685736857468575685766857768578685796858068581685826858368584685856858668587685886858968590685916859268593685946859568596685976859868599686006860168602686036860468605686066860768608686096861068611686126861368614686156861668617686186861968620686216862268623686246862568626686276862868629686306863168632686336863468635686366863768638686396864068641686426864368644686456864668647686486864968650686516865268653686546865568656686576865868659686606866168662686636866468665686666866768668686696867068671686726867368674686756867668677686786867968680686816868268683686846868568686686876868868689686906869168692686936869468695686966869768698686996870068701687026870368704687056870668707687086870968710687116871268713687146871568716687176871868719687206872168722687236872468725687266872768728687296873068731687326873368734687356873668737687386873968740687416874268743687446874568746687476874868749687506875168752687536875468755687566875768758687596876068761687626876368764687656876668767687686876968770687716877268773687746877568776687776877868779687806878168782687836878468785687866878768788687896879068791687926879368794687956879668797687986879968800688016880268803688046880568806688076880868809688106881168812688136881468815688166881768818688196882068821688226882368824688256882668827688286882968830688316883268833688346883568836688376883868839688406884168842688436884468845688466884768848688496885068851688526885368854688556885668857688586885968860688616886268863688646886568866688676886868869688706887168872688736887468875688766887768878688796888068881688826888368884688856888668887688886888968890688916889268893688946889568896688976889868899689006890168902689036890468905689066890768908689096891068911689126891368914689156891668917689186891968920689216892268923689246892568926689276892868929689306893168932689336893468935689366893768938689396894068941689426894368944689456894668947689486894968950689516895268953689546895568956689576895868959689606896168962689636896468965689666896768968689696897068971689726897368974689756897668977689786897968980689816898268983689846898568986689876898868989689906899168992689936899468995689966899768998689996900069001690026900369004690056900669007690086900969010690116901269013690146901569016690176901869019690206902169022690236902469025690266902769028690296903069031690326903369034690356903669037690386903969040690416904269043690446904569046690476904869049690506905169052690536905469055690566905769058690596906069061690626906369064690656906669067690686906969070690716907269073690746907569076690776907869079690806908169082690836908469085690866908769088690896909069091690926909369094690956909669097690986909969100691016910269103691046910569106691076910869109691106911169112691136911469115691166911769118691196912069121691226912369124691256912669127691286912969130691316913269133691346913569136691376913869139691406914169142691436914469145691466914769148691496915069151691526915369154691556915669157691586915969160691616916269163691646916569166691676916869169691706917169172691736917469175691766917769178691796918069181691826918369184691856918669187691886918969190691916919269193691946919569196691976919869199692006920169202692036920469205692066920769208692096921069211692126921369214692156921669217692186921969220692216922269223692246922569226692276922869229692306923169232692336923469235692366923769238692396924069241692426924369244692456924669247692486924969250692516925269253692546925569256692576925869259692606926169262692636926469265692666926769268692696927069271692726927369274692756927669277692786927969280692816928269283692846928569286692876928869289692906929169292692936929469295692966929769298692996930069301693026930369304693056930669307693086930969310693116931269313693146931569316693176931869319693206932169322693236932469325693266932769328693296933069331693326933369334693356933669337693386933969340693416934269343693446934569346693476934869349693506935169352693536935469355693566935769358693596936069361693626936369364693656936669367693686936969370693716937269373693746937569376693776937869379693806938169382693836938469385693866938769388693896939069391693926939369394693956939669397693986939969400694016940269403694046940569406694076940869409694106941169412694136941469415694166941769418694196942069421694226942369424694256942669427694286942969430694316943269433694346943569436694376943869439694406944169442694436944469445694466944769448694496945069451694526945369454694556945669457694586945969460694616946269463694646946569466694676946869469694706947169472694736947469475694766947769478694796948069481694826948369484694856948669487694886948969490694916949269493694946949569496694976949869499695006950169502695036950469505695066950769508695096951069511695126951369514695156951669517695186951969520695216952269523695246952569526695276952869529695306953169532695336953469535695366953769538695396954069541695426954369544695456954669547695486954969550695516955269553695546955569556695576955869559695606956169562695636956469565695666956769568695696957069571695726957369574695756957669577695786957969580695816958269583695846958569586695876958869589695906959169592695936959469595695966959769598695996960069601696026960369604696056960669607696086960969610696116961269613696146961569616696176961869619696206962169622696236962469625696266962769628696296963069631696326963369634696356963669637696386963969640696416964269643696446964569646696476964869649696506965169652696536965469655696566965769658696596966069661696626966369664696656966669667696686966969670696716967269673696746967569676696776967869679696806968169682696836968469685696866968769688696896969069691696926969369694696956969669697696986969969700697016970269703697046970569706697076970869709697106971169712697136971469715697166971769718697196972069721697226972369724697256972669727697286972969730697316973269733697346973569736697376973869739697406974169742697436974469745697466974769748697496975069751697526975369754697556975669757697586975969760697616976269763697646976569766697676976869769697706977169772697736977469775697766977769778697796978069781697826978369784697856978669787697886978969790697916979269793697946979569796697976979869799698006980169802698036980469805698066980769808698096981069811698126981369814698156981669817698186981969820698216982269823698246982569826698276982869829698306983169832698336983469835698366983769838698396984069841698426984369844698456984669847698486984969850698516985269853698546985569856698576985869859698606986169862698636986469865698666986769868698696987069871698726987369874698756987669877698786987969880698816988269883698846988569886698876988869889698906989169892698936989469895698966989769898698996990069901699026990369904699056990669907699086990969910699116991269913699146991569916699176991869919699206992169922699236992469925699266992769928699296993069931699326993369934699356993669937699386993969940699416994269943699446994569946699476994869949699506995169952699536995469955699566995769958699596996069961699626996369964699656996669967699686996969970699716997269973699746997569976699776997869979699806998169982699836998469985699866998769988699896999069991699926999369994699956999669997699986999970000700017000270003700047000570006700077000870009700107001170012700137001470015700167001770018700197002070021700227002370024700257002670027700287002970030700317003270033700347003570036700377003870039700407004170042700437004470045700467004770048700497005070051700527005370054700557005670057700587005970060700617006270063700647006570066700677006870069700707007170072700737007470075700767007770078700797008070081700827008370084700857008670087700887008970090700917009270093700947009570096700977009870099701007010170102701037010470105701067010770108701097011070111701127011370114701157011670117701187011970120701217012270123701247012570126701277012870129701307013170132701337013470135701367013770138701397014070141701427014370144701457014670147701487014970150701517015270153701547015570156701577015870159701607016170162701637016470165701667016770168701697017070171701727017370174701757017670177701787017970180701817018270183701847018570186701877018870189701907019170192701937019470195701967019770198701997020070201702027020370204702057020670207702087020970210702117021270213702147021570216702177021870219702207022170222702237022470225702267022770228702297023070231702327023370234702357023670237702387023970240702417024270243702447024570246702477024870249702507025170252702537025470255702567025770258702597026070261702627026370264702657026670267702687026970270702717027270273702747027570276702777027870279702807028170282702837028470285702867028770288702897029070291702927029370294702957029670297702987029970300703017030270303703047030570306703077030870309703107031170312703137031470315703167031770318703197032070321703227032370324703257032670327703287032970330703317033270333703347033570336703377033870339703407034170342703437034470345703467034770348703497035070351703527035370354703557035670357703587035970360703617036270363703647036570366703677036870369703707037170372703737037470375703767037770378703797038070381703827038370384703857038670387703887038970390703917039270393703947039570396703977039870399704007040170402704037040470405704067040770408704097041070411704127041370414704157041670417704187041970420704217042270423704247042570426704277042870429704307043170432704337043470435704367043770438704397044070441704427044370444704457044670447704487044970450704517045270453704547045570456704577045870459704607046170462704637046470465704667046770468704697047070471704727047370474704757047670477704787047970480704817048270483704847048570486704877048870489704907049170492704937049470495704967049770498704997050070501705027050370504705057050670507705087050970510705117051270513705147051570516705177051870519705207052170522705237052470525705267052770528705297053070531705327053370534705357053670537705387053970540705417054270543705447054570546705477054870549705507055170552705537055470555705567055770558705597056070561705627056370564705657056670567705687056970570705717057270573705747057570576705777057870579705807058170582705837058470585705867058770588705897059070591705927059370594705957059670597705987059970600706017060270603706047060570606706077060870609706107061170612706137061470615706167061770618706197062070621706227062370624706257062670627706287062970630706317063270633706347063570636706377063870639706407064170642706437064470645706467064770648706497065070651706527065370654706557065670657706587065970660706617066270663706647066570666706677066870669706707067170672706737067470675706767067770678706797068070681706827068370684706857068670687706887068970690706917069270693706947069570696706977069870699707007070170702707037070470705707067070770708707097071070711707127071370714707157071670717707187071970720707217072270723707247072570726707277072870729707307073170732707337073470735707367073770738707397074070741707427074370744707457074670747707487074970750707517075270753707547075570756707577075870759707607076170762707637076470765707667076770768707697077070771707727077370774707757077670777707787077970780707817078270783707847078570786707877078870789707907079170792707937079470795707967079770798707997080070801708027080370804708057080670807708087080970810708117081270813708147081570816708177081870819708207082170822708237082470825708267082770828708297083070831708327083370834708357083670837708387083970840708417084270843708447084570846708477084870849708507085170852708537085470855708567085770858708597086070861708627086370864708657086670867708687086970870708717087270873708747087570876708777087870879708807088170882708837088470885708867088770888708897089070891708927089370894708957089670897708987089970900709017090270903709047090570906709077090870909709107091170912709137091470915709167091770918709197092070921709227092370924709257092670927709287092970930709317093270933709347093570936709377093870939709407094170942709437094470945709467094770948709497095070951709527095370954709557095670957709587095970960709617096270963709647096570966709677096870969709707097170972709737097470975709767097770978709797098070981709827098370984709857098670987709887098970990709917099270993709947099570996709977099870999710007100171002710037100471005710067100771008710097101071011710127101371014710157101671017710187101971020710217102271023710247102571026710277102871029710307103171032710337103471035710367103771038710397104071041710427104371044710457104671047710487104971050710517105271053710547105571056710577105871059710607106171062710637106471065710667106771068710697107071071710727107371074710757107671077710787107971080710817108271083710847108571086710877108871089710907109171092710937109471095710967109771098710997110071101711027110371104711057110671107711087110971110711117111271113711147111571116711177111871119711207112171122711237112471125711267112771128711297113071131711327113371134711357113671137711387113971140711417114271143711447114571146711477114871149711507115171152711537115471155711567115771158711597116071161711627116371164711657116671167711687116971170711717117271173711747117571176711777117871179711807118171182711837118471185711867118771188711897119071191711927119371194711957119671197711987119971200712017120271203712047120571206712077120871209712107121171212712137121471215712167121771218712197122071221712227122371224712257122671227712287122971230712317123271233712347123571236712377123871239712407124171242712437124471245712467124771248712497125071251712527125371254712557125671257712587125971260712617126271263712647126571266712677126871269712707127171272712737127471275712767127771278712797128071281712827128371284712857128671287712887128971290712917129271293712947129571296712977129871299713007130171302713037130471305713067130771308713097131071311713127131371314713157131671317713187131971320713217132271323713247132571326713277132871329713307133171332713337133471335713367133771338713397134071341713427134371344713457134671347713487134971350713517135271353713547135571356713577135871359713607136171362713637136471365713667136771368713697137071371713727137371374713757137671377713787137971380713817138271383713847138571386713877138871389713907139171392713937139471395713967139771398713997140071401714027140371404714057140671407714087140971410714117141271413714147141571416714177141871419714207142171422714237142471425714267142771428714297143071431714327143371434714357143671437714387143971440714417144271443714447144571446714477144871449714507145171452714537145471455714567145771458714597146071461714627146371464714657146671467714687146971470714717147271473714747147571476714777147871479714807148171482714837148471485714867148771488714897149071491714927149371494714957149671497714987149971500715017150271503715047150571506715077150871509715107151171512715137151471515715167151771518715197152071521715227152371524715257152671527715287152971530715317153271533715347153571536715377153871539715407154171542715437154471545715467154771548715497155071551715527155371554715557155671557715587155971560715617156271563715647156571566715677156871569715707157171572715737157471575715767157771578715797158071581715827158371584715857158671587715887158971590715917159271593715947159571596715977159871599716007160171602716037160471605716067160771608716097161071611716127161371614716157161671617716187161971620716217162271623716247162571626716277162871629716307163171632716337163471635716367163771638716397164071641716427164371644716457164671647716487164971650716517165271653716547165571656716577165871659716607166171662716637166471665716667166771668716697167071671716727167371674716757167671677716787167971680716817168271683716847168571686716877168871689716907169171692716937169471695716967169771698716997170071701717027170371704717057170671707717087170971710717117171271713717147171571716717177171871719717207172171722717237172471725717267172771728717297173071731717327173371734717357173671737717387173971740717417174271743717447174571746717477174871749717507175171752717537175471755717567175771758717597176071761717627176371764717657176671767717687176971770717717177271773717747177571776717777177871779717807178171782717837178471785717867178771788717897179071791717927179371794717957179671797717987179971800718017180271803718047180571806718077180871809718107181171812718137181471815718167181771818718197182071821718227182371824718257182671827718287182971830718317183271833718347183571836718377183871839718407184171842718437184471845718467184771848718497185071851718527185371854718557185671857718587185971860718617186271863718647186571866718677186871869718707187171872718737187471875718767187771878718797188071881718827188371884718857188671887718887188971890718917189271893718947189571896718977189871899719007190171902719037190471905719067190771908719097191071911719127191371914719157191671917719187191971920719217192271923719247192571926719277192871929719307193171932719337193471935719367193771938719397194071941719427194371944719457194671947719487194971950719517195271953719547195571956719577195871959719607196171962719637196471965719667196771968719697197071971719727197371974719757197671977719787197971980719817198271983719847198571986719877198871989719907199171992719937199471995719967199771998719997200072001720027200372004720057200672007720087200972010720117201272013720147201572016720177201872019720207202172022720237202472025720267202772028720297203072031720327203372034720357203672037720387203972040720417204272043720447204572046720477204872049720507205172052720537205472055720567205772058720597206072061720627206372064720657206672067720687206972070720717207272073720747207572076720777207872079720807208172082720837208472085720867208772088720897209072091720927209372094720957209672097720987209972100721017210272103721047210572106721077210872109721107211172112721137211472115721167211772118721197212072121721227212372124721257212672127721287212972130721317213272133721347213572136721377213872139721407214172142721437214472145721467214772148721497215072151721527215372154721557215672157721587215972160721617216272163721647216572166721677216872169721707217172172721737217472175721767217772178721797218072181721827218372184721857218672187721887218972190721917219272193721947219572196721977219872199722007220172202722037220472205722067220772208722097221072211722127221372214722157221672217722187221972220722217222272223722247222572226722277222872229722307223172232722337223472235722367223772238722397224072241722427224372244722457224672247722487224972250722517225272253722547225572256722577225872259722607226172262722637226472265722667226772268722697227072271722727227372274722757227672277722787227972280722817228272283722847228572286722877228872289722907229172292722937229472295722967229772298722997230072301723027230372304723057230672307723087230972310723117231272313723147231572316723177231872319723207232172322723237232472325723267232772328723297233072331723327233372334723357233672337723387233972340723417234272343723447234572346723477234872349723507235172352723537235472355723567235772358723597236072361723627236372364723657236672367723687236972370723717237272373723747237572376723777237872379723807238172382723837238472385723867238772388723897239072391723927239372394723957239672397723987239972400724017240272403724047240572406724077240872409724107241172412724137241472415724167241772418724197242072421724227242372424724257242672427724287242972430724317243272433724347243572436724377243872439724407244172442724437244472445724467244772448724497245072451724527245372454724557245672457724587245972460724617246272463724647246572466724677246872469724707247172472724737247472475724767247772478724797248072481724827248372484724857248672487724887248972490724917249272493724947249572496724977249872499725007250172502725037250472505725067250772508725097251072511725127251372514725157251672517725187251972520725217252272523725247252572526725277252872529725307253172532725337253472535725367253772538725397254072541725427254372544725457254672547725487254972550725517255272553725547255572556725577255872559725607256172562725637256472565725667256772568725697257072571725727257372574725757257672577725787257972580725817258272583725847258572586725877258872589725907259172592725937259472595725967259772598725997260072601726027260372604726057260672607726087260972610726117261272613726147261572616726177261872619726207262172622726237262472625726267262772628726297263072631726327263372634726357263672637726387263972640726417264272643726447264572646726477264872649726507265172652726537265472655726567265772658726597266072661726627266372664726657266672667726687266972670726717267272673726747267572676726777267872679726807268172682726837268472685726867268772688726897269072691726927269372694726957269672697726987269972700727017270272703727047270572706727077270872709727107271172712727137271472715727167271772718727197272072721727227272372724727257272672727727287272972730727317273272733727347273572736727377273872739727407274172742727437274472745727467274772748727497275072751727527275372754727557275672757727587275972760727617276272763727647276572766727677276872769727707277172772727737277472775727767277772778727797278072781727827278372784727857278672787727887278972790727917279272793727947279572796727977279872799728007280172802728037280472805728067280772808728097281072811728127281372814728157281672817728187281972820728217282272823728247282572826728277282872829728307283172832728337283472835728367283772838728397284072841728427284372844728457284672847728487284972850728517285272853728547285572856728577285872859728607286172862728637286472865728667286772868728697287072871728727287372874728757287672877728787287972880728817288272883728847288572886728877288872889728907289172892728937289472895728967289772898728997290072901729027290372904729057290672907729087290972910729117291272913729147291572916729177291872919729207292172922729237292472925729267292772928729297293072931729327293372934729357293672937729387293972940729417294272943729447294572946729477294872949729507295172952729537295472955729567295772958729597296072961729627296372964729657296672967729687296972970729717297272973729747297572976729777297872979729807298172982729837298472985729867298772988729897299072991729927299372994729957299672997729987299973000730017300273003730047300573006730077300873009730107301173012730137301473015730167301773018730197302073021730227302373024730257302673027730287302973030730317303273033730347303573036730377303873039730407304173042730437304473045730467304773048730497305073051730527305373054730557305673057730587305973060730617306273063730647306573066730677306873069730707307173072730737307473075730767307773078730797308073081730827308373084730857308673087730887308973090730917309273093730947309573096730977309873099731007310173102731037310473105731067310773108731097311073111731127311373114731157311673117731187311973120731217312273123731247312573126731277312873129731307313173132731337313473135731367313773138731397314073141731427314373144731457314673147731487314973150731517315273153731547315573156731577315873159731607316173162731637316473165731667316773168731697317073171731727317373174731757317673177731787317973180731817318273183731847318573186731877318873189731907319173192731937319473195731967319773198731997320073201732027320373204732057320673207732087320973210732117321273213732147321573216732177321873219732207322173222732237322473225732267322773228732297323073231732327323373234732357323673237732387323973240732417324273243732447324573246732477324873249732507325173252732537325473255732567325773258732597326073261732627326373264732657326673267732687326973270732717327273273732747327573276732777327873279732807328173282732837328473285732867328773288732897329073291732927329373294732957329673297732987329973300733017330273303733047330573306733077330873309733107331173312733137331473315733167331773318733197332073321733227332373324733257332673327733287332973330733317333273333733347333573336733377333873339733407334173342733437334473345733467334773348733497335073351733527335373354733557335673357733587335973360733617336273363733647336573366733677336873369733707337173372733737337473375733767337773378733797338073381733827338373384733857338673387733887338973390733917339273393733947339573396733977339873399734007340173402734037340473405734067340773408734097341073411734127341373414734157341673417734187341973420734217342273423734247342573426734277342873429734307343173432734337343473435734367343773438734397344073441734427344373444734457344673447734487344973450734517345273453734547345573456734577345873459734607346173462734637346473465734667346773468734697347073471734727347373474734757347673477734787347973480734817348273483734847348573486734877348873489734907349173492734937349473495734967349773498734997350073501735027350373504735057350673507735087350973510735117351273513735147351573516735177351873519735207352173522735237352473525735267352773528735297353073531735327353373534735357353673537735387353973540735417354273543735447354573546735477354873549735507355173552735537355473555735567355773558735597356073561735627356373564735657356673567735687356973570735717357273573735747357573576735777357873579735807358173582735837358473585735867358773588735897359073591735927359373594735957359673597735987359973600736017360273603736047360573606736077360873609736107361173612736137361473615736167361773618736197362073621736227362373624736257362673627736287362973630736317363273633736347363573636736377363873639736407364173642736437364473645736467364773648736497365073651736527365373654736557365673657736587365973660736617366273663736647366573666736677366873669736707367173672736737367473675736767367773678736797368073681736827368373684736857368673687736887368973690736917369273693736947369573696736977369873699737007370173702737037370473705737067370773708737097371073711737127371373714737157371673717737187371973720737217372273723737247372573726737277372873729737307373173732737337373473735737367373773738737397374073741737427374373744737457374673747737487374973750737517375273753737547375573756737577375873759737607376173762737637376473765737667376773768737697377073771737727377373774737757377673777737787377973780737817378273783737847378573786737877378873789737907379173792737937379473795737967379773798737997380073801738027380373804738057380673807738087380973810738117381273813738147381573816738177381873819738207382173822738237382473825738267382773828738297383073831738327383373834738357383673837738387383973840738417384273843738447384573846738477384873849738507385173852738537385473855738567385773858738597386073861738627386373864738657386673867738687386973870738717387273873738747387573876738777387873879738807388173882738837388473885738867388773888738897389073891738927389373894738957389673897738987389973900739017390273903739047390573906739077390873909739107391173912739137391473915739167391773918739197392073921739227392373924739257392673927739287392973930739317393273933739347393573936739377393873939739407394173942739437394473945739467394773948739497395073951739527395373954739557395673957739587395973960739617396273963739647396573966739677396873969739707397173972739737397473975739767397773978739797398073981739827398373984739857398673987739887398973990739917399273993739947399573996739977399873999740007400174002740037400474005740067400774008740097401074011740127401374014740157401674017740187401974020740217402274023740247402574026740277402874029740307403174032740337403474035740367403774038740397404074041740427404374044740457404674047740487404974050740517405274053740547405574056740577405874059740607406174062740637406474065740667406774068740697407074071740727407374074740757407674077740787407974080740817408274083740847408574086740877408874089740907409174092740937409474095740967409774098740997410074101741027410374104741057410674107741087410974110741117411274113741147411574116741177411874119741207412174122741237412474125741267412774128741297413074131741327413374134741357413674137741387413974140741417414274143741447414574146741477414874149741507415174152741537415474155741567415774158741597416074161741627416374164741657416674167741687416974170741717417274173741747417574176741777417874179741807418174182741837418474185741867418774188741897419074191741927419374194741957419674197741987419974200742017420274203742047420574206742077420874209742107421174212742137421474215742167421774218742197422074221742227422374224742257422674227742287422974230742317423274233742347423574236742377423874239742407424174242742437424474245742467424774248742497425074251742527425374254742557425674257742587425974260742617426274263742647426574266742677426874269742707427174272742737427474275742767427774278742797428074281742827428374284742857428674287742887428974290742917429274293742947429574296742977429874299743007430174302743037430474305743067430774308743097431074311743127431374314743157431674317743187431974320743217432274323743247432574326743277432874329743307433174332743337433474335743367433774338743397434074341743427434374344743457434674347743487434974350743517435274353743547435574356743577435874359743607436174362743637436474365743667436774368743697437074371743727437374374743757437674377743787437974380743817438274383743847438574386743877438874389743907439174392743937439474395743967439774398743997440074401744027440374404744057440674407744087440974410744117441274413744147441574416744177441874419744207442174422744237442474425744267442774428744297443074431744327443374434744357443674437744387443974440744417444274443744447444574446744477444874449744507445174452744537445474455744567445774458744597446074461744627446374464744657446674467744687446974470744717447274473744747447574476744777447874479744807448174482744837448474485744867448774488744897449074491744927449374494744957449674497744987449974500745017450274503745047450574506745077450874509745107451174512745137451474515745167451774518745197452074521745227452374524745257452674527745287452974530745317453274533745347453574536745377453874539745407454174542745437454474545745467454774548745497455074551745527455374554745557455674557745587455974560745617456274563745647456574566745677456874569745707457174572745737457474575745767457774578745797458074581745827458374584745857458674587745887458974590745917459274593745947459574596745977459874599746007460174602746037460474605746067460774608746097461074611746127461374614746157461674617746187461974620746217462274623746247462574626746277462874629746307463174632746337463474635746367463774638746397464074641746427464374644746457464674647746487464974650746517465274653746547465574656746577465874659746607466174662746637466474665746667466774668746697467074671746727467374674746757467674677746787467974680746817468274683746847468574686746877468874689746907469174692746937469474695746967469774698746997470074701747027470374704747057470674707747087470974710747117471274713747147471574716747177471874719747207472174722747237472474725747267472774728747297473074731747327473374734747357473674737747387473974740747417474274743747447474574746747477474874749747507475174752747537475474755747567475774758747597476074761747627476374764747657476674767747687476974770747717477274773747747477574776747777477874779747807478174782747837478474785747867478774788747897479074791747927479374794747957479674797747987479974800748017480274803748047480574806748077480874809748107481174812748137481474815748167481774818748197482074821748227482374824748257482674827748287482974830748317483274833748347483574836748377483874839748407484174842748437484474845748467484774848748497485074851748527485374854748557485674857748587485974860748617486274863748647486574866748677486874869748707487174872748737487474875748767487774878748797488074881748827488374884748857488674887748887488974890748917489274893748947489574896748977489874899749007490174902749037490474905749067490774908749097491074911749127491374914749157491674917749187491974920749217492274923749247492574926749277492874929749307493174932749337493474935749367493774938749397494074941749427494374944749457494674947749487494974950749517495274953749547495574956749577495874959749607496174962749637496474965749667496774968749697497074971749727497374974749757497674977749787497974980749817498274983749847498574986749877498874989749907499174992749937499474995749967499774998749997500075001750027500375004750057500675007750087500975010750117501275013750147501575016750177501875019750207502175022750237502475025750267502775028750297503075031750327503375034750357503675037750387503975040750417504275043750447504575046750477504875049750507505175052750537505475055750567505775058750597506075061750627506375064750657506675067750687506975070750717507275073750747507575076750777507875079750807508175082750837508475085750867508775088750897509075091750927509375094750957509675097750987509975100751017510275103751047510575106751077510875109751107511175112751137511475115751167511775118751197512075121751227512375124751257512675127751287512975130751317513275133751347513575136751377513875139751407514175142751437514475145751467514775148751497515075151751527515375154751557515675157751587515975160751617516275163751647516575166751677516875169751707517175172751737517475175751767517775178751797518075181751827518375184751857518675187751887518975190751917519275193751947519575196751977519875199752007520175202752037520475205752067520775208752097521075211752127521375214752157521675217752187521975220752217522275223752247522575226752277522875229752307523175232752337523475235752367523775238752397524075241752427524375244752457524675247752487524975250752517525275253752547525575256752577525875259752607526175262752637526475265752667526775268752697527075271752727527375274752757527675277752787527975280752817528275283752847528575286752877528875289752907529175292752937529475295752967529775298752997530075301753027530375304753057530675307753087530975310753117531275313753147531575316753177531875319753207532175322753237532475325753267532775328753297533075331753327533375334753357533675337753387533975340753417534275343753447534575346753477534875349753507535175352753537535475355753567535775358753597536075361753627536375364753657536675367753687536975370753717537275373753747537575376753777537875379753807538175382753837538475385753867538775388753897539075391753927539375394753957539675397753987539975400754017540275403754047540575406754077540875409754107541175412754137541475415754167541775418754197542075421754227542375424754257542675427754287542975430754317543275433754347543575436754377543875439754407544175442754437544475445754467544775448754497545075451754527545375454754557545675457754587545975460754617546275463754647546575466754677546875469754707547175472754737547475475754767547775478754797548075481754827548375484754857548675487754887548975490754917549275493754947549575496754977549875499755007550175502755037550475505755067550775508755097551075511755127551375514755157551675517755187551975520755217552275523755247552575526755277552875529755307553175532755337553475535755367553775538755397554075541755427554375544755457554675547755487554975550755517555275553755547555575556755577555875559755607556175562755637556475565755667556775568755697557075571755727557375574755757557675577755787557975580755817558275583755847558575586755877558875589755907559175592755937559475595755967559775598755997560075601756027560375604756057560675607756087560975610756117561275613756147561575616756177561875619756207562175622756237562475625756267562775628756297563075631756327563375634756357563675637756387563975640756417564275643756447564575646756477564875649756507565175652756537565475655756567565775658756597566075661756627566375664756657566675667756687566975670756717567275673756747567575676756777567875679756807568175682756837568475685756867568775688756897569075691756927569375694756957569675697756987569975700757017570275703757047570575706757077570875709757107571175712757137571475715757167571775718757197572075721757227572375724757257572675727757287572975730757317573275733757347573575736757377573875739757407574175742757437574475745757467574775748757497575075751757527575375754757557575675757757587575975760757617576275763757647576575766757677576875769757707577175772757737577475775757767577775778757797578075781757827578375784757857578675787757887578975790757917579275793757947579575796757977579875799758007580175802758037580475805758067580775808758097581075811758127581375814758157581675817758187581975820758217582275823758247582575826758277582875829758307583175832758337583475835758367583775838758397584075841758427584375844758457584675847758487584975850758517585275853758547585575856758577585875859758607586175862758637586475865758667586775868758697587075871758727587375874758757587675877758787587975880758817588275883758847588575886758877588875889758907589175892758937589475895758967589775898758997590075901759027590375904759057590675907759087590975910759117591275913759147591575916759177591875919759207592175922759237592475925759267592775928759297593075931759327593375934759357593675937759387593975940759417594275943759447594575946759477594875949759507595175952759537595475955759567595775958759597596075961759627596375964759657596675967759687596975970759717597275973759747597575976759777597875979759807598175982759837598475985759867598775988759897599075991759927599375994759957599675997759987599976000760017600276003760047600576006760077600876009760107601176012760137601476015760167601776018760197602076021760227602376024760257602676027760287602976030760317603276033760347603576036760377603876039760407604176042760437604476045760467604776048760497605076051760527605376054760557605676057760587605976060760617606276063760647606576066760677606876069760707607176072760737607476075760767607776078760797608076081760827608376084760857608676087760887608976090760917609276093760947609576096760977609876099761007610176102761037610476105761067610776108761097611076111761127611376114761157611676117761187611976120761217612276123761247612576126761277612876129761307613176132761337613476135761367613776138761397614076141761427614376144761457614676147761487614976150761517615276153761547615576156761577615876159761607616176162761637616476165761667616776168761697617076171761727617376174761757617676177761787617976180761817618276183761847618576186761877618876189761907619176192761937619476195761967619776198761997620076201762027620376204762057620676207762087620976210762117621276213762147621576216762177621876219762207622176222762237622476225762267622776228762297623076231762327623376234762357623676237762387623976240762417624276243762447624576246762477624876249762507625176252762537625476255762567625776258762597626076261762627626376264762657626676267762687626976270762717627276273762747627576276762777627876279762807628176282762837628476285762867628776288762897629076291762927629376294762957629676297762987629976300763017630276303763047630576306763077630876309763107631176312763137631476315763167631776318763197632076321763227632376324763257632676327763287632976330763317633276333763347633576336763377633876339763407634176342763437634476345763467634776348763497635076351763527635376354763557635676357763587635976360763617636276363763647636576366763677636876369763707637176372763737637476375763767637776378763797638076381763827638376384763857638676387763887638976390763917639276393763947639576396763977639876399764007640176402764037640476405764067640776408764097641076411764127641376414764157641676417764187641976420764217642276423764247642576426764277642876429764307643176432764337643476435764367643776438764397644076441764427644376444764457644676447764487644976450764517645276453764547645576456764577645876459764607646176462764637646476465764667646776468764697647076471764727647376474764757647676477764787647976480764817648276483764847648576486764877648876489764907649176492764937649476495764967649776498764997650076501765027650376504765057650676507765087650976510765117651276513765147651576516765177651876519765207652176522765237652476525765267652776528765297653076531765327653376534765357653676537765387653976540765417654276543765447654576546765477654876549765507655176552765537655476555765567655776558765597656076561765627656376564765657656676567765687656976570765717657276573765747657576576765777657876579765807658176582765837658476585765867658776588765897659076591765927659376594765957659676597765987659976600766017660276603766047660576606766077660876609766107661176612766137661476615766167661776618766197662076621766227662376624766257662676627766287662976630766317663276633766347663576636766377663876639766407664176642766437664476645766467664776648766497665076651766527665376654766557665676657766587665976660766617666276663766647666576666766677666876669766707667176672766737667476675766767667776678766797668076681766827668376684766857668676687766887668976690766917669276693766947669576696766977669876699767007670176702767037670476705767067670776708767097671076711767127671376714767157671676717767187671976720767217672276723767247672576726767277672876729767307673176732767337673476735767367673776738767397674076741767427674376744767457674676747767487674976750767517675276753767547675576756767577675876759767607676176762767637676476765767667676776768767697677076771767727677376774767757677676777767787677976780767817678276783767847678576786767877678876789767907679176792767937679476795767967679776798767997680076801768027680376804768057680676807768087680976810768117681276813768147681576816768177681876819768207682176822768237682476825768267682776828768297683076831768327683376834768357683676837768387683976840768417684276843768447684576846768477684876849768507685176852768537685476855768567685776858768597686076861768627686376864768657686676867768687686976870768717687276873768747687576876768777687876879768807688176882768837688476885768867688776888768897689076891768927689376894768957689676897768987689976900769017690276903769047690576906769077690876909769107691176912769137691476915769167691776918769197692076921769227692376924769257692676927769287692976930769317693276933769347693576936769377693876939769407694176942769437694476945769467694776948769497695076951769527695376954769557695676957769587695976960769617696276963769647696576966769677696876969769707697176972769737697476975769767697776978769797698076981769827698376984769857698676987769887698976990769917699276993769947699576996769977699876999770007700177002770037700477005770067700777008770097701077011770127701377014770157701677017770187701977020770217702277023770247702577026770277702877029770307703177032770337703477035770367703777038770397704077041770427704377044770457704677047770487704977050770517705277053770547705577056770577705877059770607706177062770637706477065770667706777068770697707077071770727707377074770757707677077770787707977080770817708277083770847708577086770877708877089770907709177092770937709477095770967709777098770997710077101771027710377104771057710677107771087710977110771117711277113771147711577116771177711877119771207712177122771237712477125771267712777128771297713077131771327713377134771357713677137771387713977140771417714277143771447714577146771477714877149771507715177152771537715477155771567715777158771597716077161771627716377164771657716677167771687716977170771717717277173771747717577176771777717877179771807718177182771837718477185771867718777188771897719077191771927719377194771957719677197771987719977200772017720277203772047720577206772077720877209772107721177212772137721477215772167721777218772197722077221772227722377224772257722677227772287722977230772317723277233772347723577236772377723877239772407724177242772437724477245772467724777248772497725077251772527725377254772557725677257772587725977260772617726277263772647726577266772677726877269772707727177272772737727477275772767727777278772797728077281772827728377284772857728677287772887728977290772917729277293772947729577296772977729877299773007730177302773037730477305773067730777308773097731077311773127731377314773157731677317773187731977320773217732277323773247732577326773277732877329773307733177332773337733477335773367733777338773397734077341773427734377344773457734677347773487734977350773517735277353773547735577356773577735877359773607736177362773637736477365773667736777368773697737077371773727737377374773757737677377773787737977380773817738277383773847738577386773877738877389773907739177392773937739477395773967739777398773997740077401774027740377404774057740677407774087740977410774117741277413774147741577416774177741877419774207742177422774237742477425774267742777428774297743077431774327743377434774357743677437774387743977440774417744277443774447744577446774477744877449774507745177452774537745477455774567745777458774597746077461774627746377464774657746677467774687746977470774717747277473774747747577476774777747877479774807748177482774837748477485774867748777488774897749077491774927749377494774957749677497774987749977500775017750277503775047750577506775077750877509775107751177512775137751477515775167751777518775197752077521775227752377524775257752677527775287752977530775317753277533775347753577536775377753877539775407754177542775437754477545775467754777548775497755077551775527755377554775557755677557775587755977560775617756277563775647756577566775677756877569775707757177572775737757477575775767757777578775797758077581775827758377584775857758677587775887758977590775917759277593775947759577596775977759877599776007760177602776037760477605776067760777608776097761077611776127761377614776157761677617776187761977620776217762277623776247762577626776277762877629776307763177632776337763477635776367763777638776397764077641776427764377644776457764677647776487764977650776517765277653776547765577656776577765877659776607766177662776637766477665776667766777668776697767077671776727767377674776757767677677776787767977680776817768277683776847768577686776877768877689776907769177692776937769477695776967769777698776997770077701777027770377704777057770677707777087770977710777117771277713777147771577716777177771877719777207772177722777237772477725777267772777728777297773077731777327773377734777357773677737777387773977740777417774277743777447774577746777477774877749777507775177752777537775477755777567775777758777597776077761777627776377764777657776677767777687776977770777717777277773777747777577776777777777877779777807778177782777837778477785777867778777788777897779077791777927779377794777957779677797777987779977800778017780277803778047780577806778077780877809778107781177812778137781477815778167781777818778197782077821778227782377824778257782677827778287782977830778317783277833778347783577836778377783877839778407784177842778437784477845778467784777848778497785077851778527785377854778557785677857778587785977860778617786277863778647786577866778677786877869778707787177872778737787477875778767787777878778797788077881778827788377884778857788677887778887788977890778917789277893778947789577896778977789877899779007790177902779037790477905779067790777908779097791077911779127791377914779157791677917779187791977920779217792277923779247792577926779277792877929779307793177932779337793477935779367793777938779397794077941779427794377944779457794677947779487794977950779517795277953779547795577956779577795877959779607796177962779637796477965779667796777968779697797077971779727797377974779757797677977779787797977980779817798277983779847798577986779877798877989779907799177992779937799477995779967799777998779997800078001780027800378004780057800678007780087800978010780117801278013780147801578016780177801878019780207802178022780237802478025780267802778028780297803078031780327803378034780357803678037780387803978040780417804278043780447804578046780477804878049780507805178052780537805478055780567805778058780597806078061780627806378064780657806678067780687806978070780717807278073780747807578076780777807878079780807808178082780837808478085780867808778088780897809078091780927809378094780957809678097780987809978100781017810278103781047810578106781077810878109781107811178112781137811478115781167811778118781197812078121781227812378124781257812678127781287812978130781317813278133781347813578136781377813878139781407814178142781437814478145781467814778148781497815078151781527815378154781557815678157781587815978160781617816278163781647816578166781677816878169781707817178172781737817478175781767817778178781797818078181781827818378184781857818678187781887818978190781917819278193781947819578196781977819878199782007820178202782037820478205782067820778208782097821078211782127821378214782157821678217782187821978220782217822278223782247822578226782277822878229782307823178232782337823478235782367823778238782397824078241782427824378244782457824678247782487824978250782517825278253782547825578256782577825878259782607826178262782637826478265782667826778268782697827078271782727827378274782757827678277782787827978280782817828278283782847828578286782877828878289782907829178292782937829478295782967829778298782997830078301783027830378304783057830678307783087830978310783117831278313783147831578316783177831878319783207832178322783237832478325783267832778328783297833078331783327833378334783357833678337783387833978340783417834278343783447834578346783477834878349783507835178352783537835478355783567835778358783597836078361783627836378364783657836678367783687836978370783717837278373783747837578376783777837878379783807838178382783837838478385783867838778388783897839078391783927839378394783957839678397783987839978400784017840278403784047840578406784077840878409784107841178412784137841478415784167841778418784197842078421784227842378424784257842678427784287842978430784317843278433784347843578436784377843878439784407844178442784437844478445784467844778448784497845078451784527845378454784557845678457784587845978460784617846278463784647846578466784677846878469784707847178472784737847478475784767847778478784797848078481784827848378484784857848678487784887848978490784917849278493784947849578496784977849878499785007850178502785037850478505785067850778508785097851078511785127851378514785157851678517785187851978520785217852278523785247852578526785277852878529785307853178532785337853478535785367853778538785397854078541785427854378544785457854678547785487854978550785517855278553785547855578556785577855878559785607856178562785637856478565785667856778568785697857078571785727857378574785757857678577785787857978580785817858278583785847858578586785877858878589785907859178592785937859478595785967859778598785997860078601786027860378604786057860678607786087860978610786117861278613786147861578616786177861878619786207862178622786237862478625786267862778628786297863078631786327863378634786357863678637786387863978640786417864278643786447864578646786477864878649786507865178652786537865478655786567865778658786597866078661786627866378664786657866678667786687866978670786717867278673786747867578676786777867878679786807868178682786837868478685786867868778688786897869078691786927869378694786957869678697786987869978700787017870278703787047870578706787077870878709787107871178712787137871478715787167871778718787197872078721787227872378724787257872678727787287872978730787317873278733787347873578736787377873878739787407874178742787437874478745787467874778748787497875078751787527875378754787557875678757787587875978760787617876278763787647876578766787677876878769787707877178772787737877478775787767877778778787797878078781787827878378784787857878678787787887878978790787917879278793787947879578796787977879878799788007880178802788037880478805788067880778808788097881078811788127881378814788157881678817788187881978820788217882278823788247882578826788277882878829788307883178832788337883478835788367883778838788397884078841788427884378844788457884678847788487884978850788517885278853788547885578856788577885878859788607886178862788637886478865788667886778868788697887078871788727887378874788757887678877788787887978880788817888278883788847888578886788877888878889788907889178892788937889478895788967889778898788997890078901789027890378904789057890678907789087890978910789117891278913789147891578916789177891878919789207892178922789237892478925789267892778928789297893078931789327893378934789357893678937789387893978940789417894278943789447894578946789477894878949789507895178952789537895478955789567895778958789597896078961789627896378964789657896678967789687896978970789717897278973789747897578976789777897878979789807898178982789837898478985789867898778988789897899078991789927899378994789957899678997789987899979000790017900279003790047900579006790077900879009790107901179012790137901479015790167901779018790197902079021790227902379024790257902679027790287902979030790317903279033790347903579036790377903879039790407904179042790437904479045790467904779048790497905079051790527905379054790557905679057790587905979060790617906279063790647906579066790677906879069790707907179072790737907479075790767907779078790797908079081790827908379084790857908679087790887908979090790917909279093790947909579096790977909879099791007910179102791037910479105791067910779108791097911079111791127911379114791157911679117791187911979120791217912279123791247912579126791277912879129791307913179132791337913479135791367913779138791397914079141791427914379144791457914679147791487914979150791517915279153791547915579156791577915879159791607916179162791637916479165791667916779168791697917079171791727917379174791757917679177791787917979180791817918279183791847918579186791877918879189791907919179192791937919479195791967919779198791997920079201792027920379204792057920679207792087920979210792117921279213792147921579216792177921879219792207922179222792237922479225792267922779228792297923079231792327923379234792357923679237792387923979240792417924279243792447924579246792477924879249792507925179252792537925479255792567925779258792597926079261792627926379264792657926679267792687926979270792717927279273792747927579276792777927879279792807928179282792837928479285792867928779288792897929079291792927929379294792957929679297792987929979300793017930279303793047930579306793077930879309793107931179312793137931479315793167931779318793197932079321793227932379324793257932679327793287932979330793317933279333793347933579336793377933879339793407934179342793437934479345793467934779348793497935079351793527935379354793557935679357793587935979360793617936279363793647936579366793677936879369793707937179372793737937479375793767937779378793797938079381793827938379384793857938679387793887938979390793917939279393793947939579396793977939879399794007940179402794037940479405794067940779408794097941079411794127941379414794157941679417794187941979420794217942279423794247942579426794277942879429794307943179432794337943479435794367943779438794397944079441794427944379444794457944679447794487944979450794517945279453794547945579456794577945879459794607946179462794637946479465794667946779468794697947079471794727947379474794757947679477794787947979480794817948279483794847948579486794877948879489794907949179492794937949479495794967949779498794997950079501795027950379504795057950679507795087950979510795117951279513795147951579516795177951879519795207952179522795237952479525795267952779528795297953079531795327953379534795357953679537795387953979540795417954279543795447954579546795477954879549795507955179552795537955479555795567955779558795597956079561795627956379564795657956679567795687956979570795717957279573795747957579576795777957879579795807958179582795837958479585795867958779588795897959079591795927959379594795957959679597795987959979600796017960279603796047960579606796077960879609796107961179612796137961479615796167961779618796197962079621796227962379624796257962679627796287962979630796317963279633796347963579636796377963879639796407964179642796437964479645796467964779648796497965079651796527965379654796557965679657796587965979660796617966279663796647966579666796677966879669796707967179672796737967479675796767967779678796797968079681796827968379684796857968679687796887968979690796917969279693796947969579696796977969879699797007970179702797037970479705797067970779708797097971079711797127971379714797157971679717797187971979720797217972279723797247972579726797277972879729797307973179732797337973479735797367973779738797397974079741797427974379744797457974679747797487974979750797517975279753797547975579756797577975879759797607976179762797637976479765797667976779768797697977079771797727977379774797757977679777797787977979780797817978279783797847978579786797877978879789797907979179792797937979479795797967979779798797997980079801798027980379804798057980679807798087980979810798117981279813798147981579816798177981879819798207982179822798237982479825798267982779828798297983079831798327983379834798357983679837798387983979840798417984279843798447984579846798477984879849798507985179852798537985479855798567985779858798597986079861798627986379864798657986679867798687986979870798717987279873798747987579876798777987879879798807988179882798837988479885798867988779888798897989079891798927989379894798957989679897798987989979900799017990279903799047990579906799077990879909799107991179912799137991479915799167991779918799197992079921799227992379924799257992679927799287992979930799317993279933799347993579936799377993879939799407994179942799437994479945799467994779948799497995079951799527995379954799557995679957799587995979960799617996279963799647996579966799677996879969799707997179972799737997479975799767997779978799797998079981799827998379984799857998679987799887998979990799917999279993799947999579996799977999879999800008000180002800038000480005800068000780008800098001080011800128001380014800158001680017800188001980020800218002280023800248002580026800278002880029800308003180032800338003480035800368003780038800398004080041800428004380044800458004680047800488004980050800518005280053800548005580056800578005880059800608006180062800638006480065800668006780068800698007080071800728007380074800758007680077800788007980080800818008280083800848008580086800878008880089800908009180092800938009480095800968009780098800998010080101801028010380104801058010680107801088010980110801118011280113801148011580116801178011880119801208012180122801238012480125801268012780128801298013080131801328013380134801358013680137801388013980140801418014280143801448014580146801478014880149801508015180152801538015480155801568015780158801598016080161801628016380164801658016680167801688016980170801718017280173801748017580176801778017880179801808018180182801838018480185801868018780188801898019080191801928019380194801958019680197801988019980200802018020280203802048020580206802078020880209802108021180212802138021480215802168021780218802198022080221802228022380224802258022680227802288022980230802318023280233802348023580236802378023880239802408024180242802438024480245802468024780248802498025080251802528025380254802558025680257802588025980260802618026280263802648026580266802678026880269802708027180272802738027480275802768027780278802798028080281802828028380284802858028680287802888028980290802918029280293802948029580296802978029880299803008030180302803038030480305803068030780308803098031080311803128031380314803158031680317803188031980320803218032280323803248032580326803278032880329803308033180332803338033480335803368033780338803398034080341803428034380344803458034680347803488034980350803518035280353803548035580356803578035880359803608036180362803638036480365803668036780368803698037080371803728037380374803758037680377803788037980380803818038280383803848038580386803878038880389803908039180392803938039480395803968039780398803998040080401804028040380404804058040680407804088040980410804118041280413804148041580416804178041880419804208042180422804238042480425804268042780428804298043080431804328043380434804358043680437804388043980440804418044280443804448044580446804478044880449804508045180452804538045480455804568045780458804598046080461804628046380464804658046680467804688046980470804718047280473804748047580476804778047880479804808048180482804838048480485804868048780488804898049080491804928049380494804958049680497804988049980500805018050280503805048050580506805078050880509805108051180512805138051480515805168051780518805198052080521805228052380524805258052680527805288052980530805318053280533805348053580536805378053880539805408054180542805438054480545805468054780548805498055080551805528055380554805558055680557805588055980560805618056280563805648056580566805678056880569805708057180572805738057480575805768057780578805798058080581805828058380584805858058680587805888058980590805918059280593805948059580596805978059880599806008060180602806038060480605806068060780608806098061080611806128061380614806158061680617806188061980620806218062280623806248062580626806278062880629806308063180632806338063480635806368063780638806398064080641806428064380644806458064680647806488064980650806518065280653806548065580656806578065880659806608066180662806638066480665806668066780668806698067080671806728067380674806758067680677806788067980680806818068280683806848068580686806878068880689806908069180692806938069480695806968069780698806998070080701807028070380704807058070680707807088070980710807118071280713807148071580716807178071880719807208072180722807238072480725807268072780728807298073080731807328073380734807358073680737807388073980740807418074280743807448074580746807478074880749807508075180752807538075480755807568075780758807598076080761807628076380764807658076680767807688076980770807718077280773807748077580776807778077880779807808078180782807838078480785807868078780788807898079080791807928079380794807958079680797807988079980800808018080280803808048080580806808078080880809808108081180812808138081480815808168081780818808198082080821808228082380824808258082680827808288082980830808318083280833808348083580836808378083880839808408084180842808438084480845808468084780848808498085080851808528085380854808558085680857808588085980860808618086280863808648086580866808678086880869808708087180872808738087480875808768087780878808798088080881808828088380884808858088680887808888088980890808918089280893808948089580896808978089880899809008090180902809038090480905809068090780908809098091080911809128091380914809158091680917809188091980920809218092280923809248092580926809278092880929809308093180932809338093480935809368093780938809398094080941809428094380944809458094680947809488094980950809518095280953809548095580956809578095880959809608096180962809638096480965809668096780968809698097080971809728097380974809758097680977809788097980980809818098280983809848098580986809878098880989809908099180992809938099480995809968099780998809998100081001810028100381004810058100681007810088100981010810118101281013810148101581016810178101881019810208102181022810238102481025810268102781028810298103081031810328103381034810358103681037810388103981040810418104281043810448104581046810478104881049810508105181052810538105481055810568105781058810598106081061810628106381064810658106681067810688106981070810718107281073810748107581076810778107881079810808108181082810838108481085810868108781088810898109081091810928109381094810958109681097810988109981100811018110281103811048110581106811078110881109811108111181112811138111481115811168111781118811198112081121811228112381124811258112681127811288112981130811318113281133811348113581136811378113881139811408114181142811438114481145811468114781148811498115081151811528115381154811558115681157811588115981160811618116281163811648116581166811678116881169811708117181172811738117481175811768117781178811798118081181811828118381184811858118681187811888118981190811918119281193811948119581196811978119881199812008120181202812038120481205812068120781208812098121081211812128121381214812158121681217812188121981220812218122281223812248122581226812278122881229812308123181232812338123481235812368123781238812398124081241812428124381244812458124681247812488124981250812518125281253812548125581256812578125881259812608126181262812638126481265812668126781268812698127081271812728127381274812758127681277812788127981280812818128281283812848128581286812878128881289812908129181292812938129481295812968129781298812998130081301813028130381304813058130681307813088130981310813118131281313813148131581316813178131881319813208132181322813238132481325813268132781328813298133081331813328133381334813358133681337813388133981340813418134281343813448134581346813478134881349813508135181352813538135481355813568135781358813598136081361813628136381364813658136681367813688136981370813718137281373813748137581376813778137881379813808138181382813838138481385813868138781388813898139081391813928139381394813958139681397813988139981400814018140281403814048140581406814078140881409814108141181412814138141481415814168141781418814198142081421814228142381424814258142681427814288142981430814318143281433814348143581436814378143881439814408144181442814438144481445814468144781448814498145081451814528145381454814558145681457814588145981460814618146281463814648146581466814678146881469814708147181472814738147481475814768147781478814798148081481814828148381484814858148681487814888148981490814918149281493814948149581496814978149881499815008150181502815038150481505815068150781508815098151081511815128151381514815158151681517815188151981520815218152281523815248152581526815278152881529815308153181532815338153481535815368153781538815398154081541815428154381544815458154681547815488154981550815518155281553815548155581556815578155881559815608156181562815638156481565815668156781568815698157081571815728157381574815758157681577815788157981580815818158281583815848158581586815878158881589815908159181592815938159481595815968159781598815998160081601816028160381604816058160681607816088160981610816118161281613816148161581616816178161881619816208162181622816238162481625816268162781628816298163081631816328163381634816358163681637816388163981640816418164281643816448164581646816478164881649816508165181652816538165481655816568165781658816598166081661816628166381664816658166681667816688166981670816718167281673816748167581676816778167881679816808168181682816838168481685816868168781688816898169081691816928169381694816958169681697816988169981700817018170281703817048170581706817078170881709817108171181712817138171481715817168171781718817198172081721817228172381724817258172681727817288172981730817318173281733817348173581736817378173881739817408174181742817438174481745817468174781748817498175081751817528175381754817558175681757817588175981760817618176281763817648176581766817678176881769817708177181772817738177481775817768177781778817798178081781817828178381784817858178681787817888178981790817918179281793817948179581796817978179881799818008180181802818038180481805818068180781808818098181081811818128181381814818158181681817818188181981820818218182281823818248182581826818278182881829818308183181832818338183481835818368183781838818398184081841818428184381844818458184681847818488184981850818518185281853818548185581856818578185881859818608186181862818638186481865818668186781868818698187081871818728187381874818758187681877818788187981880818818188281883818848188581886818878188881889818908189181892818938189481895818968189781898818998190081901819028190381904819058190681907819088190981910819118191281913819148191581916819178191881919819208192181922819238192481925819268192781928819298193081931819328193381934819358193681937819388193981940819418194281943819448194581946819478194881949819508195181952819538195481955819568195781958819598196081961819628196381964819658196681967819688196981970819718197281973819748197581976819778197881979819808198181982819838198481985819868198781988819898199081991819928199381994819958199681997819988199982000820018200282003820048200582006820078200882009820108201182012820138201482015820168201782018820198202082021820228202382024820258202682027820288202982030820318203282033820348203582036820378203882039820408204182042820438204482045820468204782048820498205082051820528205382054820558205682057820588205982060820618206282063820648206582066820678206882069820708207182072820738207482075820768207782078820798208082081820828208382084820858208682087820888208982090820918209282093820948209582096820978209882099821008210182102821038210482105821068210782108821098211082111821128211382114821158211682117821188211982120821218212282123821248212582126821278212882129821308213182132821338213482135821368213782138821398214082141821428214382144821458214682147821488214982150821518215282153821548215582156821578215882159821608216182162821638216482165821668216782168821698217082171821728217382174821758217682177821788217982180821818218282183821848218582186821878218882189821908219182192821938219482195821968219782198821998220082201822028220382204822058220682207822088220982210822118221282213822148221582216822178221882219822208222182222822238222482225822268222782228822298223082231822328223382234822358223682237822388223982240822418224282243822448224582246822478224882249822508225182252822538225482255822568225782258822598226082261822628226382264822658226682267822688226982270822718227282273822748227582276822778227882279822808228182282822838228482285822868228782288822898229082291822928229382294822958229682297822988229982300823018230282303823048230582306823078230882309823108231182312823138231482315823168231782318823198232082321823228232382324823258232682327823288232982330823318233282333823348233582336823378233882339823408234182342823438234482345823468234782348823498235082351823528235382354823558235682357823588235982360823618236282363823648236582366823678236882369823708237182372823738237482375823768237782378823798238082381823828238382384823858238682387823888238982390823918239282393823948239582396823978239882399824008240182402824038240482405824068240782408824098241082411824128241382414824158241682417824188241982420824218242282423824248242582426824278242882429824308243182432824338243482435824368243782438824398244082441824428244382444824458244682447824488244982450824518245282453824548245582456824578245882459824608246182462824638246482465824668246782468824698247082471824728247382474824758247682477824788247982480824818248282483824848248582486824878248882489824908249182492824938249482495824968249782498824998250082501825028250382504825058250682507825088250982510825118251282513825148251582516825178251882519825208252182522825238252482525825268252782528825298253082531825328253382534825358253682537825388253982540825418254282543825448254582546825478254882549825508255182552825538255482555825568255782558825598256082561825628256382564825658256682567825688256982570825718257282573825748257582576825778257882579825808258182582825838258482585825868258782588825898259082591825928259382594825958259682597825988259982600826018260282603826048260582606826078260882609826108261182612826138261482615826168261782618826198262082621826228262382624826258262682627826288262982630826318263282633826348263582636826378263882639826408264182642826438264482645826468264782648826498265082651826528265382654826558265682657826588265982660826618266282663826648266582666826678266882669826708267182672826738267482675826768267782678826798268082681826828268382684826858268682687826888268982690826918269282693826948269582696826978269882699827008270182702827038270482705827068270782708827098271082711827128271382714827158271682717827188271982720827218272282723827248272582726827278272882729827308273182732827338273482735827368273782738827398274082741827428274382744827458274682747827488274982750827518275282753827548275582756827578275882759827608276182762827638276482765827668276782768827698277082771827728277382774827758277682777827788277982780827818278282783827848278582786827878278882789827908279182792827938279482795827968279782798827998280082801828028280382804828058280682807828088280982810828118281282813828148281582816828178281882819828208282182822828238282482825828268282782828828298283082831828328283382834828358283682837828388283982840828418284282843828448284582846828478284882849828508285182852828538285482855828568285782858828598286082861828628286382864828658286682867828688286982870828718287282873828748287582876828778287882879828808288182882828838288482885828868288782888828898289082891828928289382894828958289682897828988289982900829018290282903829048290582906829078290882909829108291182912829138291482915829168291782918829198292082921829228292382924829258292682927829288292982930829318293282933829348293582936829378293882939829408294182942829438294482945829468294782948829498295082951829528295382954829558295682957829588295982960829618296282963829648296582966829678296882969829708297182972829738297482975829768297782978829798298082981829828298382984829858298682987829888298982990829918299282993829948299582996829978299882999830008300183002830038300483005830068300783008830098301083011830128301383014830158301683017830188301983020830218302283023830248302583026830278302883029830308303183032830338303483035830368303783038830398304083041830428304383044830458304683047830488304983050830518305283053830548305583056830578305883059830608306183062830638306483065830668306783068830698307083071830728307383074830758307683077830788307983080830818308283083830848308583086830878308883089830908309183092830938309483095830968309783098830998310083101831028310383104831058310683107831088310983110831118311283113831148311583116831178311883119831208312183122831238312483125831268312783128831298313083131831328313383134831358313683137831388313983140831418314283143831448314583146831478314883149831508315183152831538315483155831568315783158831598316083161831628316383164831658316683167831688316983170831718317283173831748317583176831778317883179831808318183182831838318483185831868318783188831898319083191831928319383194831958319683197831988319983200832018320283203832048320583206832078320883209832108321183212832138321483215832168321783218832198322083221832228322383224832258322683227832288322983230832318323283233832348323583236832378323883239832408324183242832438324483245832468324783248832498325083251832528325383254832558325683257832588325983260832618326283263832648326583266832678326883269832708327183272832738327483275832768327783278832798328083281832828328383284832858328683287832888328983290832918329283293832948329583296832978329883299833008330183302833038330483305833068330783308833098331083311833128331383314833158331683317833188331983320833218332283323833248332583326833278332883329833308333183332833338333483335833368333783338833398334083341833428334383344833458334683347833488334983350833518335283353833548335583356833578335883359833608336183362833638336483365833668336783368833698337083371833728337383374833758337683377833788337983380833818338283383833848338583386833878338883389833908339183392833938339483395833968339783398833998340083401834028340383404834058340683407834088340983410834118341283413834148341583416834178341883419834208342183422834238342483425834268342783428834298343083431834328343383434834358343683437834388343983440834418344283443834448344583446834478344883449834508345183452834538345483455834568345783458834598346083461834628346383464834658346683467834688346983470834718347283473834748347583476834778347883479834808348183482834838348483485834868348783488834898349083491834928349383494834958349683497834988349983500835018350283503835048350583506835078350883509835108351183512835138351483515835168351783518835198352083521835228352383524835258352683527835288352983530835318353283533835348353583536835378353883539835408354183542835438354483545835468354783548835498355083551835528355383554835558355683557835588355983560835618356283563835648356583566835678356883569835708357183572835738357483575835768357783578835798358083581835828358383584835858358683587835888358983590835918359283593835948359583596835978359883599836008360183602836038360483605836068360783608836098361083611836128361383614836158361683617836188361983620836218362283623836248362583626836278362883629836308363183632836338363483635836368363783638836398364083641836428364383644836458364683647836488364983650836518365283653836548365583656836578365883659836608366183662836638366483665836668366783668836698367083671836728367383674836758367683677836788367983680836818368283683836848368583686836878368883689836908369183692836938369483695836968369783698836998370083701837028370383704837058370683707837088370983710837118371283713837148371583716837178371883719837208372183722837238372483725837268372783728837298373083731837328373383734837358373683737837388373983740837418374283743837448374583746837478374883749837508375183752837538375483755837568375783758837598376083761837628376383764837658376683767837688376983770837718377283773837748377583776837778377883779837808378183782837838378483785837868378783788837898379083791837928379383794837958379683797837988379983800838018380283803838048380583806838078380883809838108381183812838138381483815838168381783818838198382083821838228382383824838258382683827838288382983830838318383283833838348383583836838378383883839838408384183842838438384483845838468384783848838498385083851838528385383854838558385683857838588385983860838618386283863838648386583866838678386883869838708387183872838738387483875838768387783878838798388083881838828388383884838858388683887838888388983890838918389283893838948389583896838978389883899839008390183902839038390483905839068390783908839098391083911839128391383914839158391683917839188391983920839218392283923839248392583926839278392883929839308393183932839338393483935839368393783938839398394083941839428394383944839458394683947839488394983950839518395283953839548395583956839578395883959839608396183962839638396483965839668396783968839698397083971839728397383974839758397683977839788397983980839818398283983839848398583986839878398883989839908399183992839938399483995839968399783998839998400084001840028400384004840058400684007840088400984010840118401284013840148401584016840178401884019840208402184022840238402484025840268402784028840298403084031840328403384034840358403684037840388403984040840418404284043840448404584046840478404884049840508405184052840538405484055840568405784058840598406084061840628406384064840658406684067840688406984070840718407284073840748407584076840778407884079840808408184082840838408484085840868408784088840898409084091840928409384094840958409684097840988409984100841018410284103841048410584106841078410884109841108411184112841138411484115841168411784118841198412084121841228412384124841258412684127841288412984130841318413284133841348413584136841378413884139841408414184142841438414484145841468414784148841498415084151841528415384154841558415684157841588415984160841618416284163841648416584166841678416884169841708417184172841738417484175841768417784178841798418084181841828418384184841858418684187841888418984190841918419284193841948419584196841978419884199842008420184202842038420484205842068420784208842098421084211842128421384214842158421684217842188421984220842218422284223842248422584226842278422884229842308423184232842338423484235842368423784238842398424084241842428424384244842458424684247842488424984250842518425284253842548425584256842578425884259842608426184262842638426484265842668426784268842698427084271842728427384274842758427684277842788427984280842818428284283842848428584286842878428884289842908429184292842938429484295842968429784298842998430084301843028430384304843058430684307843088430984310843118431284313843148431584316843178431884319843208432184322843238432484325843268432784328843298433084331843328433384334843358433684337843388433984340843418434284343843448434584346843478434884349843508435184352843538435484355843568435784358843598436084361843628436384364843658436684367843688436984370843718437284373843748437584376843778437884379843808438184382843838438484385843868438784388843898439084391843928439384394843958439684397843988439984400844018440284403844048440584406844078440884409844108441184412844138441484415844168441784418844198442084421844228442384424844258442684427844288442984430844318443284433844348443584436844378443884439844408444184442844438444484445844468444784448844498445084451844528445384454844558445684457844588445984460844618446284463844648446584466844678446884469844708447184472844738447484475844768447784478844798448084481844828448384484844858448684487844888448984490844918449284493844948449584496844978449884499845008450184502845038450484505845068450784508845098451084511845128451384514845158451684517845188451984520845218452284523845248452584526845278452884529845308453184532845338453484535845368453784538845398454084541
  1. #!/usr/bin/env node
  2. var define = (function amdefine(module, requireFn) {
  3. 'use strict';
  4. var defineCache = {},
  5. loaderCache = {},
  6. alreadyCalled = false,
  7. path = require('path'),
  8. makeRequire, stringRequire;
  9. /**
  10. * Trims the . and .. from an array of path segments.
  11. * It will keep a leading path segment if a .. will become
  12. * the first path segment, to help with module name lookups,
  13. * which act like paths, but can be remapped. But the end result,
  14. * all paths that use this function should look normalized.
  15. * NOTE: this method MODIFIES the input array.
  16. * @param {Array} ary the array of path segments.
  17. */
  18. function trimDots(ary) {
  19. var i, part;
  20. for (i = 0; ary[i]; i+= 1) {
  21. part = ary[i];
  22. if (part === '.') {
  23. ary.splice(i, 1);
  24. i -= 1;
  25. } else if (part === '..') {
  26. if (i === 1 && (ary[2] === '..' || ary[0] === '..')) {
  27. //End of the line. Keep at least one non-dot
  28. //path segment at the front so it can be mapped
  29. //correctly to disk. Otherwise, there is likely
  30. //no path mapping for a path starting with '..'.
  31. //This can still fail, but catches the most reasonable
  32. //uses of ..
  33. break;
  34. } else if (i > 0) {
  35. ary.splice(i - 1, 2);
  36. i -= 2;
  37. }
  38. }
  39. }
  40. }
  41. function normalize(name, baseName) {
  42. var baseParts;
  43. //Adjust any relative paths.
  44. if (name && name.charAt(0) === '.') {
  45. //If have a base name, try to normalize against it,
  46. //otherwise, assume it is a top-level require that will
  47. //be relative to baseUrl in the end.
  48. if (baseName) {
  49. baseParts = baseName.split('/');
  50. baseParts = baseParts.slice(0, baseParts.length - 1);
  51. baseParts = baseParts.concat(name.split('/'));
  52. trimDots(baseParts);
  53. name = baseParts.join('/');
  54. }
  55. }
  56. return name;
  57. }
  58. /**
  59. * Create the normalize() function passed to a loader plugin's
  60. * normalize method.
  61. */
  62. function makeNormalize(relName) {
  63. return function (name) {
  64. return normalize(name, relName);
  65. };
  66. }
  67. function makeLoad(id) {
  68. function load(value) {
  69. loaderCache[id] = value;
  70. }
  71. load.fromText = function (id, text) {
  72. //This one is difficult because the text can/probably uses
  73. //define, and any relative paths and requires should be relative
  74. //to that id was it would be found on disk. But this would require
  75. //bootstrapping a module/require fairly deeply from node core.
  76. //Not sure how best to go about that yet.
  77. throw new Error('amdefine does not implement load.fromText');
  78. };
  79. return load;
  80. }
  81. makeRequire = function (systemRequire, exports, module, relId) {
  82. function amdRequire(deps, callback) {
  83. if (typeof deps === 'string') {
  84. //Synchronous, single module require('')
  85. return stringRequire(systemRequire, exports, module, deps, relId);
  86. } else {
  87. //Array of dependencies with a callback.
  88. //Convert the dependencies to modules.
  89. deps = deps.map(function (depName) {
  90. return stringRequire(systemRequire, exports, module, depName, relId);
  91. });
  92. //Wait for next tick to call back the require call.
  93. process.nextTick(function () {
  94. callback.apply(null, deps);
  95. });
  96. }
  97. }
  98. amdRequire.toUrl = function (filePath) {
  99. if (filePath.indexOf('.') === 0) {
  100. return normalize(filePath, path.dirname(module.filename));
  101. } else {
  102. return filePath;
  103. }
  104. };
  105. return amdRequire;
  106. };
  107. //Favor explicit value, passed in if the module wants to support Node 0.4.
  108. requireFn = requireFn || function req() {
  109. return module.require.apply(module, arguments);
  110. };
  111. function runFactory(id, deps, factory) {
  112. var r, e, m, result;
  113. if (id) {
  114. e = loaderCache[id] = {};
  115. m = {
  116. id: id,
  117. uri: __filename,
  118. exports: e
  119. };
  120. r = makeRequire(requireFn, e, m, id);
  121. } else {
  122. //Only support one define call per file
  123. if (alreadyCalled) {
  124. throw new Error('amdefine with no module ID cannot be called more than once per file.');
  125. }
  126. alreadyCalled = true;
  127. //Use the real variables from node
  128. //Use module.exports for exports, since
  129. //the exports in here is amdefine exports.
  130. e = module.exports;
  131. m = module;
  132. r = makeRequire(requireFn, e, m, module.id);
  133. }
  134. //If there are dependencies, they are strings, so need
  135. //to convert them to dependency values.
  136. if (deps) {
  137. deps = deps.map(function (depName) {
  138. return r(depName);
  139. });
  140. }
  141. //Call the factory with the right dependencies.
  142. if (typeof factory === 'function') {
  143. result = factory.apply(m.exports, deps);
  144. } else {
  145. result = factory;
  146. }
  147. if (result !== undefined) {
  148. m.exports = result;
  149. if (id) {
  150. loaderCache[id] = m.exports;
  151. }
  152. }
  153. }
  154. stringRequire = function (systemRequire, exports, module, id, relId) {
  155. //Split the ID by a ! so that
  156. var index = id.indexOf('!'),
  157. originalId = id,
  158. prefix, plugin;
  159. if (index === -1) {
  160. id = normalize(id, relId);
  161. //Straight module lookup. If it is one of the special dependencies,
  162. //deal with it, otherwise, delegate to node.
  163. if (id === 'require') {
  164. return makeRequire(systemRequire, exports, module, relId);
  165. } else if (id === 'exports') {
  166. return exports;
  167. } else if (id === 'module') {
  168. return module;
  169. } else if (loaderCache.hasOwnProperty(id)) {
  170. return loaderCache[id];
  171. } else if (defineCache[id]) {
  172. runFactory.apply(null, defineCache[id]);
  173. return loaderCache[id];
  174. } else {
  175. if(systemRequire) {
  176. return systemRequire(originalId);
  177. } else {
  178. throw new Error('No module with ID: ' + id);
  179. }
  180. }
  181. } else {
  182. //There is a plugin in play.
  183. prefix = id.substring(0, index);
  184. id = id.substring(index + 1, id.length);
  185. plugin = stringRequire(systemRequire, exports, module, prefix, relId);
  186. if (plugin.normalize) {
  187. id = plugin.normalize(id, makeNormalize(relId));
  188. } else {
  189. //Normalize the ID normally.
  190. id = normalize(id, relId);
  191. }
  192. if (loaderCache[id]) {
  193. return loaderCache[id];
  194. } else {
  195. plugin.load(id, makeRequire(systemRequire, exports, module, relId), makeLoad(id), {});
  196. return loaderCache[id];
  197. }
  198. }
  199. };
  200. //Create a define function specific to the module asking for amdefine.
  201. function define(id, deps, factory) {
  202. if (Array.isArray(id)) {
  203. factory = deps;
  204. deps = id;
  205. id = undefined;
  206. } else if (typeof id !== 'string') {
  207. factory = id;
  208. id = deps = undefined;
  209. }
  210. if (deps && !Array.isArray(deps)) {
  211. factory = deps;
  212. deps = undefined;
  213. }
  214. if (!deps) {
  215. deps = ['require', 'exports', 'module'];
  216. }
  217. //Set up properties for this module. If an ID, then use
  218. //internal cache. If no ID, then use the external variables
  219. //for this node module.
  220. if (id) {
  221. //Put the module in deep freeze until there is a
  222. //require call for it.
  223. defineCache[id] = [id, deps, factory];
  224. } else {
  225. runFactory(id, deps, factory);
  226. }
  227. }
  228. //define.require, which has access to all the values in the
  229. //cache. Useful for AMD modules that all have IDs in the file,
  230. //but need to finally export a value to node based on one of those
  231. //IDs.
  232. define.require = function (id) {
  233. if (loaderCache[id]) {
  234. return loaderCache[id];
  235. }
  236. if (defineCache[id]) {
  237. runFactory.apply(null, defineCache[id]);
  238. return loaderCache[id];
  239. }
  240. };
  241. define.amd = {};
  242. return define;
  243. })(null, function (id) { throw new Error("Dependency not found: " + id); }), requirejs = define.require;
  244. define("amber_vm/browser-compatibility", [], {});
  245. define("amber/browser-compatibility", [], {});
  246. /* ====================================================================
  247. |
  248. | Amber Smalltalk
  249. | http://amber-lang.net
  250. |
  251. ======================================================================
  252. ======================================================================
  253. |
  254. | Copyright (c) 2010-2014
  255. | Nicolas Petton <petton.nicolas@gmail.com>
  256. |
  257. | Copyright (c) 2012-2014
  258. | The Amber team https://github.com/amber-smalltalk?tab=members
  259. | Amber contributors https://github.com/amber-smalltalk/amber/graphs/contributors
  260. |
  261. | Amber is released under the MIT license
  262. |
  263. | Permission is hereby granted, free of charge, to any person obtaining
  264. | a copy of this software and associated documentation files (the
  265. | 'Software'), to deal in the Software without restriction, including
  266. | without limitation the rights to use, copy, modify, merge, publish,
  267. | distribute, sublicense, and/or sell copies of the Software, and to
  268. | permit persons to whom the Software is furnished to do so, subject to
  269. | the following conditions:
  270. |
  271. | The above copyright notice and this permission notice shall be
  272. | included in all copies or substantial portions of the Software.
  273. |
  274. | THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
  275. | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
  276. | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
  277. | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
  278. | CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
  279. | TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
  280. | SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
  281. |
  282. ==================================================================== */
  283. //jshint eqnull:true
  284. define("amber/boot", [ 'require', './browser-compatibility' ], function (require) {
  285. /* Reconfigurable micro composition system, https://github.com/amber-smalltalk/brikz */
  286. function Brikz(api, apiKey, initKey) {
  287. var brikz = this, backup = {};
  288. apiKey = apiKey || 'exports';
  289. initKey = initKey || '__init__';
  290. function mixin(src, target, what) {
  291. for (var keys = Object.keys(what||src), l=keys.length, i=0; i<l; ++i) {
  292. if (src == null) { target[keys[i]] = undefined; } else {
  293. var value = src[keys[i]];
  294. if (typeof value !== "undefined") { target[keys[i]] = value; }
  295. }
  296. }
  297. return target;
  298. }
  299. var d={value: null, enumerable: false, configurable: true, writable: true};
  300. Object.defineProperties(this, { ensure: d, rebuild: d });
  301. var exclude = mixin(this, {});
  302. this.rebuild = function () {
  303. Object.keys(backup).forEach(function (key) {
  304. mixin(null, api, (backup[key]||0)[apiKey]||{});
  305. });
  306. var oapi = mixin(api, {}), order = [], chk = {};
  307. brikz.ensure = function(key) {
  308. if (key in exclude) { return null; }
  309. var b = brikz[key], bak = backup[key];
  310. mixin(null, api, api);
  311. while (typeof b === "function") { b = new b(brikz, api, bak); }
  312. if (b && !chk[key]) { chk[key]=true; order.push(b); }
  313. if (b && !b[apiKey]) { b[apiKey] = mixin(api, {}); }
  314. brikz[key] = b;
  315. return b;
  316. };
  317. Object.keys(brikz).forEach(function (key) { brikz.ensure(key); });
  318. brikz.ensure = null;
  319. mixin(oapi, mixin(null, api, api));
  320. order.forEach(function(brik) { mixin(brik[apiKey] || {}, api); });
  321. order.forEach(function(brik) { if (brik[initKey]) brik[initKey](); });
  322. backup = mixin(brikz, {});
  323. };
  324. }
  325. /* Brikz end */
  326. function inherits(child, parent) {
  327. child.prototype = Object.create(parent.prototype, {
  328. constructor: { value: child,
  329. enumerable: false, configurable: true, writable: true }
  330. });
  331. return child;
  332. }
  333. var globals = {};
  334. globals.SmalltalkSettings = {};
  335. var api = Object.create(globals);
  336. var brikz = new Brikz(api);
  337. function RootBrik(brikz, st) {
  338. /* Smalltalk foundational objects */
  339. /* SmalltalkRoot is the hidden root of the Amber hierarchy.
  340. All objects including `Object` inherit from SmalltalkRoot */
  341. function SmalltalkRoot() {}
  342. function SmalltalkProtoObject() {}
  343. inherits(SmalltalkProtoObject, SmalltalkRoot);
  344. function SmalltalkObject() {}
  345. inherits(SmalltalkObject, SmalltalkProtoObject);
  346. function SmalltalkNil() {}
  347. inherits(SmalltalkNil, SmalltalkObject);
  348. this.Object = SmalltalkObject;
  349. this.nil = new SmalltalkNil();
  350. // Adds an `isNil` property to the `nil` object. When sending
  351. // nil objects from one environment to another, doing
  352. // `anObject == nil` (in JavaScript) does not always answer
  353. // true as the referenced nil object might come from the other
  354. // environment.
  355. Object.defineProperty(this.nil, 'isNil', {
  356. value: true,
  357. enumerable: false, configurable: false, writable: false
  358. });
  359. // Hidden root class of the system.
  360. this.rootAsClass = {fn: SmalltalkRoot};
  361. this.__init__ = function () {
  362. st.addPackage("Kernel-Objects");
  363. st.wrapClassName("ProtoObject", "Kernel-Objects", SmalltalkProtoObject, undefined, false);
  364. st.wrapClassName("Object", "Kernel-Objects", SmalltalkObject, globals.ProtoObject, false);
  365. st.wrapClassName("UndefinedObject", "Kernel-Objects", SmalltalkNil, globals.Object, false);
  366. };
  367. }
  368. function OrganizeBrik(brikz, st) {
  369. brikz.ensure("augments");
  370. var SmalltalkObject = brikz.ensure("root").Object;
  371. function SmalltalkOrganizer () {}
  372. function SmalltalkPackageOrganizer () {
  373. this.elements = [];
  374. }
  375. function SmalltalkClassOrganizer () {
  376. this.elements = [];
  377. }
  378. inherits(SmalltalkOrganizer, SmalltalkObject);
  379. inherits(SmalltalkPackageOrganizer, SmalltalkOrganizer);
  380. inherits(SmalltalkClassOrganizer, SmalltalkOrganizer);
  381. this.__init__ = function () {
  382. st.addPackage("Kernel-Infrastructure");
  383. st.wrapClassName("Organizer", "Kernel-Infrastructure", SmalltalkOrganizer, globals.Object, false);
  384. st.wrapClassName("PackageOrganizer", "Kernel-Infrastructure", SmalltalkPackageOrganizer, globals.Organizer, false);
  385. st.wrapClassName("ClassOrganizer", "Kernel-Infrastructure", SmalltalkClassOrganizer, globals.Organizer, false);
  386. };
  387. this.setupClassOrganization = function (klass) {
  388. klass.organization = new SmalltalkClassOrganizer();
  389. klass.organization.theClass = klass;
  390. };
  391. this.setupPackageOrganization = function (pkg) {
  392. pkg.organization = new SmalltalkPackageOrganizer();
  393. };
  394. this.addOrganizationElement = function (owner, element) {
  395. owner.organization.elements.addElement(element);
  396. };
  397. this.removeOrganizationElement = function (owner, element) {
  398. owner.organization.elements.removeElement(element);
  399. };
  400. }
  401. function DNUBrik(brikz, st) {
  402. brikz.ensure("selectorConversion");
  403. brikz.ensure("messageSend");
  404. var manip = brikz.ensure("manipulation");
  405. var rootAsClass = brikz.ensure("root").rootAsClass;
  406. /* Method not implemented handlers */
  407. var methods = [], checker = Object.create(null);
  408. this.selectors = [];
  409. this.get = function (stSelector) {
  410. var index = this.selectors.indexOf(stSelector);
  411. if(index !== -1) {
  412. return methods[index];
  413. }
  414. this.selectors.push(stSelector);
  415. var jsSelector = st.st2js(stSelector);
  416. checker[jsSelector] = true;
  417. var method = {jsSelector: jsSelector, fn: createHandler(stSelector)};
  418. methods.push(method);
  419. manip.installMethod(method, rootAsClass);
  420. return method;
  421. };
  422. this.isSelector = function (jsSelector) {
  423. return checker[jsSelector];
  424. };
  425. /* Dnu handler method */
  426. function createHandler(stSelector) {
  427. return function() {
  428. return brikz.messageSend.messageNotUnderstood(this, stSelector, arguments);
  429. };
  430. }
  431. this.installHandlers = function (klass) {
  432. for(var i=0; i<methods.length; i++) {
  433. manip.installMethodIfAbsent(methods[i], klass);
  434. }
  435. };
  436. }
  437. function ClassInitBrik(brikz, st) {
  438. var dnu = brikz.ensure("dnu");
  439. var manip = brikz.ensure("manipulation");
  440. var nil = brikz.ensure("root").nil;
  441. /* Initialize a class in its class hierarchy. Handle both classes and
  442. metaclasses. */
  443. st.init = function(klass) {
  444. st.initClass(klass);
  445. if(klass.klass && !klass.meta) {
  446. st.initClass(klass.klass);
  447. }
  448. };
  449. st.initClass = function(klass) {
  450. if(klass.wrapped) {
  451. copySuperclass(klass);
  452. dnu.installHandlers(klass);
  453. }
  454. };
  455. function copySuperclass(klass, superclass) {
  456. var inheritedMethods = Object.create(null);
  457. deinstallAllMethods(klass);
  458. for (superclass = superclass || klass.superclass;
  459. superclass && superclass !== nil;
  460. superclass = superclass.superclass) {
  461. for (var keys = Object.keys(superclass.methods), i = 0; i < keys.length; i++) {
  462. inheritMethodIfAbsent(superclass.methods[keys[i]]);
  463. }
  464. }
  465. manip.reinstallMethods(klass);
  466. function inheritMethodIfAbsent(method) {
  467. var selector = method.selector;
  468. //TODO: prepare klass methods into inheritedMethods to only test once
  469. if(klass.methods[selector] || inheritedMethods[selector]) {
  470. return;
  471. }
  472. manip.installMethod(method, klass);
  473. inheritedMethods[method.selector] = true;
  474. }
  475. }
  476. function deinstallAllMethods(klass) {
  477. var proto = klass.fn.prototype;
  478. for(var keys = Object.getOwnPropertyNames(proto), i=0; i<keys.length; i++) {
  479. var key = keys[i];
  480. if (dnu.isSelector(key)) {
  481. proto[key] = null;
  482. }
  483. }
  484. }
  485. }
  486. function ManipulationBrik(brikz, st) {
  487. this.installMethodIfAbsent = function (handler, klass) {
  488. if(!klass.fn.prototype[handler.jsSelector]) {
  489. installMethod(handler, klass);
  490. }
  491. };
  492. function installMethod (method, klass) {
  493. Object.defineProperty(klass.fn.prototype, method.jsSelector, {
  494. value: method.fn,
  495. enumerable: false, configurable: true, writable: true
  496. });
  497. }
  498. this.installMethod = installMethod;
  499. this.reinstallMethods = function (klass) {
  500. var methods = klass.methods;
  501. for(var keys = Object.keys(methods), i=0; i<keys.length; i++) {
  502. installMethod(methods[keys[i]], klass);
  503. }
  504. };
  505. }
  506. function ClassesBrik(brikz, st) {
  507. var org = brikz.ensure("organize");
  508. var root = brikz.ensure("root");
  509. brikz.ensure("classInit");
  510. var nil = root.nil;
  511. var rootAsClass = root.rootAsClass;
  512. var SmalltalkObject = root.Object;
  513. rootAsClass.klass = {fn: SmalltalkClass};
  514. function SmalltalkPackage() {}
  515. function SmalltalkBehavior() {}
  516. function SmalltalkClass() {}
  517. function SmalltalkMetaclass() {}
  518. inherits(SmalltalkPackage, SmalltalkObject);
  519. inherits(SmalltalkBehavior, SmalltalkObject);
  520. inherits(SmalltalkClass, SmalltalkBehavior);
  521. inherits(SmalltalkMetaclass, SmalltalkBehavior);
  522. SmalltalkMetaclass.prototype.meta = true;
  523. this.__init__ = function () {
  524. st.addPackage("Kernel-Classes");
  525. st.wrapClassName("Behavior", "Kernel-Classes", SmalltalkBehavior, globals.Object, false);
  526. st.wrapClassName("Metaclass", "Kernel-Classes", SmalltalkMetaclass, globals.Behavior, false);
  527. st.wrapClassName("Class", "Kernel-Classes", SmalltalkClass, globals.Behavior, false);
  528. // Manually bootstrap the metaclass hierarchy
  529. globals.ProtoObject.klass.superclass = rootAsClass.klass = globals.Class;
  530. addSubclass(globals.ProtoObject.klass);
  531. st.addPackage("Kernel-Infrastructure");
  532. st.wrapClassName("Package", "Kernel-Infrastructure", SmalltalkPackage, globals.Object, false);
  533. };
  534. /* Smalltalk classes */
  535. var classes = [];
  536. var wrappedClasses = [];
  537. /* We hold all Packages in a separate Object */
  538. st.packages = {};
  539. /* Smalltalk package creation. To add a Package, use smalltalk.addPackage() */
  540. function pkg(spec) {
  541. var that = new SmalltalkPackage();
  542. that.pkgName = spec.pkgName;
  543. org.setupPackageOrganization(that);
  544. that.properties = spec.properties || {};
  545. return that;
  546. }
  547. /* Smalltalk class creation. A class is an instance of an automatically
  548. created metaclass object. Newly created classes (not their metaclass)
  549. should be added to the smalltalk object, see smalltalk.addClass().
  550. Superclass linking is *not* handled here, see smalltalk.init() */
  551. function klass(spec) {
  552. spec = spec || {};
  553. var setSuperClass = spec.superclass;
  554. if(!spec.superclass) {
  555. spec.superclass = rootAsClass;
  556. }
  557. var meta = metaclass(spec);
  558. var that = meta.instanceClass;
  559. that.superclass = setSuperClass;
  560. that.fn = spec.fn || inherits(function () {}, spec.superclass.fn);
  561. that.subclasses = [];
  562. setupClass(that, spec);
  563. that.className = spec.className;
  564. that.wrapped = spec.wrapped || false;
  565. meta.className = spec.className + ' class';
  566. meta.superclass = spec.superclass.klass;
  567. return that;
  568. }
  569. function metaclass(spec) {
  570. spec = spec || {};
  571. var that = new SmalltalkMetaclass();
  572. that.fn = inherits(function () {}, spec.superclass.klass.fn);
  573. that.instanceClass = new that.fn();
  574. setupClass(that);
  575. return that;
  576. }
  577. SmalltalkBehavior.prototype.toString = function () {
  578. return 'Smalltalk ' + this.className;
  579. };
  580. function wireKlass(klass) {
  581. Object.defineProperty(klass.fn.prototype, "klass", {
  582. value: klass,
  583. enumerable: false, configurable: true, writable: true
  584. });
  585. }
  586. function setupClass(klass, spec) {
  587. spec = spec || {};
  588. klass.iVarNames = spec.iVarNames || [];
  589. klass.pkg = spec.pkg;
  590. org.setupClassOrganization(klass);
  591. Object.defineProperty(klass, "methods", {
  592. value: Object.create(null),
  593. enumerable: false, configurable: true, writable: true
  594. });
  595. wireKlass(klass);
  596. }
  597. /* Add a package to the smalltalk.packages object, creating a new one if needed.
  598. If pkgName is null or empty we return nil, which is an allowed package for a class.
  599. If package already exists we still update the properties of it. */
  600. st.addPackage = function(pkgName, properties) {
  601. if(!pkgName) {return nil;}
  602. if(!(st.packages[pkgName])) {
  603. st.packages[pkgName] = pkg({
  604. pkgName: pkgName,
  605. properties: properties
  606. });
  607. } else {
  608. if(properties) {
  609. st.packages[pkgName].properties = properties;
  610. }
  611. }
  612. return st.packages[pkgName];
  613. };
  614. /* Add a class to the smalltalk object, creating a new one if needed.
  615. A Package is lazily created if it does not exist with given name. */
  616. st.addClass = function(className, superclass, iVarNames, pkgName) {
  617. // While subclassing nil is allowed, it might be an error, so
  618. // warn about it.
  619. if (typeof superclass == 'undefined' || superclass == nil) {
  620. console.warn('Compiling ' + className + ' as a subclass of `nil`. A dependency might be missing.');
  621. }
  622. rawAddClass(pkgName, className, superclass, iVarNames, false, null);
  623. };
  624. function rawAddClass(pkgName, className, superclass, iVarNames, wrapped, fn) {
  625. var pkg = st.packages[pkgName];
  626. if (!pkg) {
  627. throw new Error("Missing package "+pkgName);
  628. }
  629. if (!superclass || superclass == nil) { superclass = null; }
  630. if(globals[className] && globals[className].superclass == superclass) {
  631. // globals[className].superclass = superclass;
  632. globals[className].iVarNames = iVarNames || [];
  633. if (pkg) globals[className].pkg = pkg;
  634. if (fn) {
  635. fn.prototype = globals[className].fn.prototype;
  636. globals[className].fn = fn;
  637. fn.prototype.constructor = fn;
  638. }
  639. } else {
  640. if(globals[className]) {
  641. st.removeClass(globals[className]);
  642. }
  643. globals[className] = klass({
  644. className: className,
  645. superclass: superclass,
  646. pkg: pkg,
  647. iVarNames: iVarNames,
  648. fn: fn,
  649. wrapped: wrapped
  650. });
  651. addSubclass(globals[className]);
  652. }
  653. classes.addElement(globals[className]);
  654. org.addOrganizationElement(pkg, globals[className]);
  655. }
  656. st.removeClass = function(klass) {
  657. org.removeOrganizationElement(klass.pkg, klass);
  658. classes.removeElement(klass);
  659. removeSubclass(klass);
  660. delete globals[klass.className];
  661. };
  662. function addSubclass(klass) {
  663. if(klass.superclass) {
  664. klass.superclass.subclasses.addElement(klass);
  665. }
  666. }
  667. function removeSubclass(klass) {
  668. if(klass.superclass) {
  669. klass.superclass.subclasses.removeElement(klass);
  670. }
  671. }
  672. /* Create a new class wrapping a JavaScript constructor, and add it to the
  673. global smalltalk object. Package is lazily created if it does not exist with given name. */
  674. st.wrapClassName = function(className, pkgName, fn, superclass, wrapped) {
  675. wrapped = wrapped !== false;
  676. rawAddClass(pkgName, className, superclass, globals[className] && globals[className].iVarNames, wrapped, fn);
  677. if(wrapped) {
  678. wrappedClasses.addElement(globals[className]);
  679. }
  680. };
  681. /* Manually set the constructor of an existing Smalltalk klass, making it a wrapped class. */
  682. st.setClassConstructor = function(klass, constructor) {
  683. wrappedClasses.addElement(klass);
  684. klass.wrapped = true;
  685. klass.fn = constructor;
  686. // The fn property changed. We need to add back the klass property to the prototype
  687. wireKlass(klass);
  688. st.initClass(klass);
  689. };
  690. /* Create an alias for an existing class */
  691. st.alias = function(klass, alias) {
  692. globals[alias] = klass;
  693. };
  694. /* Answer all registered Smalltalk classes */
  695. //TODO: remove the function and make smalltalk.classes an array
  696. st.classes = function() {
  697. return classes;
  698. };
  699. st.wrappedClasses = function() {
  700. return wrappedClasses;
  701. };
  702. // Still used, but could go away now that subclasses are stored
  703. // into classes directly.
  704. st.allSubclasses = function(klass) {
  705. return klass._allSubclasses();
  706. };
  707. }
  708. function MethodsBrik(brikz, st) {
  709. var manip = brikz.ensure("manipulation");
  710. var org = brikz.ensure("organize");
  711. var stInit = brikz.ensure("stInit");
  712. var dnu = brikz.ensure("dnu");
  713. var SmalltalkObject = brikz.ensure("root").Object;
  714. brikz.ensure("selectorConversion");
  715. brikz.ensure("classes");
  716. brikz.ensure("classInit");
  717. function SmalltalkMethod() {}
  718. inherits(SmalltalkMethod, SmalltalkObject);
  719. this.__init__ = function () {
  720. st.addPackage("Kernel-Methods");
  721. st.wrapClassName("CompiledMethod", "Kernel-Methods", SmalltalkMethod, globals.Object, false);
  722. };
  723. /* Smalltalk method object. To add a method to a class,
  724. use smalltalk.addMethod() */
  725. st.method = function(spec) {
  726. var that = new SmalltalkMethod();
  727. that.selector = spec.selector;
  728. that.jsSelector = spec.jsSelector;
  729. that.args = spec.args || {};
  730. // spec.category is kept for compatibility
  731. that.protocol = spec.protocol || spec.category;
  732. that.source = spec.source;
  733. that.messageSends = spec.messageSends || [];
  734. that.referencedClasses = spec.referencedClasses || [];
  735. that.fn = spec.fn;
  736. return that;
  737. };
  738. function installNewDnuHandler(newHandler) {
  739. var wrappedClasses = st.wrappedClasses();
  740. for(var i = 0; i < wrappedClasses.length; i++) {
  741. manip.installMethodIfAbsent(newHandler, wrappedClasses[i]);
  742. }
  743. }
  744. /* Add/remove a method to/from a class */
  745. st.addMethod = function (method, klass) {
  746. if (!(method.jsSelector)) {
  747. method.jsSelector = st.st2js(method.selector);
  748. }
  749. manip.installMethod(method, klass);
  750. klass.methods[method.selector] = method;
  751. method.methodClass = klass;
  752. // During the bootstrap, #addCompiledMethod is not used.
  753. // Therefore we populate the organizer here too
  754. org.addOrganizationElement(klass, method.protocol);
  755. propagateMethodChange(klass);
  756. var usedSelectors = method.messageSends;
  757. var dnuHandlers = [];
  758. dnuHandlers.push(dnu.get(method.selector));
  759. for(var i=0; i<usedSelectors.length; i++) {
  760. dnuHandlers.push(dnu.get(usedSelectors[i]));
  761. }
  762. if(stInit.initialized()) {
  763. dnuHandlers.forEach(function(each) {
  764. installNewDnuHandler(each);
  765. });
  766. }
  767. };
  768. function propagateMethodChange(klass) {
  769. // If already initialized (else it will be done later anyway),
  770. // re-initialize all subclasses to ensure the method change
  771. // propagation (for wrapped classes, not using the prototype
  772. // chain).
  773. //TODO: optimize, only one method need to be updated, not all of them
  774. if (stInit.initialized()) {
  775. st.allSubclasses(klass).forEach(function (subclass) {
  776. st.initClass(subclass);
  777. });
  778. }
  779. }
  780. st.removeMethod = function(method, klass) {
  781. if (klass !== method.methodClass) {
  782. throw new Error(
  783. "Refusing to remove method " +
  784. method.methodClass.className + ">>" + method.selector +
  785. " from different class " +
  786. klass.className);
  787. }
  788. delete klass.fn.prototype[st.st2js(method.selector)];
  789. delete klass.methods[method.selector];
  790. st.initClass(klass);
  791. propagateMethodChange(klass);
  792. // Do *not* delete protocols from here.
  793. // This is handled by #removeCompiledMethod
  794. };
  795. /* Answer all method selectors based on dnu handlers */
  796. st.allSelectors = function() {
  797. return dnu.selectors;
  798. };
  799. }
  800. function AugmentsBrik(brikz, st) {
  801. /* Array extensions */
  802. Array.prototype.addElement = function(el) {
  803. if(typeof el === 'undefined') { return; }
  804. if(this.indexOf(el) == -1) {
  805. this.push(el);
  806. }
  807. };
  808. Array.prototype.removeElement = function(el) {
  809. var i = this.indexOf(el);
  810. if (i !== -1) { this.splice(i, 1); }
  811. };
  812. }
  813. function SmalltalkInitBrik(brikz, st) {
  814. brikz.ensure("classInit");
  815. brikz.ensure("classes");
  816. var nil = brikz.ensure("root").nil;
  817. var initialized = false;
  818. /* Smalltalk initialization. Called on page load */
  819. st.initialize = function() {
  820. if(initialized) { return; }
  821. st.classes().forEach(function(klass) {
  822. st.init(klass);
  823. });
  824. runnable();
  825. st.classes().forEach(function(klass) {
  826. klass._initialize();
  827. });
  828. initialized = true;
  829. };
  830. this.initialized = function () {
  831. return initialized;
  832. };
  833. this.__init__ = function () {
  834. st.addPackage("Kernel-Methods");
  835. st.wrapClassName("Number", "Kernel-Objects", Number, globals.Object);
  836. st.wrapClassName("BlockClosure", "Kernel-Methods", Function, globals.Object);
  837. st.wrapClassName("Boolean", "Kernel-Objects", Boolean, globals.Object);
  838. st.wrapClassName("Date", "Kernel-Objects", Date, globals.Object);
  839. st.addPackage("Kernel-Collections");
  840. st.addClass("Collection", globals.Object, null, "Kernel-Collections");
  841. st.addClass("IndexableCollection", globals.Collection, null, "Kernel-Collections");
  842. st.addClass("SequenceableCollection", globals.IndexableCollection, null, "Kernel-Collections");
  843. st.addClass("CharacterArray", globals.SequenceableCollection, null, "Kernel-Collections");
  844. st.wrapClassName("String", "Kernel-Collections", String, globals.CharacterArray);
  845. st.wrapClassName("Array", "Kernel-Collections", Array, globals.SequenceableCollection);
  846. st.wrapClassName("RegularExpression", "Kernel-Collections", RegExp, globals.Object);
  847. st.addPackage("Kernel-Exceptions");
  848. st.wrapClassName("Error", "Kernel-Exceptions", Error, globals.Object);
  849. /* Alias definitions */
  850. st.alias(globals.Array, "OrderedCollection");
  851. st.alias(globals.Date, "Time");
  852. };
  853. }
  854. function PrimitivesBrik(brikz, st) {
  855. /* Unique ID number generator */
  856. var oid = 0;
  857. st.nextId = function() {
  858. oid += 1;
  859. return oid;
  860. };
  861. /* Converts a JavaScript object to valid Smalltalk Object */
  862. st.readJSObject = function(js) {
  863. var readObject = js.constructor === Object;
  864. var readArray = js.constructor === Array;
  865. var object = readObject ? globals.Dictionary._new() : readArray ? [] : js;
  866. for(var i in js) {
  867. if(readObject) {
  868. object._at_put_(i, st.readJSObject(js[i]));
  869. }
  870. if(readArray) {
  871. object[i] = st.readJSObject(js[i]);
  872. }
  873. }
  874. return object;
  875. };
  876. /* Boolean assertion */
  877. st.assert = function(shouldBeBoolean) {
  878. // jshint -W041
  879. if (undefined !== shouldBeBoolean && shouldBeBoolean.klass === globals.Boolean) {
  880. return shouldBeBoolean == true;
  881. } else {
  882. globals.NonBooleanReceiver._new()._object_(shouldBeBoolean)._signal();
  883. }
  884. };
  885. /* List of all reserved words in JavaScript. They may not be used as variables
  886. in Smalltalk. */
  887. // list of reserved JavaScript keywords as of
  888. // http://es5.github.com/#x7.6.1.1
  889. // and
  890. // http://people.mozilla.org/~jorendorff/es6-draft.html#sec-7.6.1
  891. st.reservedWords = ['break', 'case', 'catch', 'continue', 'debugger',
  892. 'default', 'delete', 'do', 'else', 'finally', 'for', 'function',
  893. 'if', 'in', 'instanceof', 'new', 'return', 'switch', 'this', 'throw',
  894. 'try', 'typeof', 'var', 'void', 'while', 'with',
  895. // ES5: future use: http://es5.github.com/#x7.6.1.2
  896. 'class', 'const', 'enum', 'export', 'extends', 'import', 'super',
  897. // ES5: future use in strict mode
  898. 'implements', 'interface', 'let', 'package', 'private', 'protected',
  899. 'public', 'static', 'yield'];
  900. st.globalJsVariables = ['jQuery', 'window', 'document', 'process', 'global'];
  901. }
  902. function RuntimeBrik(brikz, st) {
  903. brikz.ensure("selectorConversion");
  904. var root = brikz.ensure("root");
  905. var nil = root.nil;
  906. var SmalltalkObject = root.Object;
  907. function SmalltalkMethodContext(home, setup) {
  908. this.sendIdx = {};
  909. this.homeContext = home;
  910. this.setup = setup || function() {};
  911. this.supercall = false;
  912. }
  913. inherits(SmalltalkMethodContext, SmalltalkObject);
  914. this.__init__ = function () {
  915. st.addPackage("Kernel-Methods");
  916. st.wrapClassName("MethodContext", "Kernel-Methods", SmalltalkMethodContext, globals.Object, false);
  917. // Fallbacks
  918. SmalltalkMethodContext.prototype.locals = {};
  919. SmalltalkMethodContext.prototype.receiver = null;
  920. SmalltalkMethodContext.prototype.selector = null;
  921. SmalltalkMethodContext.prototype.lookupClass = null;
  922. SmalltalkMethodContext.prototype.fill = function(receiver, selector, locals, lookupClass) {
  923. this.receiver = receiver;
  924. this.selector = selector;
  925. this.locals = locals || {};
  926. this.lookupClass = lookupClass;
  927. if(this.homeContext) {
  928. this.homeContext.evaluatedSelector = selector;
  929. }
  930. };
  931. SmalltalkMethodContext.prototype.fillBlock = function(locals, ctx, index) {
  932. this.locals = locals || {};
  933. this.outerContext = ctx;
  934. this.index = index || 0;
  935. };
  936. SmalltalkMethodContext.prototype.init = function() {
  937. var home = this.homeContext;
  938. if(home) {
  939. home.init();
  940. }
  941. this.setup(this);
  942. };
  943. SmalltalkMethodContext.prototype.method = function() {
  944. var method;
  945. var lookup = this.lookupClass || this.receiver.klass;
  946. while(!method && lookup) {
  947. method = lookup.methods[st.js2st(this.selector)];
  948. lookup = lookup.superclass;
  949. }
  950. return method;
  951. };
  952. };
  953. /* This is the current call context object. While it is publicly available,
  954. Use smalltalk.getThisContext() instead which will answer a safe copy of
  955. the current context */
  956. st.thisContext = undefined;
  957. st.withContext = function(worker, setup) {
  958. if(st.thisContext) {
  959. return inContext(worker, setup);
  960. } else {
  961. try {
  962. return inContext(worker, setup);
  963. } catch(error) {
  964. handleError(error);
  965. st.thisContext = null;
  966. // Rethrow the error in any case.
  967. error.amberHandled = true;
  968. throw error;
  969. }
  970. }
  971. };
  972. function inContext(worker, setup) {
  973. var context = pushContext(setup);
  974. var result = worker(context);
  975. popContext(context);
  976. return result;
  977. }
  978. /* Wrap a JavaScript exception in a Smalltalk Exception.
  979. In case of a RangeError, stub the stack after 100 contexts to
  980. avoid another RangeError later when the stack is manipulated. */
  981. function wrappedError(error) {
  982. var errorWrapper = globals.JavaScriptException._on_(error);
  983. // Add the error to the context, so it is visible in the stack
  984. try { errorWrapper._signal(); } catch (ex) {}
  985. var context = st.getThisContext();
  986. if(isRangeError(error)) {
  987. stubContextStack(context);
  988. }
  989. errorWrapper._context_(context);
  990. return errorWrapper;
  991. }
  992. /* Stub the context stack after 100 contexts */
  993. function stubContextStack(context) {
  994. var currentContext = context;
  995. var contexts = 0;
  996. while(contexts < 100) {
  997. if(currentContext) {
  998. currentContext = currentContext.homeContext;
  999. }
  1000. contexts++;
  1001. }
  1002. if(currentContext) {
  1003. currentContext.homeContext = undefined;
  1004. }
  1005. }
  1006. function isRangeError(error) {
  1007. return error instanceof RangeError;
  1008. }
  1009. /* Handles Smalltalk errors. Triggers the registered ErrorHandler
  1010. (See the Smalltalk class ErrorHandler and its subclasses */
  1011. function handleError(error) {
  1012. if (!error.smalltalkError) {
  1013. error = wrappedError(error);
  1014. }
  1015. globals.ErrorHandler._handleError_(error);
  1016. }
  1017. /* Handle thisContext pseudo variable */
  1018. st.getThisContext = function() {
  1019. if(st.thisContext) {
  1020. st.thisContext.init();
  1021. return st.thisContext;
  1022. } else {
  1023. return nil;
  1024. }
  1025. };
  1026. function pushContext(setup) {
  1027. var newContext = st.thisContext = new SmalltalkMethodContext(st.thisContext, setup);
  1028. return newContext;
  1029. }
  1030. function popContext(context) {
  1031. st.thisContext = context.homeContext;
  1032. }
  1033. }
  1034. function MessageSendBrik(brikz, st) {
  1035. brikz.ensure("selectorConversion");
  1036. var nil = brikz.ensure("root").nil;
  1037. /* Handles unhandled errors during message sends */
  1038. // simply send the message and handle #dnu:
  1039. st.send = function(receiver, jsSelector, args, klass) {
  1040. var method;
  1041. if(receiver === null) {
  1042. receiver = nil;
  1043. }
  1044. method = klass ? klass.fn.prototype[jsSelector] : receiver.klass && receiver[jsSelector];
  1045. if(method) {
  1046. return method.apply(receiver, args);
  1047. } else {
  1048. return messageNotUnderstood(receiver, st.js2st(jsSelector), args);
  1049. }
  1050. };
  1051. function invokeDnuMethod(receiver, stSelector, args) {
  1052. return receiver._doesNotUnderstand_(
  1053. globals.Message._new()
  1054. ._selector_(stSelector)
  1055. ._arguments_([].slice.call(args))
  1056. );
  1057. }
  1058. /* Handles #dnu: *and* JavaScript method calls.
  1059. if the receiver has no klass, we consider it a JS object (outside of the
  1060. Amber system). Else assume that the receiver understands #doesNotUnderstand: */
  1061. function messageNotUnderstood(receiver, stSelector, args) {
  1062. if (receiver.klass !== undefined && !receiver.allowJavaScriptCalls) {
  1063. return invokeDnuMethod(receiver, stSelector, args);
  1064. }
  1065. /* Call a method of a JS object, or answer a property if it exists.
  1066. Else try wrapping a JSObjectProxy around the receiver. */
  1067. var propertyName = st.st2prop(stSelector);
  1068. if (!(propertyName in receiver)) {
  1069. return invokeDnuMethod(globals.JSObjectProxy._on_(receiver), stSelector, args);
  1070. }
  1071. return accessJavaScript(receiver, propertyName, args);
  1072. }
  1073. /* If the object property is a function, then call it, except if it starts with
  1074. an uppercase character (we probably want to answer the function itself in this
  1075. case and send it #new from Amber).
  1076. Converts keyword-based selectors by using the first
  1077. keyword only, but keeping all message arguments.
  1078. Example:
  1079. "self do: aBlock with: anObject" -> "self.do(aBlock, anObject)" */
  1080. function accessJavaScript(receiver, propertyName, args) {
  1081. var propertyValue = receiver[propertyName];
  1082. if (typeof propertyValue === "function" && !/^[A-Z]/.test(propertyName)) {
  1083. return propertyValue.apply(receiver, args);
  1084. } else if (args.length > 0) {
  1085. receiver[propertyName] = args[0];
  1086. return nil;
  1087. } else {
  1088. return propertyValue;
  1089. }
  1090. }
  1091. st.accessJavaScript = accessJavaScript;
  1092. this.messageNotUnderstood = messageNotUnderstood;
  1093. }
  1094. function SelectorConversionBrik(brikz, st) {
  1095. /* Convert a Smalltalk selector into a JS selector */
  1096. st.st2js = function(string) {
  1097. var selector = '_' + string;
  1098. selector = selector.replace(/:/g, '_');
  1099. selector = selector.replace(/[\&]/g, '_and');
  1100. selector = selector.replace(/[\|]/g, '_or');
  1101. selector = selector.replace(/[+]/g, '_plus');
  1102. selector = selector.replace(/-/g, '_minus');
  1103. selector = selector.replace(/[*]/g ,'_star');
  1104. selector = selector.replace(/[\/]/g ,'_slash');
  1105. selector = selector.replace(/[\\]/g ,'_backslash');
  1106. selector = selector.replace(/[\~]/g ,'_tild');
  1107. selector = selector.replace(/>/g ,'_gt');
  1108. selector = selector.replace(/</g ,'_lt');
  1109. selector = selector.replace(/=/g ,'_eq');
  1110. selector = selector.replace(/,/g ,'_comma');
  1111. selector = selector.replace(/[@]/g ,'_at');
  1112. return selector;
  1113. };
  1114. /* Convert a string to a valid smalltalk selector.
  1115. if you modify the following functions, also change st2js
  1116. accordingly */
  1117. st.js2st = function(selector) {
  1118. if(selector.match(/__/)) {
  1119. return binaryJsToSt(selector);
  1120. } else {
  1121. return keywordJsToSt(selector);
  1122. }
  1123. };
  1124. function keywordJsToSt(selector) {
  1125. return selector.replace(/^_/, '').replace(/_/g, ':');
  1126. }
  1127. function binaryJsToSt(selector) {
  1128. return selector
  1129. .replace(/^_/, '')
  1130. .replace(/_and/g, '&')
  1131. .replace(/_or/g, '|')
  1132. .replace(/_plus/g, '+')
  1133. .replace(/_minus/g, '-')
  1134. .replace(/_star/g, '*')
  1135. .replace(/_slash/g, '/')
  1136. .replace(/_backslash/g, '\\')
  1137. .replace(/_tild/g, '~')
  1138. .replace(/_gt/g, '>')
  1139. .replace(/_lt/g, '<')
  1140. .replace(/_eq/g, '=')
  1141. .replace(/_comma/g, ',')
  1142. .replace(/_at/g, '@');
  1143. }
  1144. st.st2prop = function (stSelector) {
  1145. var colonPosition = stSelector.indexOf(':');
  1146. return colonPosition === -1 ? stSelector : stSelector.slice(0, colonPosition);
  1147. };
  1148. // Backward-compatible names, deprecated.
  1149. st.selector = st.st2js;
  1150. st.convertSelector = st.js2st;
  1151. }
  1152. /* Adds AMD and requirejs related methods to the smalltalk object */
  1153. function AMDBrik(brikz, st) {
  1154. this.__init__ = function () {
  1155. st.amdRequire = require;
  1156. st.defaultTransportType = st.defaultTransportType || "amd";
  1157. st.defaultAmdNamespace = st.defaultAmdNamespace || "amber_core";
  1158. };
  1159. }
  1160. /* Defines asReceiver to be present at load time */
  1161. /* (logically it belongs more to PrimitiveBrik) */
  1162. function AsReceiverBrik(brikz, st) {
  1163. var nil = brikz.ensure("root").nil;
  1164. /**
  1165. * This function is used all over the compiled amber code.
  1166. * It takes any value (JavaScript or Smalltalk)
  1167. * and returns a proper Amber Smalltalk receiver.
  1168. *
  1169. * null or undefined -> nil,
  1170. * plain JS object -> wrapped JS object,
  1171. * otherwise unchanged
  1172. */
  1173. this.asReceiver = function (o) {
  1174. if (o == null) { return nil; }
  1175. if (o.klass) { return o; }
  1176. return globals.JSObjectProxy._on_(o);
  1177. };
  1178. }
  1179. /* Making smalltalk that can load */
  1180. brikz.root = RootBrik;
  1181. brikz.dnu = DNUBrik;
  1182. brikz.organize = OrganizeBrik;
  1183. brikz.selectorConversion = SelectorConversionBrik;
  1184. brikz.classInit = ClassInitBrik;
  1185. brikz.manipulation = ManipulationBrik;
  1186. brikz.classes = ClassesBrik;
  1187. brikz.methods = MethodsBrik;
  1188. brikz.stInit = SmalltalkInitBrik;
  1189. brikz.augments = AugmentsBrik;
  1190. brikz.asReceiver = AsReceiverBrik;
  1191. brikz.amd = AMDBrik;
  1192. brikz.rebuild();
  1193. /* Making smalltalk that can run */
  1194. function runnable () {
  1195. brikz.messageSend = MessageSendBrik;
  1196. brikz.runtime = RuntimeBrik;
  1197. brikz.primitives = PrimitivesBrik;
  1198. brikz.rebuild();
  1199. }
  1200. return { api: api, /*deprecated:*/vm: api, nil: brikz.root.nil, globals: globals, asReceiver: brikz.asReceiver.asReceiver };
  1201. });
  1202. define("amber_vm/smalltalk", ["./boot"], function (boot) {
  1203. return boot.vm;
  1204. });
  1205. define("amber_vm/globals", ["./boot"], function (boot) {
  1206. return boot.globals;
  1207. });
  1208. define("amber_vm/nil", ["./boot"], function (boot) {
  1209. return boot.nil;
  1210. });
  1211. define("amber_vm/_st", ["./boot"], function (boot) {
  1212. return boot.asReceiver;
  1213. });
  1214. define("amber_core/Kernel-Objects", ["amber/boot"], function($boot){
  1215. var $core=$boot.api,nil=$boot.nil,$recv=$boot.asReceiver,$globals=$boot.globals;
  1216. var smalltalk=$core,_st=$recv,globals=$globals;
  1217. $core.addPackage('Kernel-Objects');
  1218. $core.packages["Kernel-Objects"].transport = {"type":"amd","amdNamespace":"amber_core"};
  1219. $core.addClass('ProtoObject', null, [], 'Kernel-Objects');
  1220. //>>excludeStart("ide", pragmas.excludeIdeData);
  1221. $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.";
  1222. //>>excludeEnd("ide");
  1223. $core.addMethod(
  1224. $core.method({
  1225. selector: "=",
  1226. protocol: 'comparing',
  1227. fn: function (anObject){
  1228. var self=this;
  1229. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1230. return $core.withContext(function($ctx1) {
  1231. //>>excludeEnd("ctx");
  1232. var $1;
  1233. $1=self.__eq_eq(anObject);
  1234. return $1;
  1235. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1236. }, function($ctx1) {$ctx1.fill(self,"=",{anObject:anObject},$globals.ProtoObject)});
  1237. //>>excludeEnd("ctx");
  1238. },
  1239. //>>excludeStart("ide", pragmas.excludeIdeData);
  1240. args: ["anObject"],
  1241. source: "= anObject\x0a\x09^ self == anObject",
  1242. referencedClasses: [],
  1243. //>>excludeEnd("ide");
  1244. messageSends: ["=="]
  1245. }),
  1246. $globals.ProtoObject);
  1247. $core.addMethod(
  1248. $core.method({
  1249. selector: "==",
  1250. protocol: 'comparing',
  1251. fn: function (anObject){
  1252. var self=this;
  1253. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1254. return $core.withContext(function($ctx1) {
  1255. //>>excludeEnd("ctx");
  1256. var $2,$1;
  1257. $2=self._identityHash();
  1258. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1259. $ctx1.sendIdx["identityHash"]=1;
  1260. //>>excludeEnd("ctx");
  1261. $1=$recv($2).__eq($recv(anObject)._identityHash());
  1262. return $1;
  1263. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1264. }, function($ctx1) {$ctx1.fill(self,"==",{anObject:anObject},$globals.ProtoObject)});
  1265. //>>excludeEnd("ctx");
  1266. },
  1267. //>>excludeStart("ide", pragmas.excludeIdeData);
  1268. args: ["anObject"],
  1269. source: "== anObject\x0a\x09^ self identityHash = anObject identityHash",
  1270. referencedClasses: [],
  1271. //>>excludeEnd("ide");
  1272. messageSends: ["=", "identityHash"]
  1273. }),
  1274. $globals.ProtoObject);
  1275. $core.addMethod(
  1276. $core.method({
  1277. selector: "asString",
  1278. protocol: 'converting',
  1279. fn: function (){
  1280. var self=this;
  1281. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1282. return $core.withContext(function($ctx1) {
  1283. //>>excludeEnd("ctx");
  1284. var $1;
  1285. $1=self._printString();
  1286. return $1;
  1287. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1288. }, function($ctx1) {$ctx1.fill(self,"asString",{},$globals.ProtoObject)});
  1289. //>>excludeEnd("ctx");
  1290. },
  1291. //>>excludeStart("ide", pragmas.excludeIdeData);
  1292. args: [],
  1293. source: "asString\x0a\x09^ self printString",
  1294. referencedClasses: [],
  1295. //>>excludeEnd("ide");
  1296. messageSends: ["printString"]
  1297. }),
  1298. $globals.ProtoObject);
  1299. $core.addMethod(
  1300. $core.method({
  1301. selector: "class",
  1302. protocol: 'accessing',
  1303. fn: function (){
  1304. var self=this;
  1305. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1306. return $core.withContext(function($ctx1) {
  1307. //>>excludeEnd("ctx");
  1308. return self.klass;
  1309. return self;
  1310. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1311. }, function($ctx1) {$ctx1.fill(self,"class",{},$globals.ProtoObject)});
  1312. //>>excludeEnd("ctx");
  1313. },
  1314. //>>excludeStart("ide", pragmas.excludeIdeData);
  1315. args: [],
  1316. source: "class\x0a\x09<return self.klass>",
  1317. referencedClasses: [],
  1318. //>>excludeEnd("ide");
  1319. messageSends: []
  1320. }),
  1321. $globals.ProtoObject);
  1322. $core.addMethod(
  1323. $core.method({
  1324. selector: "doesNotUnderstand:",
  1325. protocol: 'error handling',
  1326. fn: function (aMessage){
  1327. var self=this;
  1328. function $MessageNotUnderstood(){return $globals.MessageNotUnderstood||(typeof MessageNotUnderstood=="undefined"?nil:MessageNotUnderstood)}
  1329. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1330. return $core.withContext(function($ctx1) {
  1331. //>>excludeEnd("ctx");
  1332. var $1,$2;
  1333. $1=$recv($MessageNotUnderstood())._new();
  1334. $recv($1)._receiver_(self);
  1335. $recv($1)._message_(aMessage);
  1336. $2=$recv($1)._signal();
  1337. return self;
  1338. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1339. }, function($ctx1) {$ctx1.fill(self,"doesNotUnderstand:",{aMessage:aMessage},$globals.ProtoObject)});
  1340. //>>excludeEnd("ctx");
  1341. },
  1342. //>>excludeStart("ide", pragmas.excludeIdeData);
  1343. args: ["aMessage"],
  1344. source: "doesNotUnderstand: aMessage\x0a\x09MessageNotUnderstood new\x0a\x09\x09receiver: self;\x0a\x09\x09message: aMessage;\x0a\x09\x09signal",
  1345. referencedClasses: ["MessageNotUnderstood"],
  1346. //>>excludeEnd("ide");
  1347. messageSends: ["receiver:", "new", "message:", "signal"]
  1348. }),
  1349. $globals.ProtoObject);
  1350. $core.addMethod(
  1351. $core.method({
  1352. selector: "evaluate:on:",
  1353. protocol: 'evaluating',
  1354. fn: function (aString,anEvaluator){
  1355. var self=this;
  1356. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1357. return $core.withContext(function($ctx1) {
  1358. //>>excludeEnd("ctx");
  1359. var $1;
  1360. $1=$recv(anEvaluator)._evaluate_receiver_(aString,self);
  1361. return $1;
  1362. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1363. }, function($ctx1) {$ctx1.fill(self,"evaluate:on:",{aString:aString,anEvaluator:anEvaluator},$globals.ProtoObject)});
  1364. //>>excludeEnd("ctx");
  1365. },
  1366. //>>excludeStart("ide", pragmas.excludeIdeData);
  1367. args: ["aString", "anEvaluator"],
  1368. source: "evaluate: aString on: anEvaluator\x0a\x09^ anEvaluator evaluate: aString receiver: self",
  1369. referencedClasses: [],
  1370. //>>excludeEnd("ide");
  1371. messageSends: ["evaluate:receiver:"]
  1372. }),
  1373. $globals.ProtoObject);
  1374. $core.addMethod(
  1375. $core.method({
  1376. selector: "identityHash",
  1377. protocol: 'accessing',
  1378. fn: function (){
  1379. var self=this;
  1380. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1381. return $core.withContext(function($ctx1) {
  1382. //>>excludeEnd("ctx");
  1383. var hash=self.identityHash;
  1384. if (hash) return hash;
  1385. hash=$core.nextId();
  1386. Object.defineProperty(self, 'identityHash', {value:hash});
  1387. return hash;
  1388. ;
  1389. return self;
  1390. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1391. }, function($ctx1) {$ctx1.fill(self,"identityHash",{},$globals.ProtoObject)});
  1392. //>>excludeEnd("ctx");
  1393. },
  1394. //>>excludeStart("ide", pragmas.excludeIdeData);
  1395. args: [],
  1396. source: "identityHash\x0a\x09<\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>",
  1397. referencedClasses: [],
  1398. //>>excludeEnd("ide");
  1399. messageSends: []
  1400. }),
  1401. $globals.ProtoObject);
  1402. $core.addMethod(
  1403. $core.method({
  1404. selector: "initialize",
  1405. protocol: 'initialization',
  1406. fn: function (){
  1407. var self=this;
  1408. return self;
  1409. },
  1410. //>>excludeStart("ide", pragmas.excludeIdeData);
  1411. args: [],
  1412. source: "initialize",
  1413. referencedClasses: [],
  1414. //>>excludeEnd("ide");
  1415. messageSends: []
  1416. }),
  1417. $globals.ProtoObject);
  1418. $core.addMethod(
  1419. $core.method({
  1420. selector: "inspect",
  1421. protocol: 'inspecting',
  1422. fn: function (){
  1423. var self=this;
  1424. function $Inspector(){return $globals.Inspector||(typeof Inspector=="undefined"?nil:Inspector)}
  1425. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1426. return $core.withContext(function($ctx1) {
  1427. //>>excludeEnd("ctx");
  1428. $recv($Inspector())._inspect_(self);
  1429. return self;
  1430. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1431. }, function($ctx1) {$ctx1.fill(self,"inspect",{},$globals.ProtoObject)});
  1432. //>>excludeEnd("ctx");
  1433. },
  1434. //>>excludeStart("ide", pragmas.excludeIdeData);
  1435. args: [],
  1436. source: "inspect\x0a\x09Inspector inspect: self",
  1437. referencedClasses: ["Inspector"],
  1438. //>>excludeEnd("ide");
  1439. messageSends: ["inspect:"]
  1440. }),
  1441. $globals.ProtoObject);
  1442. $core.addMethod(
  1443. $core.method({
  1444. selector: "inspectOn:",
  1445. protocol: 'inspecting',
  1446. fn: function (anInspector){
  1447. var self=this;
  1448. return self;
  1449. },
  1450. //>>excludeStart("ide", pragmas.excludeIdeData);
  1451. args: ["anInspector"],
  1452. source: "inspectOn: anInspector",
  1453. referencedClasses: [],
  1454. //>>excludeEnd("ide");
  1455. messageSends: []
  1456. }),
  1457. $globals.ProtoObject);
  1458. $core.addMethod(
  1459. $core.method({
  1460. selector: "instVarAt:",
  1461. protocol: 'accessing',
  1462. fn: function (aString){
  1463. var self=this;
  1464. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1465. return $core.withContext(function($ctx1) {
  1466. //>>excludeEnd("ctx");
  1467. return self['@'+aString] ;
  1468. return self;
  1469. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1470. }, function($ctx1) {$ctx1.fill(self,"instVarAt:",{aString:aString},$globals.ProtoObject)});
  1471. //>>excludeEnd("ctx");
  1472. },
  1473. //>>excludeStart("ide", pragmas.excludeIdeData);
  1474. args: ["aString"],
  1475. source: "instVarAt: aString\x0a\x09< return self['@'+aString] >",
  1476. referencedClasses: [],
  1477. //>>excludeEnd("ide");
  1478. messageSends: []
  1479. }),
  1480. $globals.ProtoObject);
  1481. $core.addMethod(
  1482. $core.method({
  1483. selector: "instVarAt:put:",
  1484. protocol: 'accessing',
  1485. fn: function (aString,anObject){
  1486. var self=this;
  1487. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1488. return $core.withContext(function($ctx1) {
  1489. //>>excludeEnd("ctx");
  1490. self['@' + aString] = anObject ;
  1491. return self;
  1492. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1493. }, function($ctx1) {$ctx1.fill(self,"instVarAt:put:",{aString:aString,anObject:anObject},$globals.ProtoObject)});
  1494. //>>excludeEnd("ctx");
  1495. },
  1496. //>>excludeStart("ide", pragmas.excludeIdeData);
  1497. args: ["aString", "anObject"],
  1498. source: "instVarAt: aString put: anObject\x0a\x09< self['@' + aString] = anObject >",
  1499. referencedClasses: [],
  1500. //>>excludeEnd("ide");
  1501. messageSends: []
  1502. }),
  1503. $globals.ProtoObject);
  1504. $core.addMethod(
  1505. $core.method({
  1506. selector: "isKindOf:",
  1507. protocol: 'testing',
  1508. fn: function (aClass){
  1509. var self=this;
  1510. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1511. return $core.withContext(function($ctx1) {
  1512. //>>excludeEnd("ctx");
  1513. var $2,$1;
  1514. $2=self._isMemberOf_(aClass);
  1515. if($core.assert($2)){
  1516. $1=true;
  1517. } else {
  1518. $1=$recv(self._class())._inheritsFrom_(aClass);
  1519. };
  1520. return $1;
  1521. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1522. }, function($ctx1) {$ctx1.fill(self,"isKindOf:",{aClass:aClass},$globals.ProtoObject)});
  1523. //>>excludeEnd("ctx");
  1524. },
  1525. //>>excludeStart("ide", pragmas.excludeIdeData);
  1526. args: ["aClass"],
  1527. source: "isKindOf: aClass\x0a\x09^ (self isMemberOf: aClass)\x0a\x09\x09ifTrue: [ true ]\x0a\x09\x09ifFalse: [ self class inheritsFrom: aClass ]",
  1528. referencedClasses: [],
  1529. //>>excludeEnd("ide");
  1530. messageSends: ["ifTrue:ifFalse:", "isMemberOf:", "inheritsFrom:", "class"]
  1531. }),
  1532. $globals.ProtoObject);
  1533. $core.addMethod(
  1534. $core.method({
  1535. selector: "perform:",
  1536. protocol: 'message handling',
  1537. fn: function (aString){
  1538. var self=this;
  1539. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1540. return $core.withContext(function($ctx1) {
  1541. //>>excludeEnd("ctx");
  1542. var $1;
  1543. $1=self._perform_withArguments_(aString,[]);
  1544. return $1;
  1545. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1546. }, function($ctx1) {$ctx1.fill(self,"perform:",{aString:aString},$globals.ProtoObject)});
  1547. //>>excludeEnd("ctx");
  1548. },
  1549. //>>excludeStart("ide", pragmas.excludeIdeData);
  1550. args: ["aString"],
  1551. source: "perform: aString\x0a\x09^ self perform: aString withArguments: #()",
  1552. referencedClasses: [],
  1553. //>>excludeEnd("ide");
  1554. messageSends: ["perform:withArguments:"]
  1555. }),
  1556. $globals.ProtoObject);
  1557. $core.addMethod(
  1558. $core.method({
  1559. selector: "perform:withArguments:",
  1560. protocol: 'message handling',
  1561. fn: function (aString,aCollection){
  1562. var self=this;
  1563. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1564. return $core.withContext(function($ctx1) {
  1565. //>>excludeEnd("ctx");
  1566. return $core.send(self, aString._asJavaScriptMethodName(), aCollection);
  1567. return self;
  1568. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1569. }, function($ctx1) {$ctx1.fill(self,"perform:withArguments:",{aString:aString,aCollection:aCollection},$globals.ProtoObject)});
  1570. //>>excludeEnd("ctx");
  1571. },
  1572. //>>excludeStart("ide", pragmas.excludeIdeData);
  1573. args: ["aString", "aCollection"],
  1574. source: "perform: aString withArguments: aCollection\x0a\x09<return $core.send(self, aString._asJavaScriptMethodName(), aCollection)>",
  1575. referencedClasses: [],
  1576. //>>excludeEnd("ide");
  1577. messageSends: []
  1578. }),
  1579. $globals.ProtoObject);
  1580. $core.addMethod(
  1581. $core.method({
  1582. selector: "printOn:",
  1583. protocol: 'printing',
  1584. fn: function (aStream){
  1585. var self=this;
  1586. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1587. return $core.withContext(function($ctx1) {
  1588. //>>excludeEnd("ctx");
  1589. var $5,$4,$3,$2,$1;
  1590. $5=self._class();
  1591. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1592. $ctx1.sendIdx["class"]=1;
  1593. //>>excludeEnd("ctx");
  1594. $4=$recv($5)._name();
  1595. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1596. $ctx1.sendIdx["name"]=1;
  1597. //>>excludeEnd("ctx");
  1598. $3=$recv($4)._first();
  1599. $2=$recv($3)._isVowel();
  1600. if($core.assert($2)){
  1601. $1="an ";
  1602. } else {
  1603. $1="a ";
  1604. };
  1605. $recv(aStream)._nextPutAll_($1);
  1606. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1607. $ctx1.sendIdx["nextPutAll:"]=1;
  1608. //>>excludeEnd("ctx");
  1609. $recv(aStream)._nextPutAll_($recv(self._class())._name());
  1610. return self;
  1611. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1612. }, function($ctx1) {$ctx1.fill(self,"printOn:",{aStream:aStream},$globals.ProtoObject)});
  1613. //>>excludeEnd("ctx");
  1614. },
  1615. //>>excludeStart("ide", pragmas.excludeIdeData);
  1616. args: ["aStream"],
  1617. 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",
  1618. referencedClasses: [],
  1619. //>>excludeEnd("ide");
  1620. messageSends: ["nextPutAll:", "ifTrue:ifFalse:", "isVowel", "first", "name", "class"]
  1621. }),
  1622. $globals.ProtoObject);
  1623. $core.addMethod(
  1624. $core.method({
  1625. selector: "printString",
  1626. protocol: 'printing',
  1627. fn: function (){
  1628. var self=this;
  1629. function $String(){return $globals.String||(typeof String=="undefined"?nil:String)}
  1630. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1631. return $core.withContext(function($ctx1) {
  1632. //>>excludeEnd("ctx");
  1633. var $1;
  1634. $1=$recv($String())._streamContents_((function(str){
  1635. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1636. return $core.withContext(function($ctx2) {
  1637. //>>excludeEnd("ctx");
  1638. return self._printOn_(str);
  1639. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1640. }, function($ctx2) {$ctx2.fillBlock({str:str},$ctx1,1)});
  1641. //>>excludeEnd("ctx");
  1642. }));
  1643. return $1;
  1644. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1645. }, function($ctx1) {$ctx1.fill(self,"printString",{},$globals.ProtoObject)});
  1646. //>>excludeEnd("ctx");
  1647. },
  1648. //>>excludeStart("ide", pragmas.excludeIdeData);
  1649. args: [],
  1650. source: "printString\x0a\x09^ String streamContents: [ :str | \x0a\x09\x09self printOn: str ]",
  1651. referencedClasses: ["String"],
  1652. //>>excludeEnd("ide");
  1653. messageSends: ["streamContents:", "printOn:"]
  1654. }),
  1655. $globals.ProtoObject);
  1656. $core.addMethod(
  1657. $core.method({
  1658. selector: "yourself",
  1659. protocol: 'accessing',
  1660. fn: function (){
  1661. var self=this;
  1662. return self;
  1663. },
  1664. //>>excludeStart("ide", pragmas.excludeIdeData);
  1665. args: [],
  1666. source: "yourself\x0a\x09^ self",
  1667. referencedClasses: [],
  1668. //>>excludeEnd("ide");
  1669. messageSends: []
  1670. }),
  1671. $globals.ProtoObject);
  1672. $core.addMethod(
  1673. $core.method({
  1674. selector: "~=",
  1675. protocol: 'comparing',
  1676. fn: function (anObject){
  1677. var self=this;
  1678. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1679. return $core.withContext(function($ctx1) {
  1680. //>>excludeEnd("ctx");
  1681. var $1;
  1682. $1=$recv(self.__eq(anObject)).__eq(false);
  1683. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1684. $ctx1.sendIdx["="]=1;
  1685. //>>excludeEnd("ctx");
  1686. return $1;
  1687. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1688. }, function($ctx1) {$ctx1.fill(self,"~=",{anObject:anObject},$globals.ProtoObject)});
  1689. //>>excludeEnd("ctx");
  1690. },
  1691. //>>excludeStart("ide", pragmas.excludeIdeData);
  1692. args: ["anObject"],
  1693. source: "~= anObject\x0a\x09^ (self = anObject) = false",
  1694. referencedClasses: [],
  1695. //>>excludeEnd("ide");
  1696. messageSends: ["="]
  1697. }),
  1698. $globals.ProtoObject);
  1699. $core.addMethod(
  1700. $core.method({
  1701. selector: "~~",
  1702. protocol: 'comparing',
  1703. fn: function (anObject){
  1704. var self=this;
  1705. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1706. return $core.withContext(function($ctx1) {
  1707. //>>excludeEnd("ctx");
  1708. var $1;
  1709. $1=$recv(self.__eq_eq(anObject)).__eq(false);
  1710. return $1;
  1711. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1712. }, function($ctx1) {$ctx1.fill(self,"~~",{anObject:anObject},$globals.ProtoObject)});
  1713. //>>excludeEnd("ctx");
  1714. },
  1715. //>>excludeStart("ide", pragmas.excludeIdeData);
  1716. args: ["anObject"],
  1717. source: "~~ anObject\x0a\x09^ (self == anObject) = false",
  1718. referencedClasses: [],
  1719. //>>excludeEnd("ide");
  1720. messageSends: ["=", "=="]
  1721. }),
  1722. $globals.ProtoObject);
  1723. $core.addMethod(
  1724. $core.method({
  1725. selector: "initialize",
  1726. protocol: 'initialization',
  1727. fn: function (){
  1728. var self=this;
  1729. return self;
  1730. },
  1731. //>>excludeStart("ide", pragmas.excludeIdeData);
  1732. args: [],
  1733. source: "initialize",
  1734. referencedClasses: [],
  1735. //>>excludeEnd("ide");
  1736. messageSends: []
  1737. }),
  1738. $globals.ProtoObject.klass);
  1739. $core.addClass('Object', $globals.ProtoObject, [], 'Kernel-Objects');
  1740. //>>excludeStart("ide", pragmas.excludeIdeData);
  1741. $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.";
  1742. //>>excludeEnd("ide");
  1743. $core.addMethod(
  1744. $core.method({
  1745. selector: "->",
  1746. protocol: 'converting',
  1747. fn: function (anObject){
  1748. var self=this;
  1749. function $Association(){return $globals.Association||(typeof Association=="undefined"?nil:Association)}
  1750. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1751. return $core.withContext(function($ctx1) {
  1752. //>>excludeEnd("ctx");
  1753. var $1;
  1754. $1=$recv($Association())._key_value_(self,anObject);
  1755. return $1;
  1756. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1757. }, function($ctx1) {$ctx1.fill(self,"->",{anObject:anObject},$globals.Object)});
  1758. //>>excludeEnd("ctx");
  1759. },
  1760. //>>excludeStart("ide", pragmas.excludeIdeData);
  1761. args: ["anObject"],
  1762. source: "-> anObject\x0a\x09^ Association key: self value: anObject",
  1763. referencedClasses: ["Association"],
  1764. //>>excludeEnd("ide");
  1765. messageSends: ["key:value:"]
  1766. }),
  1767. $globals.Object);
  1768. $core.addMethod(
  1769. $core.method({
  1770. selector: "asJSON",
  1771. protocol: 'converting',
  1772. fn: function (){
  1773. var self=this;
  1774. var variables;
  1775. function $HashedCollection(){return $globals.HashedCollection||(typeof HashedCollection=="undefined"?nil:HashedCollection)}
  1776. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1777. return $core.withContext(function($ctx1) {
  1778. //>>excludeEnd("ctx");
  1779. var $1;
  1780. variables=$recv($HashedCollection())._new();
  1781. $recv($recv(self._class())._allInstanceVariableNames())._do_((function(each){
  1782. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1783. return $core.withContext(function($ctx2) {
  1784. //>>excludeEnd("ctx");
  1785. return $recv(variables)._at_put_(each,$recv(self._instVarAt_(each))._asJSON());
  1786. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1787. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  1788. //>>excludeEnd("ctx");
  1789. }));
  1790. $1=variables;
  1791. return $1;
  1792. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1793. }, function($ctx1) {$ctx1.fill(self,"asJSON",{variables:variables},$globals.Object)});
  1794. //>>excludeEnd("ctx");
  1795. },
  1796. //>>excludeStart("ide", pragmas.excludeIdeData);
  1797. args: [],
  1798. source: "asJSON\x0a\x09| variables |\x0a\x09variables := HashedCollection new.\x0a\x09self class allInstanceVariableNames do: [ :each |\x0a\x09\x09variables at: each put: (self instVarAt: each) asJSON ].\x0a\x09^ variables",
  1799. referencedClasses: ["HashedCollection"],
  1800. //>>excludeEnd("ide");
  1801. messageSends: ["new", "do:", "allInstanceVariableNames", "class", "at:put:", "asJSON", "instVarAt:"]
  1802. }),
  1803. $globals.Object);
  1804. $core.addMethod(
  1805. $core.method({
  1806. selector: "asJSONString",
  1807. protocol: 'converting',
  1808. fn: function (){
  1809. var self=this;
  1810. function $JSON(){return $globals.JSON||(typeof JSON=="undefined"?nil:JSON)}
  1811. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1812. return $core.withContext(function($ctx1) {
  1813. //>>excludeEnd("ctx");
  1814. var $1;
  1815. $1=$recv($JSON())._stringify_(self._asJSON());
  1816. return $1;
  1817. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1818. }, function($ctx1) {$ctx1.fill(self,"asJSONString",{},$globals.Object)});
  1819. //>>excludeEnd("ctx");
  1820. },
  1821. //>>excludeStart("ide", pragmas.excludeIdeData);
  1822. args: [],
  1823. source: "asJSONString\x0a\x09^ JSON stringify: self asJSON",
  1824. referencedClasses: ["JSON"],
  1825. //>>excludeEnd("ide");
  1826. messageSends: ["stringify:", "asJSON"]
  1827. }),
  1828. $globals.Object);
  1829. $core.addMethod(
  1830. $core.method({
  1831. selector: "asJavascript",
  1832. protocol: 'converting',
  1833. fn: function (){
  1834. var self=this;
  1835. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1836. return $core.withContext(function($ctx1) {
  1837. //>>excludeEnd("ctx");
  1838. var $1;
  1839. $1=self._asString();
  1840. return $1;
  1841. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1842. }, function($ctx1) {$ctx1.fill(self,"asJavascript",{},$globals.Object)});
  1843. //>>excludeEnd("ctx");
  1844. },
  1845. //>>excludeStart("ide", pragmas.excludeIdeData);
  1846. args: [],
  1847. source: "asJavascript\x0a\x09^ self asString",
  1848. referencedClasses: [],
  1849. //>>excludeEnd("ide");
  1850. messageSends: ["asString"]
  1851. }),
  1852. $globals.Object);
  1853. $core.addMethod(
  1854. $core.method({
  1855. selector: "basicAt:",
  1856. protocol: 'accessing',
  1857. fn: function (aString){
  1858. var self=this;
  1859. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1860. return $core.withContext(function($ctx1) {
  1861. //>>excludeEnd("ctx");
  1862. return self[aString];
  1863. return self;
  1864. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1865. }, function($ctx1) {$ctx1.fill(self,"basicAt:",{aString:aString},$globals.Object)});
  1866. //>>excludeEnd("ctx");
  1867. },
  1868. //>>excludeStart("ide", pragmas.excludeIdeData);
  1869. args: ["aString"],
  1870. source: "basicAt: aString\x0a\x09<return self[aString]>",
  1871. referencedClasses: [],
  1872. //>>excludeEnd("ide");
  1873. messageSends: []
  1874. }),
  1875. $globals.Object);
  1876. $core.addMethod(
  1877. $core.method({
  1878. selector: "basicAt:put:",
  1879. protocol: 'accessing',
  1880. fn: function (aString,anObject){
  1881. var self=this;
  1882. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1883. return $core.withContext(function($ctx1) {
  1884. //>>excludeEnd("ctx");
  1885. return self[aString] = anObject;
  1886. return self;
  1887. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1888. }, function($ctx1) {$ctx1.fill(self,"basicAt:put:",{aString:aString,anObject:anObject},$globals.Object)});
  1889. //>>excludeEnd("ctx");
  1890. },
  1891. //>>excludeStart("ide", pragmas.excludeIdeData);
  1892. args: ["aString", "anObject"],
  1893. source: "basicAt: aString put: anObject\x0a\x09<return self[aString] = anObject>",
  1894. referencedClasses: [],
  1895. //>>excludeEnd("ide");
  1896. messageSends: []
  1897. }),
  1898. $globals.Object);
  1899. $core.addMethod(
  1900. $core.method({
  1901. selector: "basicDelete:",
  1902. protocol: 'accessing',
  1903. fn: function (aString){
  1904. var self=this;
  1905. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1906. return $core.withContext(function($ctx1) {
  1907. //>>excludeEnd("ctx");
  1908. delete self[aString]; return aString;
  1909. return self;
  1910. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1911. }, function($ctx1) {$ctx1.fill(self,"basicDelete:",{aString:aString},$globals.Object)});
  1912. //>>excludeEnd("ctx");
  1913. },
  1914. //>>excludeStart("ide", pragmas.excludeIdeData);
  1915. args: ["aString"],
  1916. source: "basicDelete: aString\x0a\x09<delete self[aString]; return aString>",
  1917. referencedClasses: [],
  1918. //>>excludeEnd("ide");
  1919. messageSends: []
  1920. }),
  1921. $globals.Object);
  1922. $core.addMethod(
  1923. $core.method({
  1924. selector: "basicPerform:",
  1925. protocol: 'message handling',
  1926. fn: function (aString){
  1927. var self=this;
  1928. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1929. return $core.withContext(function($ctx1) {
  1930. //>>excludeEnd("ctx");
  1931. var $1;
  1932. $1=self._basicPerform_withArguments_(aString,[]);
  1933. return $1;
  1934. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1935. }, function($ctx1) {$ctx1.fill(self,"basicPerform:",{aString:aString},$globals.Object)});
  1936. //>>excludeEnd("ctx");
  1937. },
  1938. //>>excludeStart("ide", pragmas.excludeIdeData);
  1939. args: ["aString"],
  1940. source: "basicPerform: aString\x0a\x09^ self basicPerform: aString withArguments: #()",
  1941. referencedClasses: [],
  1942. //>>excludeEnd("ide");
  1943. messageSends: ["basicPerform:withArguments:"]
  1944. }),
  1945. $globals.Object);
  1946. $core.addMethod(
  1947. $core.method({
  1948. selector: "basicPerform:withArguments:",
  1949. protocol: 'message handling',
  1950. fn: function (aString,aCollection){
  1951. var self=this;
  1952. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1953. return $core.withContext(function($ctx1) {
  1954. //>>excludeEnd("ctx");
  1955. return self[aString].apply(self, aCollection);;
  1956. return self;
  1957. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1958. }, function($ctx1) {$ctx1.fill(self,"basicPerform:withArguments:",{aString:aString,aCollection:aCollection},$globals.Object)});
  1959. //>>excludeEnd("ctx");
  1960. },
  1961. //>>excludeStart("ide", pragmas.excludeIdeData);
  1962. args: ["aString", "aCollection"],
  1963. source: "basicPerform: aString withArguments: aCollection\x0a\x09<return self[aString].apply(self, aCollection);>",
  1964. referencedClasses: [],
  1965. //>>excludeEnd("ide");
  1966. messageSends: []
  1967. }),
  1968. $globals.Object);
  1969. $core.addMethod(
  1970. $core.method({
  1971. selector: "browse",
  1972. protocol: 'browsing',
  1973. fn: function (){
  1974. var self=this;
  1975. function $Finder(){return $globals.Finder||(typeof Finder=="undefined"?nil:Finder)}
  1976. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1977. return $core.withContext(function($ctx1) {
  1978. //>>excludeEnd("ctx");
  1979. $recv($Finder())._findClass_(self._class());
  1980. return self;
  1981. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1982. }, function($ctx1) {$ctx1.fill(self,"browse",{},$globals.Object)});
  1983. //>>excludeEnd("ctx");
  1984. },
  1985. //>>excludeStart("ide", pragmas.excludeIdeData);
  1986. args: [],
  1987. source: "browse\x0a\x09Finder findClass: self class",
  1988. referencedClasses: ["Finder"],
  1989. //>>excludeEnd("ide");
  1990. messageSends: ["findClass:", "class"]
  1991. }),
  1992. $globals.Object);
  1993. $core.addMethod(
  1994. $core.method({
  1995. selector: "copy",
  1996. protocol: 'copying',
  1997. fn: function (){
  1998. var self=this;
  1999. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  2000. return $core.withContext(function($ctx1) {
  2001. //>>excludeEnd("ctx");
  2002. var $1;
  2003. $1=$recv(self._shallowCopy())._postCopy();
  2004. return $1;
  2005. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  2006. }, function($ctx1) {$ctx1.fill(self,"copy",{},$globals.Object)});
  2007. //>>excludeEnd("ctx");
  2008. },
  2009. //>>excludeStart("ide", pragmas.excludeIdeData);
  2010. args: [],
  2011. source: "copy\x0a\x09^ self shallowCopy postCopy",
  2012. referencedClasses: [],
  2013. //>>excludeEnd("ide");
  2014. messageSends: ["postCopy", "shallowCopy"]
  2015. }),
  2016. $globals.Object);
  2017. $core.addMethod(
  2018. $core.method({
  2019. selector: "deepCopy",
  2020. protocol: 'copying',
  2021. fn: function (){
  2022. var self=this;
  2023. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  2024. return $core.withContext(function($ctx1) {
  2025. //>>excludeEnd("ctx");
  2026. var copy = self.klass._new();
  2027. Object.keys(self).forEach(function (i) {
  2028. if(/^@.+/.test(i)) {
  2029. copy[i] = self[i]._deepCopy();
  2030. }
  2031. });
  2032. return copy;
  2033. ;
  2034. return self;
  2035. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  2036. }, function($ctx1) {$ctx1.fill(self,"deepCopy",{},$globals.Object)});
  2037. //>>excludeEnd("ctx");
  2038. },
  2039. //>>excludeStart("ide", pragmas.excludeIdeData);
  2040. args: [],
  2041. source: "deepCopy\x0a\x09<\x0a\x09\x09var copy = self.klass._new();\x0a\x09\x09Object.keys(self).forEach(function (i) {\x0a\x09\x09if(/^@.+/.test(i)) {\x0a\x09\x09\x09copy[i] = self[i]._deepCopy();\x0a\x09\x09}\x0a\x09\x09});\x0a\x09\x09return copy;\x0a\x09>",
  2042. referencedClasses: [],
  2043. //>>excludeEnd("ide");
  2044. messageSends: []
  2045. }),
  2046. $globals.Object);
  2047. $core.addMethod(
  2048. $core.method({
  2049. selector: "deprecatedAPI",
  2050. protocol: 'error handling',
  2051. fn: function (){
  2052. var self=this;
  2053. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  2054. return $core.withContext(function($ctx1) {
  2055. //>>excludeEnd("ctx");
  2056. var $1,$6,$5,$4,$8,$7,$3,$2;
  2057. $1=console;
  2058. $6=$core.getThisContext()._home();
  2059. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  2060. $ctx1.sendIdx["home"]=1;
  2061. //>>excludeEnd("ctx");
  2062. $5=$recv($6)._asString();
  2063. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  2064. $ctx1.sendIdx["asString"]=1;
  2065. //>>excludeEnd("ctx");
  2066. $4=$recv($5).__comma(" is deprecated! (in ");
  2067. $8=$recv($core.getThisContext()._home())._home();
  2068. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  2069. $ctx1.sendIdx["home"]=2;
  2070. //>>excludeEnd("ctx");
  2071. $7=$recv($8)._asString();
  2072. $3=$recv($4).__comma($7);
  2073. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  2074. $ctx1.sendIdx[","]=2;
  2075. //>>excludeEnd("ctx");
  2076. $2=$recv($3).__comma(")");
  2077. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  2078. $ctx1.sendIdx[","]=1;
  2079. //>>excludeEnd("ctx");
  2080. $recv($1)._warn_($2);
  2081. return self;
  2082. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  2083. }, function($ctx1) {$ctx1.fill(self,"deprecatedAPI",{},$globals.Object)});
  2084. //>>excludeEnd("ctx");
  2085. },
  2086. //>>excludeStart("ide", pragmas.excludeIdeData);
  2087. args: [],
  2088. 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, ')'.",
  2089. referencedClasses: [],
  2090. //>>excludeEnd("ide");
  2091. messageSends: ["warn:", ",", "asString", "home"]
  2092. }),
  2093. $globals.Object);
  2094. $core.addMethod(
  2095. $core.method({
  2096. selector: "deprecatedAPI:",
  2097. protocol: 'error handling',
  2098. fn: function (aString){
  2099. var self=this;
  2100. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  2101. return $core.withContext(function($ctx1) {
  2102. //>>excludeEnd("ctx");
  2103. var $1,$6,$5,$4,$8,$7,$3,$2;
  2104. $1=console;
  2105. $6=$core.getThisContext()._home();
  2106. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  2107. $ctx1.sendIdx["home"]=1;
  2108. //>>excludeEnd("ctx");
  2109. $5=$recv($6)._asString();
  2110. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  2111. $ctx1.sendIdx["asString"]=1;
  2112. //>>excludeEnd("ctx");
  2113. $4=$recv($5).__comma(" is deprecated! (in ");
  2114. $8=$recv($core.getThisContext()._home())._home();
  2115. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  2116. $ctx1.sendIdx["home"]=2;
  2117. //>>excludeEnd("ctx");
  2118. $7=$recv($8)._asString();
  2119. $3=$recv($4).__comma($7);
  2120. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  2121. $ctx1.sendIdx[","]=2;
  2122. //>>excludeEnd("ctx");
  2123. $2=$recv($3).__comma(")");
  2124. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  2125. $ctx1.sendIdx[","]=1;
  2126. //>>excludeEnd("ctx");
  2127. $recv($1)._warn_($2);
  2128. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  2129. $ctx1.sendIdx["warn:"]=1;
  2130. //>>excludeEnd("ctx");
  2131. $recv(console)._warn_(aString);
  2132. return self;
  2133. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  2134. }, function($ctx1) {$ctx1.fill(self,"deprecatedAPI:",{aString:aString},$globals.Object)});
  2135. //>>excludeEnd("ctx");
  2136. },
  2137. //>>excludeStart("ide", pragmas.excludeIdeData);
  2138. args: ["aString"],
  2139. 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",
  2140. referencedClasses: [],
  2141. //>>excludeEnd("ide");
  2142. messageSends: ["warn:", ",", "asString", "home"]
  2143. }),
  2144. $globals.Object);
  2145. $core.addMethod(
  2146. $core.method({
  2147. selector: "error:",
  2148. protocol: 'error handling',
  2149. fn: function (aString){
  2150. var self=this;
  2151. function $Error(){return $globals.Error||(typeof Error=="undefined"?nil:Error)}
  2152. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  2153. return $core.withContext(function($ctx1) {
  2154. //>>excludeEnd("ctx");
  2155. $recv($Error())._signal_(aString);
  2156. return self;
  2157. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  2158. }, function($ctx1) {$ctx1.fill(self,"error:",{aString:aString},$globals.Object)});
  2159. //>>excludeEnd("ctx");
  2160. },
  2161. //>>excludeStart("ide", pragmas.excludeIdeData);
  2162. args: ["aString"],
  2163. source: "error: aString\x0a\x09Error signal: aString",
  2164. referencedClasses: ["Error"],
  2165. //>>excludeEnd("ide");
  2166. messageSends: ["signal:"]
  2167. }),
  2168. $globals.Object);
  2169. $core.addMethod(
  2170. $core.method({
  2171. selector: "halt",
  2172. protocol: 'error handling',
  2173. fn: function (){
  2174. var self=this;
  2175. function $Halt(){return $globals.Halt||(typeof Halt=="undefined"?nil:Halt)}
  2176. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  2177. return $core.withContext(function($ctx1) {
  2178. //>>excludeEnd("ctx");
  2179. $recv($Halt())._signal();
  2180. return self;
  2181. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  2182. }, function($ctx1) {$ctx1.fill(self,"halt",{},$globals.Object)});
  2183. //>>excludeEnd("ctx");
  2184. },
  2185. //>>excludeStart("ide", pragmas.excludeIdeData);
  2186. args: [],
  2187. source: "halt\x0a\x09Halt signal",
  2188. referencedClasses: ["Halt"],
  2189. //>>excludeEnd("ide");
  2190. messageSends: ["signal"]
  2191. }),
  2192. $globals.Object);
  2193. $core.addMethod(
  2194. $core.method({
  2195. selector: "ifNil:",
  2196. protocol: 'testing',
  2197. fn: function (aBlock){
  2198. var self=this;
  2199. return self;
  2200. },
  2201. //>>excludeStart("ide", pragmas.excludeIdeData);
  2202. args: ["aBlock"],
  2203. source: "ifNil: aBlock\x0a\x09\x22inlined in the Compiler\x22\x0a\x09^ self",
  2204. referencedClasses: [],
  2205. //>>excludeEnd("ide");
  2206. messageSends: []
  2207. }),
  2208. $globals.Object);
  2209. $core.addMethod(
  2210. $core.method({
  2211. selector: "ifNil:ifNotNil:",
  2212. protocol: 'testing',
  2213. fn: function (aBlock,anotherBlock){
  2214. var self=this;
  2215. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  2216. return $core.withContext(function($ctx1) {
  2217. //>>excludeEnd("ctx");
  2218. var $1;
  2219. $1=$recv(anotherBlock)._value_(self);
  2220. return $1;
  2221. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  2222. }, function($ctx1) {$ctx1.fill(self,"ifNil:ifNotNil:",{aBlock:aBlock,anotherBlock:anotherBlock},$globals.Object)});
  2223. //>>excludeEnd("ctx");
  2224. },
  2225. //>>excludeStart("ide", pragmas.excludeIdeData);
  2226. args: ["aBlock", "anotherBlock"],
  2227. source: "ifNil: aBlock ifNotNil: anotherBlock\x0a\x09\x22inlined in the Compiler\x22\x0a\x09^ anotherBlock value: self",
  2228. referencedClasses: [],
  2229. //>>excludeEnd("ide");
  2230. messageSends: ["value:"]
  2231. }),
  2232. $globals.Object);
  2233. $core.addMethod(
  2234. $core.method({
  2235. selector: "ifNotNil:",
  2236. protocol: 'testing',
  2237. fn: function (aBlock){
  2238. var self=this;
  2239. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  2240. return $core.withContext(function($ctx1) {
  2241. //>>excludeEnd("ctx");
  2242. var $1;
  2243. $1=$recv(aBlock)._value_(self);
  2244. return $1;
  2245. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  2246. }, function($ctx1) {$ctx1.fill(self,"ifNotNil:",{aBlock:aBlock},$globals.Object)});
  2247. //>>excludeEnd("ctx");
  2248. },
  2249. //>>excludeStart("ide", pragmas.excludeIdeData);
  2250. args: ["aBlock"],
  2251. source: "ifNotNil: aBlock\x0a\x09\x22inlined in the Compiler\x22\x0a\x09^ aBlock value: self",
  2252. referencedClasses: [],
  2253. //>>excludeEnd("ide");
  2254. messageSends: ["value:"]
  2255. }),
  2256. $globals.Object);
  2257. $core.addMethod(
  2258. $core.method({
  2259. selector: "ifNotNil:ifNil:",
  2260. protocol: 'testing',
  2261. fn: function (aBlock,anotherBlock){
  2262. var self=this;
  2263. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  2264. return $core.withContext(function($ctx1) {
  2265. //>>excludeEnd("ctx");
  2266. var $1;
  2267. $1=$recv(aBlock)._value_(self);
  2268. return $1;
  2269. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  2270. }, function($ctx1) {$ctx1.fill(self,"ifNotNil:ifNil:",{aBlock:aBlock,anotherBlock:anotherBlock},$globals.Object)});
  2271. //>>excludeEnd("ctx");
  2272. },
  2273. //>>excludeStart("ide", pragmas.excludeIdeData);
  2274. args: ["aBlock", "anotherBlock"],
  2275. source: "ifNotNil: aBlock ifNil: anotherBlock\x0a\x09\x22inlined in the Compiler\x22\x0a\x09^ aBlock value: self",
  2276. referencedClasses: [],
  2277. //>>excludeEnd("ide");
  2278. messageSends: ["value:"]
  2279. }),
  2280. $globals.Object);
  2281. $core.addMethod(
  2282. $core.method({
  2283. selector: "inspectOn:",
  2284. protocol: 'inspecting',
  2285. fn: function (anInspector){
  2286. var self=this;
  2287. var variables;
  2288. function $Dictionary(){return $globals.Dictionary||(typeof Dictionary=="undefined"?nil:Dictionary)}
  2289. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  2290. return $core.withContext(function($ctx1) {
  2291. //>>excludeEnd("ctx");
  2292. var $1;
  2293. variables=$recv($Dictionary())._new();
  2294. $recv(variables)._at_put_("#self",self);
  2295. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  2296. $ctx1.sendIdx["at:put:"]=1;
  2297. //>>excludeEnd("ctx");
  2298. $recv($recv(self._class())._allInstanceVariableNames())._do_((function(each){
  2299. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  2300. return $core.withContext(function($ctx2) {
  2301. //>>excludeEnd("ctx");
  2302. return $recv(variables)._at_put_(each,self._instVarAt_(each));
  2303. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  2304. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  2305. //>>excludeEnd("ctx");
  2306. }));
  2307. $recv(anInspector)._setLabel_(self._printString());
  2308. $1=$recv(anInspector)._setVariables_(variables);
  2309. return self;
  2310. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  2311. }, function($ctx1) {$ctx1.fill(self,"inspectOn:",{anInspector:anInspector,variables:variables},$globals.Object)});
  2312. //>>excludeEnd("ctx");
  2313. },
  2314. //>>excludeStart("ide", pragmas.excludeIdeData);
  2315. args: ["anInspector"],
  2316. source: "inspectOn: anInspector\x0a\x09| variables |\x0a\x09variables := Dictionary new.\x0a\x09variables at: '#self' put: self.\x0a\x09self class allInstanceVariableNames do: [ :each |\x0a\x09\x09variables at: each put: (self instVarAt: each) ].\x0a\x09anInspector\x0a\x09\x09setLabel: self printString;\x0a\x09\x09setVariables: variables",
  2317. referencedClasses: ["Dictionary"],
  2318. //>>excludeEnd("ide");
  2319. messageSends: ["new", "at:put:", "do:", "allInstanceVariableNames", "class", "instVarAt:", "setLabel:", "printString", "setVariables:"]
  2320. }),
  2321. $globals.Object);
  2322. $core.addMethod(
  2323. $core.method({
  2324. selector: "isBehavior",
  2325. protocol: 'testing',
  2326. fn: function (){
  2327. var self=this;
  2328. return false;
  2329. },
  2330. //>>excludeStart("ide", pragmas.excludeIdeData);
  2331. args: [],
  2332. source: "isBehavior\x0a\x09^ false",
  2333. referencedClasses: [],
  2334. //>>excludeEnd("ide");
  2335. messageSends: []
  2336. }),
  2337. $globals.Object);
  2338. $core.addMethod(
  2339. $core.method({
  2340. selector: "isBoolean",
  2341. protocol: 'testing',
  2342. fn: function (){
  2343. var self=this;
  2344. return false;
  2345. },
  2346. //>>excludeStart("ide", pragmas.excludeIdeData);
  2347. args: [],
  2348. source: "isBoolean\x0a\x09^ false",
  2349. referencedClasses: [],
  2350. //>>excludeEnd("ide");
  2351. messageSends: []
  2352. }),
  2353. $globals.Object);
  2354. $core.addMethod(
  2355. $core.method({
  2356. selector: "isClass",
  2357. protocol: 'testing',
  2358. fn: function (){
  2359. var self=this;
  2360. return false;
  2361. },
  2362. //>>excludeStart("ide", pragmas.excludeIdeData);
  2363. args: [],
  2364. source: "isClass\x0a\x09^ false",
  2365. referencedClasses: [],
  2366. //>>excludeEnd("ide");
  2367. messageSends: []
  2368. }),
  2369. $globals.Object);
  2370. $core.addMethod(
  2371. $core.method({
  2372. selector: "isCompiledMethod",
  2373. protocol: 'testing',
  2374. fn: function (){
  2375. var self=this;
  2376. return false;
  2377. },
  2378. //>>excludeStart("ide", pragmas.excludeIdeData);
  2379. args: [],
  2380. source: "isCompiledMethod\x0a\x09^ false",
  2381. referencedClasses: [],
  2382. //>>excludeEnd("ide");
  2383. messageSends: []
  2384. }),
  2385. $globals.Object);
  2386. $core.addMethod(
  2387. $core.method({
  2388. selector: "isImmutable",
  2389. protocol: 'testing',
  2390. fn: function (){
  2391. var self=this;
  2392. return false;
  2393. },
  2394. //>>excludeStart("ide", pragmas.excludeIdeData);
  2395. args: [],
  2396. source: "isImmutable\x0a\x09^ false",
  2397. referencedClasses: [],
  2398. //>>excludeEnd("ide");
  2399. messageSends: []
  2400. }),
  2401. $globals.Object);
  2402. $core.addMethod(
  2403. $core.method({
  2404. selector: "isMemberOf:",
  2405. protocol: 'testing',
  2406. fn: function (aClass){
  2407. var self=this;
  2408. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  2409. return $core.withContext(function($ctx1) {
  2410. //>>excludeEnd("ctx");
  2411. var $1;
  2412. $1=$recv(self._class()).__eq(aClass);
  2413. return $1;
  2414. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  2415. }, function($ctx1) {$ctx1.fill(self,"isMemberOf:",{aClass:aClass},$globals.Object)});
  2416. //>>excludeEnd("ctx");
  2417. },
  2418. //>>excludeStart("ide", pragmas.excludeIdeData);
  2419. args: ["aClass"],
  2420. source: "isMemberOf: aClass\x0a\x09^ self class = aClass",
  2421. referencedClasses: [],
  2422. //>>excludeEnd("ide");
  2423. messageSends: ["=", "class"]
  2424. }),
  2425. $globals.Object);
  2426. $core.addMethod(
  2427. $core.method({
  2428. selector: "isMetaclass",
  2429. protocol: 'testing',
  2430. fn: function (){
  2431. var self=this;
  2432. return false;
  2433. },
  2434. //>>excludeStart("ide", pragmas.excludeIdeData);
  2435. args: [],
  2436. source: "isMetaclass\x0a\x09^ false",
  2437. referencedClasses: [],
  2438. //>>excludeEnd("ide");
  2439. messageSends: []
  2440. }),
  2441. $globals.Object);
  2442. $core.addMethod(
  2443. $core.method({
  2444. selector: "isNil",
  2445. protocol: 'testing',
  2446. fn: function (){
  2447. var self=this;
  2448. return false;
  2449. },
  2450. //>>excludeStart("ide", pragmas.excludeIdeData);
  2451. args: [],
  2452. source: "isNil\x0a\x09^ false",
  2453. referencedClasses: [],
  2454. //>>excludeEnd("ide");
  2455. messageSends: []
  2456. }),
  2457. $globals.Object);
  2458. $core.addMethod(
  2459. $core.method({
  2460. selector: "isNumber",
  2461. protocol: 'testing',
  2462. fn: function (){
  2463. var self=this;
  2464. return false;
  2465. },
  2466. //>>excludeStart("ide", pragmas.excludeIdeData);
  2467. args: [],
  2468. source: "isNumber\x0a\x09^ false",
  2469. referencedClasses: [],
  2470. //>>excludeEnd("ide");
  2471. messageSends: []
  2472. }),
  2473. $globals.Object);
  2474. $core.addMethod(
  2475. $core.method({
  2476. selector: "isPackage",
  2477. protocol: 'testing',
  2478. fn: function (){
  2479. var self=this;
  2480. return false;
  2481. },
  2482. //>>excludeStart("ide", pragmas.excludeIdeData);
  2483. args: [],
  2484. source: "isPackage\x0a\x09^ false",
  2485. referencedClasses: [],
  2486. //>>excludeEnd("ide");
  2487. messageSends: []
  2488. }),
  2489. $globals.Object);
  2490. $core.addMethod(
  2491. $core.method({
  2492. selector: "isParseFailure",
  2493. protocol: 'testing',
  2494. fn: function (){
  2495. var self=this;
  2496. return false;
  2497. },
  2498. //>>excludeStart("ide", pragmas.excludeIdeData);
  2499. args: [],
  2500. source: "isParseFailure\x0a\x09^ false",
  2501. referencedClasses: [],
  2502. //>>excludeEnd("ide");
  2503. messageSends: []
  2504. }),
  2505. $globals.Object);
  2506. $core.addMethod(
  2507. $core.method({
  2508. selector: "isString",
  2509. protocol: 'testing',
  2510. fn: function (){
  2511. var self=this;
  2512. return false;
  2513. },
  2514. //>>excludeStart("ide", pragmas.excludeIdeData);
  2515. args: [],
  2516. source: "isString\x0a\x09^ false",
  2517. referencedClasses: [],
  2518. //>>excludeEnd("ide");
  2519. messageSends: []
  2520. }),
  2521. $globals.Object);
  2522. $core.addMethod(
  2523. $core.method({
  2524. selector: "isSymbol",
  2525. protocol: 'testing',
  2526. fn: function (){
  2527. var self=this;
  2528. return false;
  2529. },
  2530. //>>excludeStart("ide", pragmas.excludeIdeData);
  2531. args: [],
  2532. source: "isSymbol\x0a\x09^ false",
  2533. referencedClasses: [],
  2534. //>>excludeEnd("ide");
  2535. messageSends: []
  2536. }),
  2537. $globals.Object);
  2538. $core.addMethod(
  2539. $core.method({
  2540. selector: "notNil",
  2541. protocol: 'testing',
  2542. fn: function (){
  2543. var self=this;
  2544. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  2545. return $core.withContext(function($ctx1) {
  2546. //>>excludeEnd("ctx");
  2547. var $1;
  2548. $1=$recv(self._isNil())._not();
  2549. return $1;
  2550. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  2551. }, function($ctx1) {$ctx1.fill(self,"notNil",{},$globals.Object)});
  2552. //>>excludeEnd("ctx");
  2553. },
  2554. //>>excludeStart("ide", pragmas.excludeIdeData);
  2555. args: [],
  2556. source: "notNil\x0a\x09^ self isNil not",
  2557. referencedClasses: [],
  2558. //>>excludeEnd("ide");
  2559. messageSends: ["not", "isNil"]
  2560. }),
  2561. $globals.Object);
  2562. $core.addMethod(
  2563. $core.method({
  2564. selector: "postCopy",
  2565. protocol: 'copying',
  2566. fn: function (){
  2567. var self=this;
  2568. return self;
  2569. },
  2570. //>>excludeStart("ide", pragmas.excludeIdeData);
  2571. args: [],
  2572. source: "postCopy",
  2573. referencedClasses: [],
  2574. //>>excludeEnd("ide");
  2575. messageSends: []
  2576. }),
  2577. $globals.Object);
  2578. $core.addMethod(
  2579. $core.method({
  2580. selector: "putOn:",
  2581. protocol: 'streaming',
  2582. fn: function (aStream){
  2583. var self=this;
  2584. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  2585. return $core.withContext(function($ctx1) {
  2586. //>>excludeEnd("ctx");
  2587. $recv(aStream)._nextPut_(self);
  2588. return self;
  2589. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  2590. }, function($ctx1) {$ctx1.fill(self,"putOn:",{aStream:aStream},$globals.Object)});
  2591. //>>excludeEnd("ctx");
  2592. },
  2593. //>>excludeStart("ide", pragmas.excludeIdeData);
  2594. args: ["aStream"],
  2595. source: "putOn: aStream\x0a\x09aStream nextPut: self",
  2596. referencedClasses: [],
  2597. //>>excludeEnd("ide");
  2598. messageSends: ["nextPut:"]
  2599. }),
  2600. $globals.Object);
  2601. $core.addMethod(
  2602. $core.method({
  2603. selector: "respondsTo:",
  2604. protocol: 'testing',
  2605. fn: function (aSelector){
  2606. var self=this;
  2607. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  2608. return $core.withContext(function($ctx1) {
  2609. //>>excludeEnd("ctx");
  2610. var $1;
  2611. $1=$recv(self._class())._canUnderstand_(aSelector);
  2612. return $1;
  2613. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  2614. }, function($ctx1) {$ctx1.fill(self,"respondsTo:",{aSelector:aSelector},$globals.Object)});
  2615. //>>excludeEnd("ctx");
  2616. },
  2617. //>>excludeStart("ide", pragmas.excludeIdeData);
  2618. args: ["aSelector"],
  2619. source: "respondsTo: aSelector\x0a\x09^ self class canUnderstand: aSelector",
  2620. referencedClasses: [],
  2621. //>>excludeEnd("ide");
  2622. messageSends: ["canUnderstand:", "class"]
  2623. }),
  2624. $globals.Object);
  2625. $core.addMethod(
  2626. $core.method({
  2627. selector: "shallowCopy",
  2628. protocol: 'copying',
  2629. fn: function (){
  2630. var self=this;
  2631. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  2632. return $core.withContext(function($ctx1) {
  2633. //>>excludeEnd("ctx");
  2634. var copy = self.klass._new();
  2635. Object.keys(self).forEach(function(i) {
  2636. if(/^@.+/.test(i)) {
  2637. copy[i] = self[i];
  2638. }
  2639. });
  2640. return copy;
  2641. ;
  2642. return self;
  2643. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  2644. }, function($ctx1) {$ctx1.fill(self,"shallowCopy",{},$globals.Object)});
  2645. //>>excludeEnd("ctx");
  2646. },
  2647. //>>excludeStart("ide", pragmas.excludeIdeData);
  2648. args: [],
  2649. source: "shallowCopy\x0a\x09<\x0a\x09\x09var copy = self.klass._new();\x0a\x09\x09Object.keys(self).forEach(function(i) {\x0a\x09\x09if(/^@.+/.test(i)) {\x0a\x09\x09\x09copy[i] = self[i];\x0a\x09\x09}\x0a\x09\x09});\x0a\x09\x09return copy;\x0a\x09>",
  2650. referencedClasses: [],
  2651. //>>excludeEnd("ide");
  2652. messageSends: []
  2653. }),
  2654. $globals.Object);
  2655. $core.addMethod(
  2656. $core.method({
  2657. selector: "shouldNotImplement",
  2658. protocol: 'error handling',
  2659. fn: function (){
  2660. var self=this;
  2661. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  2662. return $core.withContext(function($ctx1) {
  2663. //>>excludeEnd("ctx");
  2664. self._error_("This method should not be implemented in ".__comma($recv(self._class())._name()));
  2665. return self;
  2666. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  2667. }, function($ctx1) {$ctx1.fill(self,"shouldNotImplement",{},$globals.Object)});
  2668. //>>excludeEnd("ctx");
  2669. },
  2670. //>>excludeStart("ide", pragmas.excludeIdeData);
  2671. args: [],
  2672. source: "shouldNotImplement\x0a\x09self error: 'This method should not be implemented in ', self class name",
  2673. referencedClasses: [],
  2674. //>>excludeEnd("ide");
  2675. messageSends: ["error:", ",", "name", "class"]
  2676. }),
  2677. $globals.Object);
  2678. $core.addMethod(
  2679. $core.method({
  2680. selector: "size",
  2681. protocol: 'accessing',
  2682. fn: function (){
  2683. var self=this;
  2684. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  2685. return $core.withContext(function($ctx1) {
  2686. //>>excludeEnd("ctx");
  2687. self._error_("Object not indexable");
  2688. return self;
  2689. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  2690. }, function($ctx1) {$ctx1.fill(self,"size",{},$globals.Object)});
  2691. //>>excludeEnd("ctx");
  2692. },
  2693. //>>excludeStart("ide", pragmas.excludeIdeData);
  2694. args: [],
  2695. source: "size\x0a\x09self error: 'Object not indexable'",
  2696. referencedClasses: [],
  2697. //>>excludeEnd("ide");
  2698. messageSends: ["error:"]
  2699. }),
  2700. $globals.Object);
  2701. $core.addMethod(
  2702. $core.method({
  2703. selector: "subclassResponsibility",
  2704. protocol: 'error handling',
  2705. fn: function (){
  2706. var self=this;
  2707. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  2708. return $core.withContext(function($ctx1) {
  2709. //>>excludeEnd("ctx");
  2710. self._error_("This method is a responsibility of a subclass");
  2711. return self;
  2712. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  2713. }, function($ctx1) {$ctx1.fill(self,"subclassResponsibility",{},$globals.Object)});
  2714. //>>excludeEnd("ctx");
  2715. },
  2716. //>>excludeStart("ide", pragmas.excludeIdeData);
  2717. args: [],
  2718. source: "subclassResponsibility\x0a\x09self error: 'This method is a responsibility of a subclass'",
  2719. referencedClasses: [],
  2720. //>>excludeEnd("ide");
  2721. messageSends: ["error:"]
  2722. }),
  2723. $globals.Object);
  2724. $core.addMethod(
  2725. $core.method({
  2726. selector: "throw:",
  2727. protocol: 'error handling',
  2728. fn: function (anObject){
  2729. var self=this;
  2730. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  2731. return $core.withContext(function($ctx1) {
  2732. //>>excludeEnd("ctx");
  2733. throw anObject ;
  2734. return self;
  2735. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  2736. }, function($ctx1) {$ctx1.fill(self,"throw:",{anObject:anObject},$globals.Object)});
  2737. //>>excludeEnd("ctx");
  2738. },
  2739. //>>excludeStart("ide", pragmas.excludeIdeData);
  2740. args: ["anObject"],
  2741. source: "throw: anObject\x0a\x09< throw anObject >",
  2742. referencedClasses: [],
  2743. //>>excludeEnd("ide");
  2744. messageSends: []
  2745. }),
  2746. $globals.Object);
  2747. $core.addMethod(
  2748. $core.method({
  2749. selector: "try:catch:",
  2750. protocol: 'error handling',
  2751. fn: function (aBlock,anotherBlock){
  2752. var self=this;
  2753. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  2754. return $core.withContext(function($ctx1) {
  2755. //>>excludeEnd("ctx");
  2756. var $1;
  2757. self._deprecatedAPI();
  2758. $1=$recv(aBlock)._tryCatch_(anotherBlock);
  2759. return $1;
  2760. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  2761. }, function($ctx1) {$ctx1.fill(self,"try:catch:",{aBlock:aBlock,anotherBlock:anotherBlock},$globals.Object)});
  2762. //>>excludeEnd("ctx");
  2763. },
  2764. //>>excludeStart("ide", pragmas.excludeIdeData);
  2765. args: ["aBlock", "anotherBlock"],
  2766. source: "try: aBlock catch: anotherBlock\x0a\x09self deprecatedAPI.\x0a\x09\x0a\x09^ aBlock tryCatch: anotherBlock",
  2767. referencedClasses: [],
  2768. //>>excludeEnd("ide");
  2769. messageSends: ["deprecatedAPI", "tryCatch:"]
  2770. }),
  2771. $globals.Object);
  2772. $core.addMethod(
  2773. $core.method({
  2774. selector: "value",
  2775. protocol: 'accessing',
  2776. fn: function (){
  2777. var self=this;
  2778. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  2779. return $core.withContext(function($ctx1) {
  2780. //>>excludeEnd("ctx");
  2781. return self.valueOf();
  2782. return self;
  2783. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  2784. }, function($ctx1) {$ctx1.fill(self,"value",{},$globals.Object)});
  2785. //>>excludeEnd("ctx");
  2786. },
  2787. //>>excludeStart("ide", pragmas.excludeIdeData);
  2788. args: [],
  2789. source: "value\x0a\x09<return self.valueOf()>",
  2790. referencedClasses: [],
  2791. //>>excludeEnd("ide");
  2792. messageSends: []
  2793. }),
  2794. $globals.Object);
  2795. $core.addMethod(
  2796. $core.method({
  2797. selector: "accessorProtocolWith:",
  2798. protocol: 'helios',
  2799. fn: function (aGenerator){
  2800. var self=this;
  2801. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  2802. return $core.withContext(function($ctx1) {
  2803. //>>excludeEnd("ctx");
  2804. $recv(aGenerator)._accessorProtocolForObject();
  2805. return self;
  2806. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  2807. }, function($ctx1) {$ctx1.fill(self,"accessorProtocolWith:",{aGenerator:aGenerator},$globals.Object.klass)});
  2808. //>>excludeEnd("ctx");
  2809. },
  2810. //>>excludeStart("ide", pragmas.excludeIdeData);
  2811. args: ["aGenerator"],
  2812. source: "accessorProtocolWith: aGenerator\x0a\x09aGenerator accessorProtocolForObject",
  2813. referencedClasses: [],
  2814. //>>excludeEnd("ide");
  2815. messageSends: ["accessorProtocolForObject"]
  2816. }),
  2817. $globals.Object.klass);
  2818. $core.addMethod(
  2819. $core.method({
  2820. selector: "accessorsSourceCodesWith:",
  2821. protocol: 'helios',
  2822. fn: function (aGenerator){
  2823. var self=this;
  2824. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  2825. return $core.withContext(function($ctx1) {
  2826. //>>excludeEnd("ctx");
  2827. $recv(aGenerator)._accessorsForObject();
  2828. return self;
  2829. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  2830. }, function($ctx1) {$ctx1.fill(self,"accessorsSourceCodesWith:",{aGenerator:aGenerator},$globals.Object.klass)});
  2831. //>>excludeEnd("ctx");
  2832. },
  2833. //>>excludeStart("ide", pragmas.excludeIdeData);
  2834. args: ["aGenerator"],
  2835. source: "accessorsSourceCodesWith: aGenerator\x0a\x09aGenerator accessorsForObject",
  2836. referencedClasses: [],
  2837. //>>excludeEnd("ide");
  2838. messageSends: ["accessorsForObject"]
  2839. }),
  2840. $globals.Object.klass);
  2841. $core.addMethod(
  2842. $core.method({
  2843. selector: "initialize",
  2844. protocol: 'initialization',
  2845. fn: function (){
  2846. var self=this;
  2847. return self;
  2848. },
  2849. //>>excludeStart("ide", pragmas.excludeIdeData);
  2850. args: [],
  2851. source: "initialize\x0a\x09\x22no op\x22",
  2852. referencedClasses: [],
  2853. //>>excludeEnd("ide");
  2854. messageSends: []
  2855. }),
  2856. $globals.Object.klass);
  2857. $core.addMethod(
  2858. $core.method({
  2859. selector: "initializeProtocolWith:",
  2860. protocol: 'helios',
  2861. fn: function (aGenerator){
  2862. var self=this;
  2863. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  2864. return $core.withContext(function($ctx1) {
  2865. //>>excludeEnd("ctx");
  2866. $recv(aGenerator)._initializeProtocolForObject();
  2867. return self;
  2868. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  2869. }, function($ctx1) {$ctx1.fill(self,"initializeProtocolWith:",{aGenerator:aGenerator},$globals.Object.klass)});
  2870. //>>excludeEnd("ctx");
  2871. },
  2872. //>>excludeStart("ide", pragmas.excludeIdeData);
  2873. args: ["aGenerator"],
  2874. source: "initializeProtocolWith: aGenerator\x0a\x09aGenerator initializeProtocolForObject",
  2875. referencedClasses: [],
  2876. //>>excludeEnd("ide");
  2877. messageSends: ["initializeProtocolForObject"]
  2878. }),
  2879. $globals.Object.klass);
  2880. $core.addMethod(
  2881. $core.method({
  2882. selector: "initializeSourceCodesWith:",
  2883. protocol: 'helios',
  2884. fn: function (aGenerator){
  2885. var self=this;
  2886. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  2887. return $core.withContext(function($ctx1) {
  2888. //>>excludeEnd("ctx");
  2889. $recv(aGenerator)._initializeForObject();
  2890. return self;
  2891. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  2892. }, function($ctx1) {$ctx1.fill(self,"initializeSourceCodesWith:",{aGenerator:aGenerator},$globals.Object.klass)});
  2893. //>>excludeEnd("ctx");
  2894. },
  2895. //>>excludeStart("ide", pragmas.excludeIdeData);
  2896. args: ["aGenerator"],
  2897. source: "initializeSourceCodesWith: aGenerator\x0a\x09aGenerator initializeForObject",
  2898. referencedClasses: [],
  2899. //>>excludeEnd("ide");
  2900. messageSends: ["initializeForObject"]
  2901. }),
  2902. $globals.Object.klass);
  2903. $core.addClass('Boolean', $globals.Object, [], 'Kernel-Objects');
  2904. //>>excludeStart("ide", pragmas.excludeIdeData);
  2905. $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: [ ... ]";
  2906. //>>excludeEnd("ide");
  2907. $core.addMethod(
  2908. $core.method({
  2909. selector: "&",
  2910. protocol: 'controlling',
  2911. fn: function (aBoolean){
  2912. var self=this;
  2913. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  2914. return $core.withContext(function($ctx1) {
  2915. //>>excludeEnd("ctx");
  2916. if(self == true) {
  2917. return aBoolean;
  2918. } else {
  2919. return false;
  2920. }
  2921. ;
  2922. return self;
  2923. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  2924. }, function($ctx1) {$ctx1.fill(self,"&",{aBoolean:aBoolean},$globals.Boolean)});
  2925. //>>excludeEnd("ctx");
  2926. },
  2927. //>>excludeStart("ide", pragmas.excludeIdeData);
  2928. args: ["aBoolean"],
  2929. source: "& aBoolean\x0a\x09<\x0a\x09\x09if(self == true) {\x0a\x09\x09return aBoolean;\x0a\x09\x09} else {\x0a\x09\x09return false;\x0a\x09\x09}\x0a\x09>",
  2930. referencedClasses: [],
  2931. //>>excludeEnd("ide");
  2932. messageSends: []
  2933. }),
  2934. $globals.Boolean);
  2935. $core.addMethod(
  2936. $core.method({
  2937. selector: "=",
  2938. protocol: 'comparing',
  2939. fn: function (aBoolean){
  2940. var self=this;
  2941. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  2942. return $core.withContext(function($ctx1) {
  2943. //>>excludeEnd("ctx");
  2944. return aBoolean != null &&
  2945. typeof aBoolean._isBoolean === "function" &&
  2946. aBoolean._isBoolean() &&
  2947. Boolean(self == true) == aBoolean
  2948. ;
  2949. return self;
  2950. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  2951. }, function($ctx1) {$ctx1.fill(self,"=",{aBoolean:aBoolean},$globals.Boolean)});
  2952. //>>excludeEnd("ctx");
  2953. },
  2954. //>>excludeStart("ide", pragmas.excludeIdeData);
  2955. args: ["aBoolean"],
  2956. source: "= aBoolean\x0a\x09<\x0a\x09\x09return aBoolean != null &&\x0a\x09\x09\x09typeof aBoolean._isBoolean === \x22function\x22 &&\x0a\x09\x09\x09aBoolean._isBoolean() &&\x0a\x09\x09\x09Boolean(self == true) == aBoolean\x0a\x09>",
  2957. referencedClasses: [],
  2958. //>>excludeEnd("ide");
  2959. messageSends: []
  2960. }),
  2961. $globals.Boolean);
  2962. $core.addMethod(
  2963. $core.method({
  2964. selector: "==",
  2965. protocol: 'comparing',
  2966. fn: function (aBoolean){
  2967. var self=this;
  2968. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  2969. return $core.withContext(function($ctx1) {
  2970. //>>excludeEnd("ctx");
  2971. var $1;
  2972. $1=self.__eq(aBoolean);
  2973. return $1;
  2974. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  2975. }, function($ctx1) {$ctx1.fill(self,"==",{aBoolean:aBoolean},$globals.Boolean)});
  2976. //>>excludeEnd("ctx");
  2977. },
  2978. //>>excludeStart("ide", pragmas.excludeIdeData);
  2979. args: ["aBoolean"],
  2980. source: "== aBoolean\x0a\x09^ self = aBoolean",
  2981. referencedClasses: [],
  2982. //>>excludeEnd("ide");
  2983. messageSends: ["="]
  2984. }),
  2985. $globals.Boolean);
  2986. $core.addMethod(
  2987. $core.method({
  2988. selector: "and:",
  2989. protocol: 'controlling',
  2990. fn: function (aBlock){
  2991. var self=this;
  2992. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  2993. return $core.withContext(function($ctx1) {
  2994. //>>excludeEnd("ctx");
  2995. var $2,$1;
  2996. $2=self.__eq(true);
  2997. $1=$recv($2)._ifTrue_ifFalse_(aBlock,(function(){
  2998. return false;
  2999. }));
  3000. return $1;
  3001. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  3002. }, function($ctx1) {$ctx1.fill(self,"and:",{aBlock:aBlock},$globals.Boolean)});
  3003. //>>excludeEnd("ctx");
  3004. },
  3005. //>>excludeStart("ide", pragmas.excludeIdeData);
  3006. args: ["aBlock"],
  3007. source: "and: aBlock\x0a\x09^ self = true\x0a\x09\x09ifTrue: aBlock\x0a\x09\x09ifFalse: [ false ]",
  3008. referencedClasses: [],
  3009. //>>excludeEnd("ide");
  3010. messageSends: ["ifTrue:ifFalse:", "="]
  3011. }),
  3012. $globals.Boolean);
  3013. $core.addMethod(
  3014. $core.method({
  3015. selector: "asBit",
  3016. protocol: 'converting',
  3017. fn: function (){
  3018. var self=this;
  3019. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  3020. return $core.withContext(function($ctx1) {
  3021. //>>excludeEnd("ctx");
  3022. var $1;
  3023. if($core.assert(self)){
  3024. $1=(1);
  3025. } else {
  3026. $1=(0);
  3027. };
  3028. return $1;
  3029. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  3030. }, function($ctx1) {$ctx1.fill(self,"asBit",{},$globals.Boolean)});
  3031. //>>excludeEnd("ctx");
  3032. },
  3033. //>>excludeStart("ide", pragmas.excludeIdeData);
  3034. args: [],
  3035. source: "asBit\x0a\x09^ self ifTrue: [ 1 ] ifFalse: [ 0 ]",
  3036. referencedClasses: [],
  3037. //>>excludeEnd("ide");
  3038. messageSends: ["ifTrue:ifFalse:"]
  3039. }),
  3040. $globals.Boolean);
  3041. $core.addMethod(
  3042. $core.method({
  3043. selector: "asJSON",
  3044. protocol: 'converting',
  3045. fn: function (){
  3046. var self=this;
  3047. return self;
  3048. },
  3049. //>>excludeStart("ide", pragmas.excludeIdeData);
  3050. args: [],
  3051. source: "asJSON\x0a\x09^ self",
  3052. referencedClasses: [],
  3053. //>>excludeEnd("ide");
  3054. messageSends: []
  3055. }),
  3056. $globals.Boolean);
  3057. $core.addMethod(
  3058. $core.method({
  3059. selector: "asString",
  3060. protocol: 'converting',
  3061. fn: function (){
  3062. var self=this;
  3063. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  3064. return $core.withContext(function($ctx1) {
  3065. //>>excludeEnd("ctx");
  3066. return self.toString() ;
  3067. return self;
  3068. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  3069. }, function($ctx1) {$ctx1.fill(self,"asString",{},$globals.Boolean)});
  3070. //>>excludeEnd("ctx");
  3071. },
  3072. //>>excludeStart("ide", pragmas.excludeIdeData);
  3073. args: [],
  3074. source: "asString\x0a\x09< return self.toString() >",
  3075. referencedClasses: [],
  3076. //>>excludeEnd("ide");
  3077. messageSends: []
  3078. }),
  3079. $globals.Boolean);
  3080. $core.addMethod(
  3081. $core.method({
  3082. selector: "deepCopy",
  3083. protocol: 'copying',
  3084. fn: function (){
  3085. var self=this;
  3086. return self;
  3087. },
  3088. //>>excludeStart("ide", pragmas.excludeIdeData);
  3089. args: [],
  3090. source: "deepCopy\x0a\x09^ self",
  3091. referencedClasses: [],
  3092. //>>excludeEnd("ide");
  3093. messageSends: []
  3094. }),
  3095. $globals.Boolean);
  3096. $core.addMethod(
  3097. $core.method({
  3098. selector: "ifFalse:",
  3099. protocol: 'controlling',
  3100. fn: function (aBlock){
  3101. var self=this;
  3102. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  3103. return $core.withContext(function($ctx1) {
  3104. //>>excludeEnd("ctx");
  3105. var $1;
  3106. $1=self._ifTrue_ifFalse_((function(){
  3107. }),aBlock);
  3108. return $1;
  3109. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  3110. }, function($ctx1) {$ctx1.fill(self,"ifFalse:",{aBlock:aBlock},$globals.Boolean)});
  3111. //>>excludeEnd("ctx");
  3112. },
  3113. //>>excludeStart("ide", pragmas.excludeIdeData);
  3114. args: ["aBlock"],
  3115. source: "ifFalse: aBlock\x0a\x09\x22inlined in the Compiler\x22\x0a\x09^ self ifTrue: [] ifFalse: aBlock",
  3116. referencedClasses: [],
  3117. //>>excludeEnd("ide");
  3118. messageSends: ["ifTrue:ifFalse:"]
  3119. }),
  3120. $globals.Boolean);
  3121. $core.addMethod(
  3122. $core.method({
  3123. selector: "ifFalse:ifTrue:",
  3124. protocol: 'controlling',
  3125. fn: function (aBlock,anotherBlock){
  3126. var self=this;
  3127. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  3128. return $core.withContext(function($ctx1) {
  3129. //>>excludeEnd("ctx");
  3130. var $1;
  3131. $1=self._ifTrue_ifFalse_(anotherBlock,aBlock);
  3132. return $1;
  3133. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  3134. }, function($ctx1) {$ctx1.fill(self,"ifFalse:ifTrue:",{aBlock:aBlock,anotherBlock:anotherBlock},$globals.Boolean)});
  3135. //>>excludeEnd("ctx");
  3136. },
  3137. //>>excludeStart("ide", pragmas.excludeIdeData);
  3138. args: ["aBlock", "anotherBlock"],
  3139. source: "ifFalse: aBlock ifTrue: anotherBlock\x0a\x09\x22inlined in the Compiler\x22\x0a\x09^ self ifTrue: anotherBlock ifFalse: aBlock",
  3140. referencedClasses: [],
  3141. //>>excludeEnd("ide");
  3142. messageSends: ["ifTrue:ifFalse:"]
  3143. }),
  3144. $globals.Boolean);
  3145. $core.addMethod(
  3146. $core.method({
  3147. selector: "ifTrue:",
  3148. protocol: 'controlling',
  3149. fn: function (aBlock){
  3150. var self=this;
  3151. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  3152. return $core.withContext(function($ctx1) {
  3153. //>>excludeEnd("ctx");
  3154. var $1;
  3155. $1=self._ifTrue_ifFalse_(aBlock,(function(){
  3156. }));
  3157. return $1;
  3158. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  3159. }, function($ctx1) {$ctx1.fill(self,"ifTrue:",{aBlock:aBlock},$globals.Boolean)});
  3160. //>>excludeEnd("ctx");
  3161. },
  3162. //>>excludeStart("ide", pragmas.excludeIdeData);
  3163. args: ["aBlock"],
  3164. source: "ifTrue: aBlock\x0a\x09\x22inlined in the Compiler\x22\x0a\x09^ self ifTrue: aBlock ifFalse: []",
  3165. referencedClasses: [],
  3166. //>>excludeEnd("ide");
  3167. messageSends: ["ifTrue:ifFalse:"]
  3168. }),
  3169. $globals.Boolean);
  3170. $core.addMethod(
  3171. $core.method({
  3172. selector: "ifTrue:ifFalse:",
  3173. protocol: 'controlling',
  3174. fn: function (aBlock,anotherBlock){
  3175. var self=this;
  3176. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  3177. return $core.withContext(function($ctx1) {
  3178. //>>excludeEnd("ctx");
  3179. if(self == true) {
  3180. return aBlock._value();
  3181. } else {
  3182. return anotherBlock._value();
  3183. }
  3184. ;
  3185. return self;
  3186. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  3187. }, function($ctx1) {$ctx1.fill(self,"ifTrue:ifFalse:",{aBlock:aBlock,anotherBlock:anotherBlock},$globals.Boolean)});
  3188. //>>excludeEnd("ctx");
  3189. },
  3190. //>>excludeStart("ide", pragmas.excludeIdeData);
  3191. args: ["aBlock", "anotherBlock"],
  3192. source: "ifTrue: aBlock ifFalse: anotherBlock\x0a\x09\x22inlined in the Compiler\x22\x0a\x09<\x0a\x09\x09if(self == true) {\x0a\x09\x09return aBlock._value();\x0a\x09\x09} else {\x0a\x09\x09return anotherBlock._value();\x0a\x09\x09}\x0a\x09>",
  3193. referencedClasses: [],
  3194. //>>excludeEnd("ide");
  3195. messageSends: []
  3196. }),
  3197. $globals.Boolean);
  3198. $core.addMethod(
  3199. $core.method({
  3200. selector: "isBoolean",
  3201. protocol: 'testing',
  3202. fn: function (){
  3203. var self=this;
  3204. return true;
  3205. },
  3206. //>>excludeStart("ide", pragmas.excludeIdeData);
  3207. args: [],
  3208. source: "isBoolean\x0a\x09^ true",
  3209. referencedClasses: [],
  3210. //>>excludeEnd("ide");
  3211. messageSends: []
  3212. }),
  3213. $globals.Boolean);
  3214. $core.addMethod(
  3215. $core.method({
  3216. selector: "isImmutable",
  3217. protocol: 'testing',
  3218. fn: function (){
  3219. var self=this;
  3220. return true;
  3221. },
  3222. //>>excludeStart("ide", pragmas.excludeIdeData);
  3223. args: [],
  3224. source: "isImmutable\x0a\x09^ true",
  3225. referencedClasses: [],
  3226. //>>excludeEnd("ide");
  3227. messageSends: []
  3228. }),
  3229. $globals.Boolean);
  3230. $core.addMethod(
  3231. $core.method({
  3232. selector: "not",
  3233. protocol: 'controlling',
  3234. fn: function (){
  3235. var self=this;
  3236. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  3237. return $core.withContext(function($ctx1) {
  3238. //>>excludeEnd("ctx");
  3239. var $1;
  3240. $1=self.__eq(false);
  3241. return $1;
  3242. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  3243. }, function($ctx1) {$ctx1.fill(self,"not",{},$globals.Boolean)});
  3244. //>>excludeEnd("ctx");
  3245. },
  3246. //>>excludeStart("ide", pragmas.excludeIdeData);
  3247. args: [],
  3248. source: "not\x0a\x09^ self = false",
  3249. referencedClasses: [],
  3250. //>>excludeEnd("ide");
  3251. messageSends: ["="]
  3252. }),
  3253. $globals.Boolean);
  3254. $core.addMethod(
  3255. $core.method({
  3256. selector: "or:",
  3257. protocol: 'controlling',
  3258. fn: function (aBlock){
  3259. var self=this;
  3260. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  3261. return $core.withContext(function($ctx1) {
  3262. //>>excludeEnd("ctx");
  3263. var $2,$1;
  3264. $2=self.__eq(true);
  3265. $1=$recv($2)._ifTrue_ifFalse_((function(){
  3266. return true;
  3267. }),aBlock);
  3268. return $1;
  3269. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  3270. }, function($ctx1) {$ctx1.fill(self,"or:",{aBlock:aBlock},$globals.Boolean)});
  3271. //>>excludeEnd("ctx");
  3272. },
  3273. //>>excludeStart("ide", pragmas.excludeIdeData);
  3274. args: ["aBlock"],
  3275. source: "or: aBlock\x0a\x09^ self = true\x0a\x09\x09ifTrue: [ true ]\x0a\x09\x09ifFalse: aBlock",
  3276. referencedClasses: [],
  3277. //>>excludeEnd("ide");
  3278. messageSends: ["ifTrue:ifFalse:", "="]
  3279. }),
  3280. $globals.Boolean);
  3281. $core.addMethod(
  3282. $core.method({
  3283. selector: "printOn:",
  3284. protocol: 'printing',
  3285. fn: function (aStream){
  3286. var self=this;
  3287. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  3288. return $core.withContext(function($ctx1) {
  3289. //>>excludeEnd("ctx");
  3290. $recv(aStream)._nextPutAll_(self._asString());
  3291. return self;
  3292. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  3293. }, function($ctx1) {$ctx1.fill(self,"printOn:",{aStream:aStream},$globals.Boolean)});
  3294. //>>excludeEnd("ctx");
  3295. },
  3296. //>>excludeStart("ide", pragmas.excludeIdeData);
  3297. args: ["aStream"],
  3298. source: "printOn: aStream\x0a\x09aStream nextPutAll: self asString",
  3299. referencedClasses: [],
  3300. //>>excludeEnd("ide");
  3301. messageSends: ["nextPutAll:", "asString"]
  3302. }),
  3303. $globals.Boolean);
  3304. $core.addMethod(
  3305. $core.method({
  3306. selector: "shallowCopy",
  3307. protocol: 'copying',
  3308. fn: function (){
  3309. var self=this;
  3310. return self;
  3311. },
  3312. //>>excludeStart("ide", pragmas.excludeIdeData);
  3313. args: [],
  3314. source: "shallowCopy\x0a\x09^ self",
  3315. referencedClasses: [],
  3316. //>>excludeEnd("ide");
  3317. messageSends: []
  3318. }),
  3319. $globals.Boolean);
  3320. $core.addMethod(
  3321. $core.method({
  3322. selector: "|",
  3323. protocol: 'controlling',
  3324. fn: function (aBoolean){
  3325. var self=this;
  3326. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  3327. return $core.withContext(function($ctx1) {
  3328. //>>excludeEnd("ctx");
  3329. if(self == true) {
  3330. return true;
  3331. } else {
  3332. return aBoolean;
  3333. }
  3334. ;
  3335. return self;
  3336. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  3337. }, function($ctx1) {$ctx1.fill(self,"|",{aBoolean:aBoolean},$globals.Boolean)});
  3338. //>>excludeEnd("ctx");
  3339. },
  3340. //>>excludeStart("ide", pragmas.excludeIdeData);
  3341. args: ["aBoolean"],
  3342. source: "| aBoolean\x0a\x09<\x0a\x09\x09if(self == true) {\x0a\x09\x09return true;\x0a\x09\x09} else {\x0a\x09\x09return aBoolean;\x0a\x09\x09}\x0a\x09>",
  3343. referencedClasses: [],
  3344. //>>excludeEnd("ide");
  3345. messageSends: []
  3346. }),
  3347. $globals.Boolean);
  3348. $core.addClass('Date', $globals.Object, [], 'Kernel-Objects');
  3349. //>>excludeStart("ide", pragmas.excludeIdeData);
  3350. $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.).";
  3351. //>>excludeEnd("ide");
  3352. $core.addMethod(
  3353. $core.method({
  3354. selector: "+",
  3355. protocol: 'arithmetic',
  3356. fn: function (aDate){
  3357. var self=this;
  3358. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  3359. return $core.withContext(function($ctx1) {
  3360. //>>excludeEnd("ctx");
  3361. return self + aDate;
  3362. return self;
  3363. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  3364. }, function($ctx1) {$ctx1.fill(self,"+",{aDate:aDate},$globals.Date)});
  3365. //>>excludeEnd("ctx");
  3366. },
  3367. //>>excludeStart("ide", pragmas.excludeIdeData);
  3368. args: ["aDate"],
  3369. source: "+ aDate\x0a\x09<return self + aDate>",
  3370. referencedClasses: [],
  3371. //>>excludeEnd("ide");
  3372. messageSends: []
  3373. }),
  3374. $globals.Date);
  3375. $core.addMethod(
  3376. $core.method({
  3377. selector: "-",
  3378. protocol: 'arithmetic',
  3379. fn: function (aDate){
  3380. var self=this;
  3381. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  3382. return $core.withContext(function($ctx1) {
  3383. //>>excludeEnd("ctx");
  3384. return self - aDate;
  3385. return self;
  3386. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  3387. }, function($ctx1) {$ctx1.fill(self,"-",{aDate:aDate},$globals.Date)});
  3388. //>>excludeEnd("ctx");
  3389. },
  3390. //>>excludeStart("ide", pragmas.excludeIdeData);
  3391. args: ["aDate"],
  3392. source: "- aDate\x0a\x09<return self - aDate>",
  3393. referencedClasses: [],
  3394. //>>excludeEnd("ide");
  3395. messageSends: []
  3396. }),
  3397. $globals.Date);
  3398. $core.addMethod(
  3399. $core.method({
  3400. selector: "<",
  3401. protocol: 'comparing',
  3402. fn: function (aDate){
  3403. var self=this;
  3404. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  3405. return $core.withContext(function($ctx1) {
  3406. //>>excludeEnd("ctx");
  3407. return self < aDate;
  3408. return self;
  3409. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  3410. }, function($ctx1) {$ctx1.fill(self,"<",{aDate:aDate},$globals.Date)});
  3411. //>>excludeEnd("ctx");
  3412. },
  3413. //>>excludeStart("ide", pragmas.excludeIdeData);
  3414. args: ["aDate"],
  3415. source: "< aDate\x0a\x09<return self < aDate>",
  3416. referencedClasses: [],
  3417. //>>excludeEnd("ide");
  3418. messageSends: []
  3419. }),
  3420. $globals.Date);
  3421. $core.addMethod(
  3422. $core.method({
  3423. selector: "<=",
  3424. protocol: 'comparing',
  3425. fn: function (aDate){
  3426. var self=this;
  3427. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  3428. return $core.withContext(function($ctx1) {
  3429. //>>excludeEnd("ctx");
  3430. return self <= aDate;
  3431. return self;
  3432. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  3433. }, function($ctx1) {$ctx1.fill(self,"<=",{aDate:aDate},$globals.Date)});
  3434. //>>excludeEnd("ctx");
  3435. },
  3436. //>>excludeStart("ide", pragmas.excludeIdeData);
  3437. args: ["aDate"],
  3438. source: "<= aDate\x0a\x09<return self <= aDate>",
  3439. referencedClasses: [],
  3440. //>>excludeEnd("ide");
  3441. messageSends: []
  3442. }),
  3443. $globals.Date);
  3444. $core.addMethod(
  3445. $core.method({
  3446. selector: ">",
  3447. protocol: 'comparing',
  3448. fn: function (aDate){
  3449. var self=this;
  3450. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  3451. return $core.withContext(function($ctx1) {
  3452. //>>excludeEnd("ctx");
  3453. return self > aDate;
  3454. return self;
  3455. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  3456. }, function($ctx1) {$ctx1.fill(self,">",{aDate:aDate},$globals.Date)});
  3457. //>>excludeEnd("ctx");
  3458. },
  3459. //>>excludeStart("ide", pragmas.excludeIdeData);
  3460. args: ["aDate"],
  3461. source: "> aDate\x0a\x09<return self >> aDate>",
  3462. referencedClasses: [],
  3463. //>>excludeEnd("ide");
  3464. messageSends: []
  3465. }),
  3466. $globals.Date);
  3467. $core.addMethod(
  3468. $core.method({
  3469. selector: ">=",
  3470. protocol: 'comparing',
  3471. fn: function (aDate){
  3472. var self=this;
  3473. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  3474. return $core.withContext(function($ctx1) {
  3475. //>>excludeEnd("ctx");
  3476. return self >= aDate;
  3477. return self;
  3478. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  3479. }, function($ctx1) {$ctx1.fill(self,">=",{aDate:aDate},$globals.Date)});
  3480. //>>excludeEnd("ctx");
  3481. },
  3482. //>>excludeStart("ide", pragmas.excludeIdeData);
  3483. args: ["aDate"],
  3484. source: ">= aDate\x0a\x09<return self >>= aDate>",
  3485. referencedClasses: [],
  3486. //>>excludeEnd("ide");
  3487. messageSends: []
  3488. }),
  3489. $globals.Date);
  3490. $core.addMethod(
  3491. $core.method({
  3492. selector: "asDateString",
  3493. protocol: 'converting',
  3494. fn: function (){
  3495. var self=this;
  3496. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  3497. return $core.withContext(function($ctx1) {
  3498. //>>excludeEnd("ctx");
  3499. return self.toDateString();
  3500. return self;
  3501. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  3502. }, function($ctx1) {$ctx1.fill(self,"asDateString",{},$globals.Date)});
  3503. //>>excludeEnd("ctx");
  3504. },
  3505. //>>excludeStart("ide", pragmas.excludeIdeData);
  3506. args: [],
  3507. source: "asDateString\x0a\x09<return self.toDateString()>",
  3508. referencedClasses: [],
  3509. //>>excludeEnd("ide");
  3510. messageSends: []
  3511. }),
  3512. $globals.Date);
  3513. $core.addMethod(
  3514. $core.method({
  3515. selector: "asLocaleString",
  3516. protocol: 'converting',
  3517. fn: function (){
  3518. var self=this;
  3519. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  3520. return $core.withContext(function($ctx1) {
  3521. //>>excludeEnd("ctx");
  3522. return self.toLocaleString();
  3523. return self;
  3524. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  3525. }, function($ctx1) {$ctx1.fill(self,"asLocaleString",{},$globals.Date)});
  3526. //>>excludeEnd("ctx");
  3527. },
  3528. //>>excludeStart("ide", pragmas.excludeIdeData);
  3529. args: [],
  3530. source: "asLocaleString\x0a\x09<return self.toLocaleString()>",
  3531. referencedClasses: [],
  3532. //>>excludeEnd("ide");
  3533. messageSends: []
  3534. }),
  3535. $globals.Date);
  3536. $core.addMethod(
  3537. $core.method({
  3538. selector: "asMilliseconds",
  3539. protocol: 'converting',
  3540. fn: function (){
  3541. var self=this;
  3542. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  3543. return $core.withContext(function($ctx1) {
  3544. //>>excludeEnd("ctx");
  3545. var $1;
  3546. $1=self._time();
  3547. return $1;
  3548. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  3549. }, function($ctx1) {$ctx1.fill(self,"asMilliseconds",{},$globals.Date)});
  3550. //>>excludeEnd("ctx");
  3551. },
  3552. //>>excludeStart("ide", pragmas.excludeIdeData);
  3553. args: [],
  3554. source: "asMilliseconds\x0a\x09^ self time",
  3555. referencedClasses: [],
  3556. //>>excludeEnd("ide");
  3557. messageSends: ["time"]
  3558. }),
  3559. $globals.Date);
  3560. $core.addMethod(
  3561. $core.method({
  3562. selector: "asNumber",
  3563. protocol: 'converting',
  3564. fn: function (){
  3565. var self=this;
  3566. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  3567. return $core.withContext(function($ctx1) {
  3568. //>>excludeEnd("ctx");
  3569. var $1;
  3570. $1=self._asMilliseconds();
  3571. return $1;
  3572. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  3573. }, function($ctx1) {$ctx1.fill(self,"asNumber",{},$globals.Date)});
  3574. //>>excludeEnd("ctx");
  3575. },
  3576. //>>excludeStart("ide", pragmas.excludeIdeData);
  3577. args: [],
  3578. source: "asNumber\x0a\x09^ self asMilliseconds",
  3579. referencedClasses: [],
  3580. //>>excludeEnd("ide");
  3581. messageSends: ["asMilliseconds"]
  3582. }),
  3583. $globals.Date);
  3584. $core.addMethod(
  3585. $core.method({
  3586. selector: "asString",
  3587. protocol: 'converting',
  3588. fn: function (){
  3589. var self=this;
  3590. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  3591. return $core.withContext(function($ctx1) {
  3592. //>>excludeEnd("ctx");
  3593. return self.toString();
  3594. return self;
  3595. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  3596. }, function($ctx1) {$ctx1.fill(self,"asString",{},$globals.Date)});
  3597. //>>excludeEnd("ctx");
  3598. },
  3599. //>>excludeStart("ide", pragmas.excludeIdeData);
  3600. args: [],
  3601. source: "asString\x0a\x09<return self.toString()>",
  3602. referencedClasses: [],
  3603. //>>excludeEnd("ide");
  3604. messageSends: []
  3605. }),
  3606. $globals.Date);
  3607. $core.addMethod(
  3608. $core.method({
  3609. selector: "asTimeString",
  3610. protocol: 'converting',
  3611. fn: function (){
  3612. var self=this;
  3613. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  3614. return $core.withContext(function($ctx1) {
  3615. //>>excludeEnd("ctx");
  3616. return self.toTimeString();
  3617. return self;
  3618. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  3619. }, function($ctx1) {$ctx1.fill(self,"asTimeString",{},$globals.Date)});
  3620. //>>excludeEnd("ctx");
  3621. },
  3622. //>>excludeStart("ide", pragmas.excludeIdeData);
  3623. args: [],
  3624. source: "asTimeString\x0a\x09<return self.toTimeString()>",
  3625. referencedClasses: [],
  3626. //>>excludeEnd("ide");
  3627. messageSends: []
  3628. }),
  3629. $globals.Date);
  3630. $core.addMethod(
  3631. $core.method({
  3632. selector: "day",
  3633. protocol: 'accessing',
  3634. fn: function (){
  3635. var self=this;
  3636. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  3637. return $core.withContext(function($ctx1) {
  3638. //>>excludeEnd("ctx");
  3639. var $1;
  3640. $1=self._dayOfWeek();
  3641. return $1;
  3642. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  3643. }, function($ctx1) {$ctx1.fill(self,"day",{},$globals.Date)});
  3644. //>>excludeEnd("ctx");
  3645. },
  3646. //>>excludeStart("ide", pragmas.excludeIdeData);
  3647. args: [],
  3648. source: "day\x0a\x09^ self dayOfWeek",
  3649. referencedClasses: [],
  3650. //>>excludeEnd("ide");
  3651. messageSends: ["dayOfWeek"]
  3652. }),
  3653. $globals.Date);
  3654. $core.addMethod(
  3655. $core.method({
  3656. selector: "day:",
  3657. protocol: 'accessing',
  3658. fn: function (aNumber){
  3659. var self=this;
  3660. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  3661. return $core.withContext(function($ctx1) {
  3662. //>>excludeEnd("ctx");
  3663. self._dayOfWeek_(aNumber);
  3664. return self;
  3665. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  3666. }, function($ctx1) {$ctx1.fill(self,"day:",{aNumber:aNumber},$globals.Date)});
  3667. //>>excludeEnd("ctx");
  3668. },
  3669. //>>excludeStart("ide", pragmas.excludeIdeData);
  3670. args: ["aNumber"],
  3671. source: "day: aNumber\x0a\x09self dayOfWeek: aNumber",
  3672. referencedClasses: [],
  3673. //>>excludeEnd("ide");
  3674. messageSends: ["dayOfWeek:"]
  3675. }),
  3676. $globals.Date);
  3677. $core.addMethod(
  3678. $core.method({
  3679. selector: "dayOfMonth",
  3680. protocol: 'accessing',
  3681. fn: function (){
  3682. var self=this;
  3683. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  3684. return $core.withContext(function($ctx1) {
  3685. //>>excludeEnd("ctx");
  3686. return self.getDate();
  3687. return self;
  3688. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  3689. }, function($ctx1) {$ctx1.fill(self,"dayOfMonth",{},$globals.Date)});
  3690. //>>excludeEnd("ctx");
  3691. },
  3692. //>>excludeStart("ide", pragmas.excludeIdeData);
  3693. args: [],
  3694. source: "dayOfMonth\x0a\x09<return self.getDate()>",
  3695. referencedClasses: [],
  3696. //>>excludeEnd("ide");
  3697. messageSends: []
  3698. }),
  3699. $globals.Date);
  3700. $core.addMethod(
  3701. $core.method({
  3702. selector: "dayOfMonth:",
  3703. protocol: 'accessing',
  3704. fn: function (aNumber){
  3705. var self=this;
  3706. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  3707. return $core.withContext(function($ctx1) {
  3708. //>>excludeEnd("ctx");
  3709. self.setDate(aNumber);
  3710. return self;
  3711. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  3712. }, function($ctx1) {$ctx1.fill(self,"dayOfMonth:",{aNumber:aNumber},$globals.Date)});
  3713. //>>excludeEnd("ctx");
  3714. },
  3715. //>>excludeStart("ide", pragmas.excludeIdeData);
  3716. args: ["aNumber"],
  3717. source: "dayOfMonth: aNumber\x0a\x09<self.setDate(aNumber)>",
  3718. referencedClasses: [],
  3719. //>>excludeEnd("ide");
  3720. messageSends: []
  3721. }),
  3722. $globals.Date);
  3723. $core.addMethod(
  3724. $core.method({
  3725. selector: "dayOfWeek",
  3726. protocol: 'accessing',
  3727. fn: function (){
  3728. var self=this;
  3729. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  3730. return $core.withContext(function($ctx1) {
  3731. //>>excludeEnd("ctx");
  3732. return self.getDay() + 1;
  3733. return self;
  3734. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  3735. }, function($ctx1) {$ctx1.fill(self,"dayOfWeek",{},$globals.Date)});
  3736. //>>excludeEnd("ctx");
  3737. },
  3738. //>>excludeStart("ide", pragmas.excludeIdeData);
  3739. args: [],
  3740. source: "dayOfWeek\x0a\x09<return self.getDay() + 1>",
  3741. referencedClasses: [],
  3742. //>>excludeEnd("ide");
  3743. messageSends: []
  3744. }),
  3745. $globals.Date);
  3746. $core.addMethod(
  3747. $core.method({
  3748. selector: "dayOfWeek:",
  3749. protocol: 'accessing',
  3750. fn: function (aNumber){
  3751. var self=this;
  3752. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  3753. return $core.withContext(function($ctx1) {
  3754. //>>excludeEnd("ctx");
  3755. return self.setDay(aNumber - 1);
  3756. return self;
  3757. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  3758. }, function($ctx1) {$ctx1.fill(self,"dayOfWeek:",{aNumber:aNumber},$globals.Date)});
  3759. //>>excludeEnd("ctx");
  3760. },
  3761. //>>excludeStart("ide", pragmas.excludeIdeData);
  3762. args: ["aNumber"],
  3763. source: "dayOfWeek: aNumber\x0a\x09<return self.setDay(aNumber - 1)>",
  3764. referencedClasses: [],
  3765. //>>excludeEnd("ide");
  3766. messageSends: []
  3767. }),
  3768. $globals.Date);
  3769. $core.addMethod(
  3770. $core.method({
  3771. selector: "hours",
  3772. protocol: 'accessing',
  3773. fn: function (){
  3774. var self=this;
  3775. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  3776. return $core.withContext(function($ctx1) {
  3777. //>>excludeEnd("ctx");
  3778. return self.getHours();
  3779. return self;
  3780. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  3781. }, function($ctx1) {$ctx1.fill(self,"hours",{},$globals.Date)});
  3782. //>>excludeEnd("ctx");
  3783. },
  3784. //>>excludeStart("ide", pragmas.excludeIdeData);
  3785. args: [],
  3786. source: "hours\x0a\x09<return self.getHours()>",
  3787. referencedClasses: [],
  3788. //>>excludeEnd("ide");
  3789. messageSends: []
  3790. }),
  3791. $globals.Date);
  3792. $core.addMethod(
  3793. $core.method({
  3794. selector: "hours:",
  3795. protocol: 'accessing',
  3796. fn: function (aNumber){
  3797. var self=this;
  3798. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  3799. return $core.withContext(function($ctx1) {
  3800. //>>excludeEnd("ctx");
  3801. self.setHours(aNumber);
  3802. return self;
  3803. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  3804. }, function($ctx1) {$ctx1.fill(self,"hours:",{aNumber:aNumber},$globals.Date)});
  3805. //>>excludeEnd("ctx");
  3806. },
  3807. //>>excludeStart("ide", pragmas.excludeIdeData);
  3808. args: ["aNumber"],
  3809. source: "hours: aNumber\x0a\x09<self.setHours(aNumber)>",
  3810. referencedClasses: [],
  3811. //>>excludeEnd("ide");
  3812. messageSends: []
  3813. }),
  3814. $globals.Date);
  3815. $core.addMethod(
  3816. $core.method({
  3817. selector: "milliseconds",
  3818. protocol: 'accessing',
  3819. fn: function (){
  3820. var self=this;
  3821. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  3822. return $core.withContext(function($ctx1) {
  3823. //>>excludeEnd("ctx");
  3824. return self.getMilliseconds();
  3825. return self;
  3826. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  3827. }, function($ctx1) {$ctx1.fill(self,"milliseconds",{},$globals.Date)});
  3828. //>>excludeEnd("ctx");
  3829. },
  3830. //>>excludeStart("ide", pragmas.excludeIdeData);
  3831. args: [],
  3832. source: "milliseconds\x0a\x09<return self.getMilliseconds()>",
  3833. referencedClasses: [],
  3834. //>>excludeEnd("ide");
  3835. messageSends: []
  3836. }),
  3837. $globals.Date);
  3838. $core.addMethod(
  3839. $core.method({
  3840. selector: "milliseconds:",
  3841. protocol: 'accessing',
  3842. fn: function (aNumber){
  3843. var self=this;
  3844. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  3845. return $core.withContext(function($ctx1) {
  3846. //>>excludeEnd("ctx");
  3847. self.setMilliseconds(aNumber);
  3848. return self;
  3849. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  3850. }, function($ctx1) {$ctx1.fill(self,"milliseconds:",{aNumber:aNumber},$globals.Date)});
  3851. //>>excludeEnd("ctx");
  3852. },
  3853. //>>excludeStart("ide", pragmas.excludeIdeData);
  3854. args: ["aNumber"],
  3855. source: "milliseconds: aNumber\x0a\x09<self.setMilliseconds(aNumber)>",
  3856. referencedClasses: [],
  3857. //>>excludeEnd("ide");
  3858. messageSends: []
  3859. }),
  3860. $globals.Date);
  3861. $core.addMethod(
  3862. $core.method({
  3863. selector: "minutes",
  3864. protocol: 'accessing',
  3865. fn: function (){
  3866. var self=this;
  3867. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  3868. return $core.withContext(function($ctx1) {
  3869. //>>excludeEnd("ctx");
  3870. return self.getMinutes();
  3871. return self;
  3872. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  3873. }, function($ctx1) {$ctx1.fill(self,"minutes",{},$globals.Date)});
  3874. //>>excludeEnd("ctx");
  3875. },
  3876. //>>excludeStart("ide", pragmas.excludeIdeData);
  3877. args: [],
  3878. source: "minutes\x0a\x09<return self.getMinutes()>",
  3879. referencedClasses: [],
  3880. //>>excludeEnd("ide");
  3881. messageSends: []
  3882. }),
  3883. $globals.Date);
  3884. $core.addMethod(
  3885. $core.method({
  3886. selector: "minutes:",
  3887. protocol: 'accessing',
  3888. fn: function (aNumber){
  3889. var self=this;
  3890. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  3891. return $core.withContext(function($ctx1) {
  3892. //>>excludeEnd("ctx");
  3893. self.setMinutes(aNumber);
  3894. return self;
  3895. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  3896. }, function($ctx1) {$ctx1.fill(self,"minutes:",{aNumber:aNumber},$globals.Date)});
  3897. //>>excludeEnd("ctx");
  3898. },
  3899. //>>excludeStart("ide", pragmas.excludeIdeData);
  3900. args: ["aNumber"],
  3901. source: "minutes: aNumber\x0a\x09<self.setMinutes(aNumber)>",
  3902. referencedClasses: [],
  3903. //>>excludeEnd("ide");
  3904. messageSends: []
  3905. }),
  3906. $globals.Date);
  3907. $core.addMethod(
  3908. $core.method({
  3909. selector: "month",
  3910. protocol: 'accessing',
  3911. fn: function (){
  3912. var self=this;
  3913. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  3914. return $core.withContext(function($ctx1) {
  3915. //>>excludeEnd("ctx");
  3916. return self.getMonth() + 1;
  3917. return self;
  3918. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  3919. }, function($ctx1) {$ctx1.fill(self,"month",{},$globals.Date)});
  3920. //>>excludeEnd("ctx");
  3921. },
  3922. //>>excludeStart("ide", pragmas.excludeIdeData);
  3923. args: [],
  3924. source: "month\x0a\x09<return self.getMonth() + 1>",
  3925. referencedClasses: [],
  3926. //>>excludeEnd("ide");
  3927. messageSends: []
  3928. }),
  3929. $globals.Date);
  3930. $core.addMethod(
  3931. $core.method({
  3932. selector: "month:",
  3933. protocol: 'accessing',
  3934. fn: function (aNumber){
  3935. var self=this;
  3936. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  3937. return $core.withContext(function($ctx1) {
  3938. //>>excludeEnd("ctx");
  3939. self.setMonth(aNumber - 1);
  3940. return self;
  3941. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  3942. }, function($ctx1) {$ctx1.fill(self,"month:",{aNumber:aNumber},$globals.Date)});
  3943. //>>excludeEnd("ctx");
  3944. },
  3945. //>>excludeStart("ide", pragmas.excludeIdeData);
  3946. args: ["aNumber"],
  3947. source: "month: aNumber\x0a\x09<self.setMonth(aNumber - 1)>",
  3948. referencedClasses: [],
  3949. //>>excludeEnd("ide");
  3950. messageSends: []
  3951. }),
  3952. $globals.Date);
  3953. $core.addMethod(
  3954. $core.method({
  3955. selector: "printOn:",
  3956. protocol: 'printing',
  3957. fn: function (aStream){
  3958. var self=this;
  3959. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  3960. return $core.withContext(function($ctx1) {
  3961. //>>excludeEnd("ctx");
  3962. $recv(aStream)._nextPutAll_(self._asString());
  3963. return self;
  3964. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  3965. }, function($ctx1) {$ctx1.fill(self,"printOn:",{aStream:aStream},$globals.Date)});
  3966. //>>excludeEnd("ctx");
  3967. },
  3968. //>>excludeStart("ide", pragmas.excludeIdeData);
  3969. args: ["aStream"],
  3970. source: "printOn: aStream\x0a\x09aStream nextPutAll: self asString",
  3971. referencedClasses: [],
  3972. //>>excludeEnd("ide");
  3973. messageSends: ["nextPutAll:", "asString"]
  3974. }),
  3975. $globals.Date);
  3976. $core.addMethod(
  3977. $core.method({
  3978. selector: "seconds",
  3979. protocol: 'accessing',
  3980. fn: function (){
  3981. var self=this;
  3982. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  3983. return $core.withContext(function($ctx1) {
  3984. //>>excludeEnd("ctx");
  3985. return self.getSeconds();
  3986. return self;
  3987. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  3988. }, function($ctx1) {$ctx1.fill(self,"seconds",{},$globals.Date)});
  3989. //>>excludeEnd("ctx");
  3990. },
  3991. //>>excludeStart("ide", pragmas.excludeIdeData);
  3992. args: [],
  3993. source: "seconds\x0a\x09<return self.getSeconds()>",
  3994. referencedClasses: [],
  3995. //>>excludeEnd("ide");
  3996. messageSends: []
  3997. }),
  3998. $globals.Date);
  3999. $core.addMethod(
  4000. $core.method({
  4001. selector: "seconds:",
  4002. protocol: 'accessing',
  4003. fn: function (aNumber){
  4004. var self=this;
  4005. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  4006. return $core.withContext(function($ctx1) {
  4007. //>>excludeEnd("ctx");
  4008. self.setSeconds(aNumber);
  4009. return self;
  4010. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  4011. }, function($ctx1) {$ctx1.fill(self,"seconds:",{aNumber:aNumber},$globals.Date)});
  4012. //>>excludeEnd("ctx");
  4013. },
  4014. //>>excludeStart("ide", pragmas.excludeIdeData);
  4015. args: ["aNumber"],
  4016. source: "seconds: aNumber\x0a\x09<self.setSeconds(aNumber)>",
  4017. referencedClasses: [],
  4018. //>>excludeEnd("ide");
  4019. messageSends: []
  4020. }),
  4021. $globals.Date);
  4022. $core.addMethod(
  4023. $core.method({
  4024. selector: "time",
  4025. protocol: 'accessing',
  4026. fn: function (){
  4027. var self=this;
  4028. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  4029. return $core.withContext(function($ctx1) {
  4030. //>>excludeEnd("ctx");
  4031. return self.getTime();
  4032. return self;
  4033. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  4034. }, function($ctx1) {$ctx1.fill(self,"time",{},$globals.Date)});
  4035. //>>excludeEnd("ctx");
  4036. },
  4037. //>>excludeStart("ide", pragmas.excludeIdeData);
  4038. args: [],
  4039. source: "time\x0a\x09<return self.getTime()>",
  4040. referencedClasses: [],
  4041. //>>excludeEnd("ide");
  4042. messageSends: []
  4043. }),
  4044. $globals.Date);
  4045. $core.addMethod(
  4046. $core.method({
  4047. selector: "time:",
  4048. protocol: 'accessing',
  4049. fn: function (aNumber){
  4050. var self=this;
  4051. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  4052. return $core.withContext(function($ctx1) {
  4053. //>>excludeEnd("ctx");
  4054. self.setTime(aNumber);
  4055. return self;
  4056. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  4057. }, function($ctx1) {$ctx1.fill(self,"time:",{aNumber:aNumber},$globals.Date)});
  4058. //>>excludeEnd("ctx");
  4059. },
  4060. //>>excludeStart("ide", pragmas.excludeIdeData);
  4061. args: ["aNumber"],
  4062. source: "time: aNumber\x0a\x09<self.setTime(aNumber)>",
  4063. referencedClasses: [],
  4064. //>>excludeEnd("ide");
  4065. messageSends: []
  4066. }),
  4067. $globals.Date);
  4068. $core.addMethod(
  4069. $core.method({
  4070. selector: "year",
  4071. protocol: 'accessing',
  4072. fn: function (){
  4073. var self=this;
  4074. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  4075. return $core.withContext(function($ctx1) {
  4076. //>>excludeEnd("ctx");
  4077. return self.getFullYear();
  4078. return self;
  4079. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  4080. }, function($ctx1) {$ctx1.fill(self,"year",{},$globals.Date)});
  4081. //>>excludeEnd("ctx");
  4082. },
  4083. //>>excludeStart("ide", pragmas.excludeIdeData);
  4084. args: [],
  4085. source: "year\x0a\x09<return self.getFullYear()>",
  4086. referencedClasses: [],
  4087. //>>excludeEnd("ide");
  4088. messageSends: []
  4089. }),
  4090. $globals.Date);
  4091. $core.addMethod(
  4092. $core.method({
  4093. selector: "year:",
  4094. protocol: 'accessing',
  4095. fn: function (aNumber){
  4096. var self=this;
  4097. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  4098. return $core.withContext(function($ctx1) {
  4099. //>>excludeEnd("ctx");
  4100. self.setFullYear(aNumber);
  4101. return self;
  4102. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  4103. }, function($ctx1) {$ctx1.fill(self,"year:",{aNumber:aNumber},$globals.Date)});
  4104. //>>excludeEnd("ctx");
  4105. },
  4106. //>>excludeStart("ide", pragmas.excludeIdeData);
  4107. args: ["aNumber"],
  4108. source: "year: aNumber\x0a\x09<self.setFullYear(aNumber)>",
  4109. referencedClasses: [],
  4110. //>>excludeEnd("ide");
  4111. messageSends: []
  4112. }),
  4113. $globals.Date);
  4114. $core.addMethod(
  4115. $core.method({
  4116. selector: "fromMilliseconds:",
  4117. protocol: 'instance creation',
  4118. fn: function (aNumber){
  4119. var self=this;
  4120. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  4121. return $core.withContext(function($ctx1) {
  4122. //>>excludeEnd("ctx");
  4123. var $1;
  4124. $1=self._new_(aNumber);
  4125. return $1;
  4126. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  4127. }, function($ctx1) {$ctx1.fill(self,"fromMilliseconds:",{aNumber:aNumber},$globals.Date.klass)});
  4128. //>>excludeEnd("ctx");
  4129. },
  4130. //>>excludeStart("ide", pragmas.excludeIdeData);
  4131. args: ["aNumber"],
  4132. source: "fromMilliseconds: aNumber\x0a\x09^ self new: aNumber",
  4133. referencedClasses: [],
  4134. //>>excludeEnd("ide");
  4135. messageSends: ["new:"]
  4136. }),
  4137. $globals.Date.klass);
  4138. $core.addMethod(
  4139. $core.method({
  4140. selector: "fromSeconds:",
  4141. protocol: 'instance creation',
  4142. fn: function (aNumber){
  4143. var self=this;
  4144. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  4145. return $core.withContext(function($ctx1) {
  4146. //>>excludeEnd("ctx");
  4147. var $1;
  4148. $1=self._fromMilliseconds_($recv(aNumber).__star((1000)));
  4149. return $1;
  4150. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  4151. }, function($ctx1) {$ctx1.fill(self,"fromSeconds:",{aNumber:aNumber},$globals.Date.klass)});
  4152. //>>excludeEnd("ctx");
  4153. },
  4154. //>>excludeStart("ide", pragmas.excludeIdeData);
  4155. args: ["aNumber"],
  4156. source: "fromSeconds: aNumber\x0a\x09^ self fromMilliseconds: aNumber * 1000",
  4157. referencedClasses: [],
  4158. //>>excludeEnd("ide");
  4159. messageSends: ["fromMilliseconds:", "*"]
  4160. }),
  4161. $globals.Date.klass);
  4162. $core.addMethod(
  4163. $core.method({
  4164. selector: "fromString:",
  4165. protocol: 'instance creation',
  4166. fn: function (aString){
  4167. var self=this;
  4168. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  4169. return $core.withContext(function($ctx1) {
  4170. //>>excludeEnd("ctx");
  4171. var $1;
  4172. $1=self._new_(aString);
  4173. return $1;
  4174. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  4175. }, function($ctx1) {$ctx1.fill(self,"fromString:",{aString:aString},$globals.Date.klass)});
  4176. //>>excludeEnd("ctx");
  4177. },
  4178. //>>excludeStart("ide", pragmas.excludeIdeData);
  4179. args: ["aString"],
  4180. source: "fromString: aString\x0a\x09\x22Example: Date fromString('2011/04/15 00:00:00')\x22\x0a\x09^ self new: aString",
  4181. referencedClasses: [],
  4182. //>>excludeEnd("ide");
  4183. messageSends: ["new:"]
  4184. }),
  4185. $globals.Date.klass);
  4186. $core.addMethod(
  4187. $core.method({
  4188. selector: "heliosClass",
  4189. protocol: 'helios',
  4190. fn: function (){
  4191. var self=this;
  4192. return "magnitude";
  4193. },
  4194. //>>excludeStart("ide", pragmas.excludeIdeData);
  4195. args: [],
  4196. source: "heliosClass\x0a\x09^ 'magnitude'",
  4197. referencedClasses: [],
  4198. //>>excludeEnd("ide");
  4199. messageSends: []
  4200. }),
  4201. $globals.Date.klass);
  4202. $core.addMethod(
  4203. $core.method({
  4204. selector: "millisecondsToRun:",
  4205. protocol: 'instance creation',
  4206. fn: function (aBlock){
  4207. var self=this;
  4208. var t;
  4209. function $Date(){return $globals.Date||(typeof Date=="undefined"?nil:Date)}
  4210. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  4211. return $core.withContext(function($ctx1) {
  4212. //>>excludeEnd("ctx");
  4213. var $1;
  4214. t=$recv($Date())._now();
  4215. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  4216. $ctx1.sendIdx["now"]=1;
  4217. //>>excludeEnd("ctx");
  4218. $recv(aBlock)._value();
  4219. $1=$recv($recv($Date())._now()).__minus(t);
  4220. return $1;
  4221. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  4222. }, function($ctx1) {$ctx1.fill(self,"millisecondsToRun:",{aBlock:aBlock,t:t},$globals.Date.klass)});
  4223. //>>excludeEnd("ctx");
  4224. },
  4225. //>>excludeStart("ide", pragmas.excludeIdeData);
  4226. args: ["aBlock"],
  4227. source: "millisecondsToRun: aBlock\x0a\x09| t |\x0a\x09t := Date now.\x0a\x09aBlock value.\x0a\x09^ Date now - t",
  4228. referencedClasses: ["Date"],
  4229. //>>excludeEnd("ide");
  4230. messageSends: ["now", "value", "-"]
  4231. }),
  4232. $globals.Date.klass);
  4233. $core.addMethod(
  4234. $core.method({
  4235. selector: "new:",
  4236. protocol: 'instance creation',
  4237. fn: function (anObject){
  4238. var self=this;
  4239. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  4240. return $core.withContext(function($ctx1) {
  4241. //>>excludeEnd("ctx");
  4242. return new Date(anObject);
  4243. return self;
  4244. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  4245. }, function($ctx1) {$ctx1.fill(self,"new:",{anObject:anObject},$globals.Date.klass)});
  4246. //>>excludeEnd("ctx");
  4247. },
  4248. //>>excludeStart("ide", pragmas.excludeIdeData);
  4249. args: ["anObject"],
  4250. source: "new: anObject\x0a\x09<return new Date(anObject)>",
  4251. referencedClasses: [],
  4252. //>>excludeEnd("ide");
  4253. messageSends: []
  4254. }),
  4255. $globals.Date.klass);
  4256. $core.addMethod(
  4257. $core.method({
  4258. selector: "now",
  4259. protocol: 'instance creation',
  4260. fn: function (){
  4261. var self=this;
  4262. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  4263. return $core.withContext(function($ctx1) {
  4264. //>>excludeEnd("ctx");
  4265. var $1;
  4266. $1=self._today();
  4267. return $1;
  4268. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  4269. }, function($ctx1) {$ctx1.fill(self,"now",{},$globals.Date.klass)});
  4270. //>>excludeEnd("ctx");
  4271. },
  4272. //>>excludeStart("ide", pragmas.excludeIdeData);
  4273. args: [],
  4274. source: "now\x0a\x09^ self today",
  4275. referencedClasses: [],
  4276. //>>excludeEnd("ide");
  4277. messageSends: ["today"]
  4278. }),
  4279. $globals.Date.klass);
  4280. $core.addMethod(
  4281. $core.method({
  4282. selector: "today",
  4283. protocol: 'instance creation',
  4284. fn: function (){
  4285. var self=this;
  4286. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  4287. return $core.withContext(function($ctx1) {
  4288. //>>excludeEnd("ctx");
  4289. var $1;
  4290. $1=self._new();
  4291. return $1;
  4292. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  4293. }, function($ctx1) {$ctx1.fill(self,"today",{},$globals.Date.klass)});
  4294. //>>excludeEnd("ctx");
  4295. },
  4296. //>>excludeStart("ide", pragmas.excludeIdeData);
  4297. args: [],
  4298. source: "today\x0a\x09^ self new",
  4299. referencedClasses: [],
  4300. //>>excludeEnd("ide");
  4301. messageSends: ["new"]
  4302. }),
  4303. $globals.Date.klass);
  4304. $core.addClass('Number', $globals.Object, [], 'Kernel-Objects');
  4305. //>>excludeStart("ide", pragmas.excludeIdeData);
  4306. $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 ].";
  4307. //>>excludeEnd("ide");
  4308. $core.addMethod(
  4309. $core.method({
  4310. selector: "&",
  4311. protocol: 'converting',
  4312. fn: function (aNumber){
  4313. var self=this;
  4314. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  4315. return $core.withContext(function($ctx1) {
  4316. //>>excludeEnd("ctx");
  4317. return self & aNumber;
  4318. return self;
  4319. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  4320. }, function($ctx1) {$ctx1.fill(self,"&",{aNumber:aNumber},$globals.Number)});
  4321. //>>excludeEnd("ctx");
  4322. },
  4323. //>>excludeStart("ide", pragmas.excludeIdeData);
  4324. args: ["aNumber"],
  4325. source: "& aNumber\x0a\x09<return self & aNumber>",
  4326. referencedClasses: [],
  4327. //>>excludeEnd("ide");
  4328. messageSends: []
  4329. }),
  4330. $globals.Number);
  4331. $core.addMethod(
  4332. $core.method({
  4333. selector: "*",
  4334. protocol: 'arithmetic',
  4335. fn: function (aNumber){
  4336. var self=this;
  4337. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  4338. return $core.withContext(function($ctx1) {
  4339. //>>excludeEnd("ctx");
  4340. return self * aNumber;
  4341. return self;
  4342. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  4343. }, function($ctx1) {$ctx1.fill(self,"*",{aNumber:aNumber},$globals.Number)});
  4344. //>>excludeEnd("ctx");
  4345. },
  4346. //>>excludeStart("ide", pragmas.excludeIdeData);
  4347. args: ["aNumber"],
  4348. source: "* aNumber\x0a\x09\x22Inlined in the Compiler\x22\x0a\x09<return self * aNumber>",
  4349. referencedClasses: [],
  4350. //>>excludeEnd("ide");
  4351. messageSends: []
  4352. }),
  4353. $globals.Number);
  4354. $core.addMethod(
  4355. $core.method({
  4356. selector: "**",
  4357. protocol: 'mathematical functions',
  4358. fn: function (exponent){
  4359. var self=this;
  4360. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  4361. return $core.withContext(function($ctx1) {
  4362. //>>excludeEnd("ctx");
  4363. var $1;
  4364. $1=self._raisedTo_(exponent);
  4365. return $1;
  4366. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  4367. }, function($ctx1) {$ctx1.fill(self,"**",{exponent:exponent},$globals.Number)});
  4368. //>>excludeEnd("ctx");
  4369. },
  4370. //>>excludeStart("ide", pragmas.excludeIdeData);
  4371. args: ["exponent"],
  4372. source: "** exponent\x0a\x09^ self raisedTo: exponent",
  4373. referencedClasses: [],
  4374. //>>excludeEnd("ide");
  4375. messageSends: ["raisedTo:"]
  4376. }),
  4377. $globals.Number);
  4378. $core.addMethod(
  4379. $core.method({
  4380. selector: "+",
  4381. protocol: 'arithmetic',
  4382. fn: function (aNumber){
  4383. var self=this;
  4384. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  4385. return $core.withContext(function($ctx1) {
  4386. //>>excludeEnd("ctx");
  4387. return self + aNumber;
  4388. return self;
  4389. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  4390. }, function($ctx1) {$ctx1.fill(self,"+",{aNumber:aNumber},$globals.Number)});
  4391. //>>excludeEnd("ctx");
  4392. },
  4393. //>>excludeStart("ide", pragmas.excludeIdeData);
  4394. args: ["aNumber"],
  4395. source: "+ aNumber\x0a\x09\x22Inlined in the Compiler\x22\x0a\x09<return self + aNumber>",
  4396. referencedClasses: [],
  4397. //>>excludeEnd("ide");
  4398. messageSends: []
  4399. }),
  4400. $globals.Number);
  4401. $core.addMethod(
  4402. $core.method({
  4403. selector: "-",
  4404. protocol: 'arithmetic',
  4405. fn: function (aNumber){
  4406. var self=this;
  4407. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  4408. return $core.withContext(function($ctx1) {
  4409. //>>excludeEnd("ctx");
  4410. return self - aNumber;
  4411. return self;
  4412. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  4413. }, function($ctx1) {$ctx1.fill(self,"-",{aNumber:aNumber},$globals.Number)});
  4414. //>>excludeEnd("ctx");
  4415. },
  4416. //>>excludeStart("ide", pragmas.excludeIdeData);
  4417. args: ["aNumber"],
  4418. source: "- aNumber\x0a\x09\x22Inlined in the Compiler\x22\x0a\x09<return self - aNumber>",
  4419. referencedClasses: [],
  4420. //>>excludeEnd("ide");
  4421. messageSends: []
  4422. }),
  4423. $globals.Number);
  4424. $core.addMethod(
  4425. $core.method({
  4426. selector: "/",
  4427. protocol: 'arithmetic',
  4428. fn: function (aNumber){
  4429. var self=this;
  4430. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  4431. return $core.withContext(function($ctx1) {
  4432. //>>excludeEnd("ctx");
  4433. return self / aNumber;
  4434. return self;
  4435. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  4436. }, function($ctx1) {$ctx1.fill(self,"/",{aNumber:aNumber},$globals.Number)});
  4437. //>>excludeEnd("ctx");
  4438. },
  4439. //>>excludeStart("ide", pragmas.excludeIdeData);
  4440. args: ["aNumber"],
  4441. source: "/ aNumber\x0a\x09\x22Inlined in the Compiler\x22\x0a\x09<return self / aNumber>",
  4442. referencedClasses: [],
  4443. //>>excludeEnd("ide");
  4444. messageSends: []
  4445. }),
  4446. $globals.Number);
  4447. $core.addMethod(
  4448. $core.method({
  4449. selector: "//",
  4450. protocol: 'arithmetic',
  4451. fn: function (aNumber){
  4452. var self=this;
  4453. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  4454. return $core.withContext(function($ctx1) {
  4455. //>>excludeEnd("ctx");
  4456. var $1;
  4457. $1=$recv(self.__slash(aNumber))._floor();
  4458. return $1;
  4459. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  4460. }, function($ctx1) {$ctx1.fill(self,"//",{aNumber:aNumber},$globals.Number)});
  4461. //>>excludeEnd("ctx");
  4462. },
  4463. //>>excludeStart("ide", pragmas.excludeIdeData);
  4464. args: ["aNumber"],
  4465. source: "// aNumber\x0a\x09^ (self / aNumber) floor",
  4466. referencedClasses: [],
  4467. //>>excludeEnd("ide");
  4468. messageSends: ["floor", "/"]
  4469. }),
  4470. $globals.Number);
  4471. $core.addMethod(
  4472. $core.method({
  4473. selector: "<",
  4474. protocol: 'comparing',
  4475. fn: function (aNumber){
  4476. var self=this;
  4477. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  4478. return $core.withContext(function($ctx1) {
  4479. //>>excludeEnd("ctx");
  4480. return self < aNumber;
  4481. return self;
  4482. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  4483. }, function($ctx1) {$ctx1.fill(self,"<",{aNumber:aNumber},$globals.Number)});
  4484. //>>excludeEnd("ctx");
  4485. },
  4486. //>>excludeStart("ide", pragmas.excludeIdeData);
  4487. args: ["aNumber"],
  4488. source: "< aNumber\x0a\x09\x22Inlined in the Compiler\x22\x0a\x09<return self < aNumber>",
  4489. referencedClasses: [],
  4490. //>>excludeEnd("ide");
  4491. messageSends: []
  4492. }),
  4493. $globals.Number);
  4494. $core.addMethod(
  4495. $core.method({
  4496. selector: "<=",
  4497. protocol: 'comparing',
  4498. fn: function (aNumber){
  4499. var self=this;
  4500. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  4501. return $core.withContext(function($ctx1) {
  4502. //>>excludeEnd("ctx");
  4503. return self <= aNumber;
  4504. return self;
  4505. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  4506. }, function($ctx1) {$ctx1.fill(self,"<=",{aNumber:aNumber},$globals.Number)});
  4507. //>>excludeEnd("ctx");
  4508. },
  4509. //>>excludeStart("ide", pragmas.excludeIdeData);
  4510. args: ["aNumber"],
  4511. source: "<= aNumber\x0a\x09\x22Inlined in the Compiler\x22\x0a\x09<return self <= aNumber>",
  4512. referencedClasses: [],
  4513. //>>excludeEnd("ide");
  4514. messageSends: []
  4515. }),
  4516. $globals.Number);
  4517. $core.addMethod(
  4518. $core.method({
  4519. selector: "=",
  4520. protocol: 'comparing',
  4521. fn: function (aNumber){
  4522. var self=this;
  4523. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  4524. return $core.withContext(function($ctx1) {
  4525. //>>excludeEnd("ctx");
  4526. return aNumber != null &&
  4527. typeof aNumber._isNumber === "function" &&
  4528. aNumber._isNumber() &&
  4529. Number(self) == aNumber
  4530. ;
  4531. return self;
  4532. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  4533. }, function($ctx1) {$ctx1.fill(self,"=",{aNumber:aNumber},$globals.Number)});
  4534. //>>excludeEnd("ctx");
  4535. },
  4536. //>>excludeStart("ide", pragmas.excludeIdeData);
  4537. args: ["aNumber"],
  4538. source: "= aNumber\x0a\x09<\x0a\x09\x09return aNumber != null &&\x0a\x09\x09\x09typeof aNumber._isNumber === \x22function\x22 &&\x0a\x09\x09\x09aNumber._isNumber() &&\x0a\x09\x09\x09Number(self) == aNumber\x0a\x09>",
  4539. referencedClasses: [],
  4540. //>>excludeEnd("ide");
  4541. messageSends: []
  4542. }),
  4543. $globals.Number);
  4544. $core.addMethod(
  4545. $core.method({
  4546. selector: ">",
  4547. protocol: 'comparing',
  4548. fn: function (aNumber){
  4549. var self=this;
  4550. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  4551. return $core.withContext(function($ctx1) {
  4552. //>>excludeEnd("ctx");
  4553. return self > aNumber;
  4554. return self;
  4555. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  4556. }, function($ctx1) {$ctx1.fill(self,">",{aNumber:aNumber},$globals.Number)});
  4557. //>>excludeEnd("ctx");
  4558. },
  4559. //>>excludeStart("ide", pragmas.excludeIdeData);
  4560. args: ["aNumber"],
  4561. source: "> aNumber\x0a\x09\x22Inlined in the Compiler\x22\x0a\x09<return self >> aNumber>",
  4562. referencedClasses: [],
  4563. //>>excludeEnd("ide");
  4564. messageSends: []
  4565. }),
  4566. $globals.Number);
  4567. $core.addMethod(
  4568. $core.method({
  4569. selector: ">=",
  4570. protocol: 'comparing',
  4571. fn: function (aNumber){
  4572. var self=this;
  4573. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  4574. return $core.withContext(function($ctx1) {
  4575. //>>excludeEnd("ctx");
  4576. return self >= aNumber;
  4577. return self;
  4578. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  4579. }, function($ctx1) {$ctx1.fill(self,">=",{aNumber:aNumber},$globals.Number)});
  4580. //>>excludeEnd("ctx");
  4581. },
  4582. //>>excludeStart("ide", pragmas.excludeIdeData);
  4583. args: ["aNumber"],
  4584. source: ">= aNumber\x0a\x09\x22Inlined in the Compiler\x22\x0a\x09<return self >>= aNumber>",
  4585. referencedClasses: [],
  4586. //>>excludeEnd("ide");
  4587. messageSends: []
  4588. }),
  4589. $globals.Number);
  4590. $core.addMethod(
  4591. $core.method({
  4592. selector: "@",
  4593. protocol: 'converting',
  4594. fn: function (aNumber){
  4595. var self=this;
  4596. function $Point(){return $globals.Point||(typeof Point=="undefined"?nil:Point)}
  4597. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  4598. return $core.withContext(function($ctx1) {
  4599. //>>excludeEnd("ctx");
  4600. var $1;
  4601. $1=$recv($Point())._x_y_(self,aNumber);
  4602. return $1;
  4603. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  4604. }, function($ctx1) {$ctx1.fill(self,"@",{aNumber:aNumber},$globals.Number)});
  4605. //>>excludeEnd("ctx");
  4606. },
  4607. //>>excludeStart("ide", pragmas.excludeIdeData);
  4608. args: ["aNumber"],
  4609. source: "@ aNumber\x0a\x09^ Point x: self y: aNumber",
  4610. referencedClasses: ["Point"],
  4611. //>>excludeEnd("ide");
  4612. messageSends: ["x:y:"]
  4613. }),
  4614. $globals.Number);
  4615. $core.addMethod(
  4616. $core.method({
  4617. selector: "\x5c\x5c",
  4618. protocol: 'arithmetic',
  4619. fn: function (aNumber){
  4620. var self=this;
  4621. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  4622. return $core.withContext(function($ctx1) {
  4623. //>>excludeEnd("ctx");
  4624. return self % aNumber;
  4625. return self;
  4626. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  4627. }, function($ctx1) {$ctx1.fill(self,"\x5c\x5c",{aNumber:aNumber},$globals.Number)});
  4628. //>>excludeEnd("ctx");
  4629. },
  4630. //>>excludeStart("ide", pragmas.excludeIdeData);
  4631. args: ["aNumber"],
  4632. source: "\x5c\x5c aNumber\x0a\x09<return self % aNumber>",
  4633. referencedClasses: [],
  4634. //>>excludeEnd("ide");
  4635. messageSends: []
  4636. }),
  4637. $globals.Number);
  4638. $core.addMethod(
  4639. $core.method({
  4640. selector: "abs",
  4641. protocol: 'arithmetic',
  4642. fn: function (){
  4643. var self=this;
  4644. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  4645. return $core.withContext(function($ctx1) {
  4646. //>>excludeEnd("ctx");
  4647. return Math.abs(self);;
  4648. return self;
  4649. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  4650. }, function($ctx1) {$ctx1.fill(self,"abs",{},$globals.Number)});
  4651. //>>excludeEnd("ctx");
  4652. },
  4653. //>>excludeStart("ide", pragmas.excludeIdeData);
  4654. args: [],
  4655. source: "abs\x0a\x09<return Math.abs(self);>",
  4656. referencedClasses: [],
  4657. //>>excludeEnd("ide");
  4658. messageSends: []
  4659. }),
  4660. $globals.Number);
  4661. $core.addMethod(
  4662. $core.method({
  4663. selector: "arcCos",
  4664. protocol: 'mathematical functions',
  4665. fn: function (){
  4666. var self=this;
  4667. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  4668. return $core.withContext(function($ctx1) {
  4669. //>>excludeEnd("ctx");
  4670. return Math.acos(self);;
  4671. return self;
  4672. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  4673. }, function($ctx1) {$ctx1.fill(self,"arcCos",{},$globals.Number)});
  4674. //>>excludeEnd("ctx");
  4675. },
  4676. //>>excludeStart("ide", pragmas.excludeIdeData);
  4677. args: [],
  4678. source: "arcCos\x0a\x09<return Math.acos(self);>",
  4679. referencedClasses: [],
  4680. //>>excludeEnd("ide");
  4681. messageSends: []
  4682. }),
  4683. $globals.Number);
  4684. $core.addMethod(
  4685. $core.method({
  4686. selector: "arcSin",
  4687. protocol: 'mathematical functions',
  4688. fn: function (){
  4689. var self=this;
  4690. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  4691. return $core.withContext(function($ctx1) {
  4692. //>>excludeEnd("ctx");
  4693. return Math.asin(self);;
  4694. return self;
  4695. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  4696. }, function($ctx1) {$ctx1.fill(self,"arcSin",{},$globals.Number)});
  4697. //>>excludeEnd("ctx");
  4698. },
  4699. //>>excludeStart("ide", pragmas.excludeIdeData);
  4700. args: [],
  4701. source: "arcSin\x0a\x09<return Math.asin(self);>",
  4702. referencedClasses: [],
  4703. //>>excludeEnd("ide");
  4704. messageSends: []
  4705. }),
  4706. $globals.Number);
  4707. $core.addMethod(
  4708. $core.method({
  4709. selector: "arcTan",
  4710. protocol: 'mathematical functions',
  4711. fn: function (){
  4712. var self=this;
  4713. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  4714. return $core.withContext(function($ctx1) {
  4715. //>>excludeEnd("ctx");
  4716. return Math.atan(self);;
  4717. return self;
  4718. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  4719. }, function($ctx1) {$ctx1.fill(self,"arcTan",{},$globals.Number)});
  4720. //>>excludeEnd("ctx");
  4721. },
  4722. //>>excludeStart("ide", pragmas.excludeIdeData);
  4723. args: [],
  4724. source: "arcTan\x0a\x09<return Math.atan(self);>",
  4725. referencedClasses: [],
  4726. //>>excludeEnd("ide");
  4727. messageSends: []
  4728. }),
  4729. $globals.Number);
  4730. $core.addMethod(
  4731. $core.method({
  4732. selector: "asJSON",
  4733. protocol: 'converting',
  4734. fn: function (){
  4735. var self=this;
  4736. return self;
  4737. },
  4738. //>>excludeStart("ide", pragmas.excludeIdeData);
  4739. args: [],
  4740. source: "asJSON\x0a\x09^ self",
  4741. referencedClasses: [],
  4742. //>>excludeEnd("ide");
  4743. messageSends: []
  4744. }),
  4745. $globals.Number);
  4746. $core.addMethod(
  4747. $core.method({
  4748. selector: "asJavascript",
  4749. protocol: 'converting',
  4750. fn: function (){
  4751. var self=this;
  4752. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  4753. return $core.withContext(function($ctx1) {
  4754. //>>excludeEnd("ctx");
  4755. var $1;
  4756. $1=$recv("(".__comma(self._printString())).__comma(")");
  4757. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  4758. $ctx1.sendIdx[","]=1;
  4759. //>>excludeEnd("ctx");
  4760. return $1;
  4761. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  4762. }, function($ctx1) {$ctx1.fill(self,"asJavascript",{},$globals.Number)});
  4763. //>>excludeEnd("ctx");
  4764. },
  4765. //>>excludeStart("ide", pragmas.excludeIdeData);
  4766. args: [],
  4767. source: "asJavascript\x0a\x09^ '(', self printString, ')'",
  4768. referencedClasses: [],
  4769. //>>excludeEnd("ide");
  4770. messageSends: [",", "printString"]
  4771. }),
  4772. $globals.Number);
  4773. $core.addMethod(
  4774. $core.method({
  4775. selector: "asNumber",
  4776. protocol: 'converting',
  4777. fn: function (){
  4778. var self=this;
  4779. return self;
  4780. },
  4781. //>>excludeStart("ide", pragmas.excludeIdeData);
  4782. args: [],
  4783. source: "asNumber\x0a\x09^ self",
  4784. referencedClasses: [],
  4785. //>>excludeEnd("ide");
  4786. messageSends: []
  4787. }),
  4788. $globals.Number);
  4789. $core.addMethod(
  4790. $core.method({
  4791. selector: "asPoint",
  4792. protocol: 'converting',
  4793. fn: function (){
  4794. var self=this;
  4795. function $Point(){return $globals.Point||(typeof Point=="undefined"?nil:Point)}
  4796. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  4797. return $core.withContext(function($ctx1) {
  4798. //>>excludeEnd("ctx");
  4799. var $1;
  4800. $1=$recv($Point())._x_y_(self,self);
  4801. return $1;
  4802. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  4803. }, function($ctx1) {$ctx1.fill(self,"asPoint",{},$globals.Number)});
  4804. //>>excludeEnd("ctx");
  4805. },
  4806. //>>excludeStart("ide", pragmas.excludeIdeData);
  4807. args: [],
  4808. source: "asPoint\x0a\x09^ Point x: self y: self",
  4809. referencedClasses: ["Point"],
  4810. //>>excludeEnd("ide");
  4811. messageSends: ["x:y:"]
  4812. }),
  4813. $globals.Number);
  4814. $core.addMethod(
  4815. $core.method({
  4816. selector: "asString",
  4817. protocol: 'converting',
  4818. fn: function (){
  4819. var self=this;
  4820. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  4821. return $core.withContext(function($ctx1) {
  4822. //>>excludeEnd("ctx");
  4823. return String(self) ;
  4824. return self;
  4825. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  4826. }, function($ctx1) {$ctx1.fill(self,"asString",{},$globals.Number)});
  4827. //>>excludeEnd("ctx");
  4828. },
  4829. //>>excludeStart("ide", pragmas.excludeIdeData);
  4830. args: [],
  4831. source: "asString\x0a\x09< return String(self) >",
  4832. referencedClasses: [],
  4833. //>>excludeEnd("ide");
  4834. messageSends: []
  4835. }),
  4836. $globals.Number);
  4837. $core.addMethod(
  4838. $core.method({
  4839. selector: "atRandom",
  4840. protocol: 'converting',
  4841. fn: function (){
  4842. var self=this;
  4843. function $Random(){return $globals.Random||(typeof Random=="undefined"?nil:Random)}
  4844. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  4845. return $core.withContext(function($ctx1) {
  4846. //>>excludeEnd("ctx");
  4847. var $1;
  4848. $1=$recv($recv($recv($recv($recv($Random())._new())._next()).__star(self))._truncated()).__plus((1));
  4849. return $1;
  4850. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  4851. }, function($ctx1) {$ctx1.fill(self,"atRandom",{},$globals.Number)});
  4852. //>>excludeEnd("ctx");
  4853. },
  4854. //>>excludeStart("ide", pragmas.excludeIdeData);
  4855. args: [],
  4856. source: "atRandom\x0a\x09^ (Random new next * self) truncated + 1",
  4857. referencedClasses: ["Random"],
  4858. //>>excludeEnd("ide");
  4859. messageSends: ["+", "truncated", "*", "next", "new"]
  4860. }),
  4861. $globals.Number);
  4862. $core.addMethod(
  4863. $core.method({
  4864. selector: "ceiling",
  4865. protocol: 'converting',
  4866. fn: function (){
  4867. var self=this;
  4868. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  4869. return $core.withContext(function($ctx1) {
  4870. //>>excludeEnd("ctx");
  4871. return Math.ceil(self);;
  4872. return self;
  4873. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  4874. }, function($ctx1) {$ctx1.fill(self,"ceiling",{},$globals.Number)});
  4875. //>>excludeEnd("ctx");
  4876. },
  4877. //>>excludeStart("ide", pragmas.excludeIdeData);
  4878. args: [],
  4879. source: "ceiling\x0a\x09<return Math.ceil(self);>",
  4880. referencedClasses: [],
  4881. //>>excludeEnd("ide");
  4882. messageSends: []
  4883. }),
  4884. $globals.Number);
  4885. $core.addMethod(
  4886. $core.method({
  4887. selector: "copy",
  4888. protocol: 'copying',
  4889. fn: function (){
  4890. var self=this;
  4891. return self;
  4892. },
  4893. //>>excludeStart("ide", pragmas.excludeIdeData);
  4894. args: [],
  4895. source: "copy\x0a\x09^ self",
  4896. referencedClasses: [],
  4897. //>>excludeEnd("ide");
  4898. messageSends: []
  4899. }),
  4900. $globals.Number);
  4901. $core.addMethod(
  4902. $core.method({
  4903. selector: "cos",
  4904. protocol: 'mathematical functions',
  4905. fn: function (){
  4906. var self=this;
  4907. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  4908. return $core.withContext(function($ctx1) {
  4909. //>>excludeEnd("ctx");
  4910. return Math.cos(self);;
  4911. return self;
  4912. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  4913. }, function($ctx1) {$ctx1.fill(self,"cos",{},$globals.Number)});
  4914. //>>excludeEnd("ctx");
  4915. },
  4916. //>>excludeStart("ide", pragmas.excludeIdeData);
  4917. args: [],
  4918. source: "cos\x0a\x09<return Math.cos(self);>",
  4919. referencedClasses: [],
  4920. //>>excludeEnd("ide");
  4921. messageSends: []
  4922. }),
  4923. $globals.Number);
  4924. $core.addMethod(
  4925. $core.method({
  4926. selector: "deepCopy",
  4927. protocol: 'copying',
  4928. fn: function (){
  4929. var self=this;
  4930. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  4931. return $core.withContext(function($ctx1) {
  4932. //>>excludeEnd("ctx");
  4933. var $1;
  4934. $1=self._copy();
  4935. return $1;
  4936. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  4937. }, function($ctx1) {$ctx1.fill(self,"deepCopy",{},$globals.Number)});
  4938. //>>excludeEnd("ctx");
  4939. },
  4940. //>>excludeStart("ide", pragmas.excludeIdeData);
  4941. args: [],
  4942. source: "deepCopy\x0a\x09^ self copy",
  4943. referencedClasses: [],
  4944. //>>excludeEnd("ide");
  4945. messageSends: ["copy"]
  4946. }),
  4947. $globals.Number);
  4948. $core.addMethod(
  4949. $core.method({
  4950. selector: "even",
  4951. protocol: 'testing',
  4952. fn: function (){
  4953. var self=this;
  4954. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  4955. return $core.withContext(function($ctx1) {
  4956. //>>excludeEnd("ctx");
  4957. var $1;
  4958. $1=(0).__eq(self.__backslash_backslash((2)));
  4959. return $1;
  4960. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  4961. }, function($ctx1) {$ctx1.fill(self,"even",{},$globals.Number)});
  4962. //>>excludeEnd("ctx");
  4963. },
  4964. //>>excludeStart("ide", pragmas.excludeIdeData);
  4965. args: [],
  4966. source: "even\x0a\x09^ 0 = (self \x5c\x5c 2)",
  4967. referencedClasses: [],
  4968. //>>excludeEnd("ide");
  4969. messageSends: ["=", "\x5c\x5c"]
  4970. }),
  4971. $globals.Number);
  4972. $core.addMethod(
  4973. $core.method({
  4974. selector: "floor",
  4975. protocol: 'converting',
  4976. fn: function (){
  4977. var self=this;
  4978. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  4979. return $core.withContext(function($ctx1) {
  4980. //>>excludeEnd("ctx");
  4981. return Math.floor(self);;
  4982. return self;
  4983. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  4984. }, function($ctx1) {$ctx1.fill(self,"floor",{},$globals.Number)});
  4985. //>>excludeEnd("ctx");
  4986. },
  4987. //>>excludeStart("ide", pragmas.excludeIdeData);
  4988. args: [],
  4989. source: "floor\x0a\x09<return Math.floor(self);>",
  4990. referencedClasses: [],
  4991. //>>excludeEnd("ide");
  4992. messageSends: []
  4993. }),
  4994. $globals.Number);
  4995. $core.addMethod(
  4996. $core.method({
  4997. selector: "identityHash",
  4998. protocol: 'accessing',
  4999. fn: function (){
  5000. var self=this;
  5001. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5002. return $core.withContext(function($ctx1) {
  5003. //>>excludeEnd("ctx");
  5004. var $1;
  5005. $1=$recv(self._asString()).__comma("n");
  5006. return $1;
  5007. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5008. }, function($ctx1) {$ctx1.fill(self,"identityHash",{},$globals.Number)});
  5009. //>>excludeEnd("ctx");
  5010. },
  5011. //>>excludeStart("ide", pragmas.excludeIdeData);
  5012. args: [],
  5013. source: "identityHash\x0a\x09^ self asString, 'n'",
  5014. referencedClasses: [],
  5015. //>>excludeEnd("ide");
  5016. messageSends: [",", "asString"]
  5017. }),
  5018. $globals.Number);
  5019. $core.addMethod(
  5020. $core.method({
  5021. selector: "isImmutable",
  5022. protocol: 'testing',
  5023. fn: function (){
  5024. var self=this;
  5025. return true;
  5026. },
  5027. //>>excludeStart("ide", pragmas.excludeIdeData);
  5028. args: [],
  5029. source: "isImmutable\x0a\x09^ true",
  5030. referencedClasses: [],
  5031. //>>excludeEnd("ide");
  5032. messageSends: []
  5033. }),
  5034. $globals.Number);
  5035. $core.addMethod(
  5036. $core.method({
  5037. selector: "isNumber",
  5038. protocol: 'testing',
  5039. fn: function (){
  5040. var self=this;
  5041. return true;
  5042. },
  5043. //>>excludeStart("ide", pragmas.excludeIdeData);
  5044. args: [],
  5045. source: "isNumber\x0a\x09^ true",
  5046. referencedClasses: [],
  5047. //>>excludeEnd("ide");
  5048. messageSends: []
  5049. }),
  5050. $globals.Number);
  5051. $core.addMethod(
  5052. $core.method({
  5053. selector: "isZero",
  5054. protocol: 'testing',
  5055. fn: function (){
  5056. var self=this;
  5057. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5058. return $core.withContext(function($ctx1) {
  5059. //>>excludeEnd("ctx");
  5060. var $1;
  5061. $1=self.__eq((0));
  5062. return $1;
  5063. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5064. }, function($ctx1) {$ctx1.fill(self,"isZero",{},$globals.Number)});
  5065. //>>excludeEnd("ctx");
  5066. },
  5067. //>>excludeStart("ide", pragmas.excludeIdeData);
  5068. args: [],
  5069. source: "isZero\x0a\x09^ self = 0",
  5070. referencedClasses: [],
  5071. //>>excludeEnd("ide");
  5072. messageSends: ["="]
  5073. }),
  5074. $globals.Number);
  5075. $core.addMethod(
  5076. $core.method({
  5077. selector: "ln",
  5078. protocol: 'mathematical functions',
  5079. fn: function (){
  5080. var self=this;
  5081. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5082. return $core.withContext(function($ctx1) {
  5083. //>>excludeEnd("ctx");
  5084. return Math.log(self);;
  5085. return self;
  5086. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5087. }, function($ctx1) {$ctx1.fill(self,"ln",{},$globals.Number)});
  5088. //>>excludeEnd("ctx");
  5089. },
  5090. //>>excludeStart("ide", pragmas.excludeIdeData);
  5091. args: [],
  5092. source: "ln\x0a\x09<return Math.log(self);>",
  5093. referencedClasses: [],
  5094. //>>excludeEnd("ide");
  5095. messageSends: []
  5096. }),
  5097. $globals.Number);
  5098. $core.addMethod(
  5099. $core.method({
  5100. selector: "log",
  5101. protocol: 'mathematical functions',
  5102. fn: function (){
  5103. var self=this;
  5104. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5105. return $core.withContext(function($ctx1) {
  5106. //>>excludeEnd("ctx");
  5107. return Math.log(self) / Math.LN10;;
  5108. return self;
  5109. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5110. }, function($ctx1) {$ctx1.fill(self,"log",{},$globals.Number)});
  5111. //>>excludeEnd("ctx");
  5112. },
  5113. //>>excludeStart("ide", pragmas.excludeIdeData);
  5114. args: [],
  5115. source: "log\x0a\x09<return Math.log(self) / Math.LN10;>",
  5116. referencedClasses: [],
  5117. //>>excludeEnd("ide");
  5118. messageSends: []
  5119. }),
  5120. $globals.Number);
  5121. $core.addMethod(
  5122. $core.method({
  5123. selector: "log:",
  5124. protocol: 'mathematical functions',
  5125. fn: function (aNumber){
  5126. var self=this;
  5127. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5128. return $core.withContext(function($ctx1) {
  5129. //>>excludeEnd("ctx");
  5130. return Math.log(self) / Math.log(aNumber);;
  5131. return self;
  5132. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5133. }, function($ctx1) {$ctx1.fill(self,"log:",{aNumber:aNumber},$globals.Number)});
  5134. //>>excludeEnd("ctx");
  5135. },
  5136. //>>excludeStart("ide", pragmas.excludeIdeData);
  5137. args: ["aNumber"],
  5138. source: "log: aNumber\x0a\x09<return Math.log(self) / Math.log(aNumber);>",
  5139. referencedClasses: [],
  5140. //>>excludeEnd("ide");
  5141. messageSends: []
  5142. }),
  5143. $globals.Number);
  5144. $core.addMethod(
  5145. $core.method({
  5146. selector: "max:",
  5147. protocol: 'arithmetic',
  5148. fn: function (aNumber){
  5149. var self=this;
  5150. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5151. return $core.withContext(function($ctx1) {
  5152. //>>excludeEnd("ctx");
  5153. return Math.max(self, aNumber);;
  5154. return self;
  5155. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5156. }, function($ctx1) {$ctx1.fill(self,"max:",{aNumber:aNumber},$globals.Number)});
  5157. //>>excludeEnd("ctx");
  5158. },
  5159. //>>excludeStart("ide", pragmas.excludeIdeData);
  5160. args: ["aNumber"],
  5161. source: "max: aNumber\x0a\x09<return Math.max(self, aNumber);>",
  5162. referencedClasses: [],
  5163. //>>excludeEnd("ide");
  5164. messageSends: []
  5165. }),
  5166. $globals.Number);
  5167. $core.addMethod(
  5168. $core.method({
  5169. selector: "min:",
  5170. protocol: 'arithmetic',
  5171. fn: function (aNumber){
  5172. var self=this;
  5173. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5174. return $core.withContext(function($ctx1) {
  5175. //>>excludeEnd("ctx");
  5176. return Math.min(self, aNumber);;
  5177. return self;
  5178. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5179. }, function($ctx1) {$ctx1.fill(self,"min:",{aNumber:aNumber},$globals.Number)});
  5180. //>>excludeEnd("ctx");
  5181. },
  5182. //>>excludeStart("ide", pragmas.excludeIdeData);
  5183. args: ["aNumber"],
  5184. source: "min: aNumber\x0a\x09<return Math.min(self, aNumber);>",
  5185. referencedClasses: [],
  5186. //>>excludeEnd("ide");
  5187. messageSends: []
  5188. }),
  5189. $globals.Number);
  5190. $core.addMethod(
  5191. $core.method({
  5192. selector: "negated",
  5193. protocol: 'arithmetic',
  5194. fn: function (){
  5195. var self=this;
  5196. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5197. return $core.withContext(function($ctx1) {
  5198. //>>excludeEnd("ctx");
  5199. var $1;
  5200. $1=(0).__minus(self);
  5201. return $1;
  5202. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5203. }, function($ctx1) {$ctx1.fill(self,"negated",{},$globals.Number)});
  5204. //>>excludeEnd("ctx");
  5205. },
  5206. //>>excludeStart("ide", pragmas.excludeIdeData);
  5207. args: [],
  5208. source: "negated\x0a\x09^ 0 - self",
  5209. referencedClasses: [],
  5210. //>>excludeEnd("ide");
  5211. messageSends: ["-"]
  5212. }),
  5213. $globals.Number);
  5214. $core.addMethod(
  5215. $core.method({
  5216. selector: "negative",
  5217. protocol: 'testing',
  5218. fn: function (){
  5219. var self=this;
  5220. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5221. return $core.withContext(function($ctx1) {
  5222. //>>excludeEnd("ctx");
  5223. var $1;
  5224. $1=self.__lt((0));
  5225. return $1;
  5226. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5227. }, function($ctx1) {$ctx1.fill(self,"negative",{},$globals.Number)});
  5228. //>>excludeEnd("ctx");
  5229. },
  5230. //>>excludeStart("ide", pragmas.excludeIdeData);
  5231. args: [],
  5232. source: "negative\x0a\x09\x22Answer whether the receiver is mathematically negative.\x22\x0a\x0a\x09^ self < 0",
  5233. referencedClasses: [],
  5234. //>>excludeEnd("ide");
  5235. messageSends: ["<"]
  5236. }),
  5237. $globals.Number);
  5238. $core.addMethod(
  5239. $core.method({
  5240. selector: "odd",
  5241. protocol: 'testing',
  5242. fn: function (){
  5243. var self=this;
  5244. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5245. return $core.withContext(function($ctx1) {
  5246. //>>excludeEnd("ctx");
  5247. var $1;
  5248. $1=$recv(self._even())._not();
  5249. return $1;
  5250. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5251. }, function($ctx1) {$ctx1.fill(self,"odd",{},$globals.Number)});
  5252. //>>excludeEnd("ctx");
  5253. },
  5254. //>>excludeStart("ide", pragmas.excludeIdeData);
  5255. args: [],
  5256. source: "odd\x0a\x09^ self even not",
  5257. referencedClasses: [],
  5258. //>>excludeEnd("ide");
  5259. messageSends: ["not", "even"]
  5260. }),
  5261. $globals.Number);
  5262. $core.addMethod(
  5263. $core.method({
  5264. selector: "positive",
  5265. protocol: 'testing',
  5266. fn: function (){
  5267. var self=this;
  5268. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5269. return $core.withContext(function($ctx1) {
  5270. //>>excludeEnd("ctx");
  5271. var $1;
  5272. $1=self.__gt_eq((0));
  5273. return $1;
  5274. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5275. }, function($ctx1) {$ctx1.fill(self,"positive",{},$globals.Number)});
  5276. //>>excludeEnd("ctx");
  5277. },
  5278. //>>excludeStart("ide", pragmas.excludeIdeData);
  5279. args: [],
  5280. source: "positive\x0a\x09\x22Answer whether the receiver is positive or equal to 0. (ST-80 protocol).\x22\x0a\x0a\x09^ self >= 0",
  5281. referencedClasses: [],
  5282. //>>excludeEnd("ide");
  5283. messageSends: [">="]
  5284. }),
  5285. $globals.Number);
  5286. $core.addMethod(
  5287. $core.method({
  5288. selector: "printOn:",
  5289. protocol: 'printing',
  5290. fn: function (aStream){
  5291. var self=this;
  5292. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5293. return $core.withContext(function($ctx1) {
  5294. //>>excludeEnd("ctx");
  5295. $recv(aStream)._nextPutAll_(self._asString());
  5296. return self;
  5297. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5298. }, function($ctx1) {$ctx1.fill(self,"printOn:",{aStream:aStream},$globals.Number)});
  5299. //>>excludeEnd("ctx");
  5300. },
  5301. //>>excludeStart("ide", pragmas.excludeIdeData);
  5302. args: ["aStream"],
  5303. source: "printOn: aStream\x0a\x09aStream nextPutAll: self asString",
  5304. referencedClasses: [],
  5305. //>>excludeEnd("ide");
  5306. messageSends: ["nextPutAll:", "asString"]
  5307. }),
  5308. $globals.Number);
  5309. $core.addMethod(
  5310. $core.method({
  5311. selector: "printShowingDecimalPlaces:",
  5312. protocol: 'printing',
  5313. fn: function (placesDesired){
  5314. var self=this;
  5315. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5316. return $core.withContext(function($ctx1) {
  5317. //>>excludeEnd("ctx");
  5318. return self.toFixed(placesDesired);
  5319. return self;
  5320. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5321. }, function($ctx1) {$ctx1.fill(self,"printShowingDecimalPlaces:",{placesDesired:placesDesired},$globals.Number)});
  5322. //>>excludeEnd("ctx");
  5323. },
  5324. //>>excludeStart("ide", pragmas.excludeIdeData);
  5325. args: ["placesDesired"],
  5326. source: "printShowingDecimalPlaces: placesDesired\x0a\x09<return self.toFixed(placesDesired)>",
  5327. referencedClasses: [],
  5328. //>>excludeEnd("ide");
  5329. messageSends: []
  5330. }),
  5331. $globals.Number);
  5332. $core.addMethod(
  5333. $core.method({
  5334. selector: "raisedTo:",
  5335. protocol: 'mathematical functions',
  5336. fn: function (exponent){
  5337. var self=this;
  5338. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5339. return $core.withContext(function($ctx1) {
  5340. //>>excludeEnd("ctx");
  5341. return Math.pow(self, exponent);;
  5342. return self;
  5343. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5344. }, function($ctx1) {$ctx1.fill(self,"raisedTo:",{exponent:exponent},$globals.Number)});
  5345. //>>excludeEnd("ctx");
  5346. },
  5347. //>>excludeStart("ide", pragmas.excludeIdeData);
  5348. args: ["exponent"],
  5349. source: "raisedTo: exponent\x0a\x09<return Math.pow(self, exponent);>",
  5350. referencedClasses: [],
  5351. //>>excludeEnd("ide");
  5352. messageSends: []
  5353. }),
  5354. $globals.Number);
  5355. $core.addMethod(
  5356. $core.method({
  5357. selector: "rounded",
  5358. protocol: 'converting',
  5359. fn: function (){
  5360. var self=this;
  5361. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5362. return $core.withContext(function($ctx1) {
  5363. //>>excludeEnd("ctx");
  5364. return Math.round(self);;
  5365. return self;
  5366. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5367. }, function($ctx1) {$ctx1.fill(self,"rounded",{},$globals.Number)});
  5368. //>>excludeEnd("ctx");
  5369. },
  5370. //>>excludeStart("ide", pragmas.excludeIdeData);
  5371. args: [],
  5372. source: "rounded\x0a\x09<return Math.round(self);>",
  5373. referencedClasses: [],
  5374. //>>excludeEnd("ide");
  5375. messageSends: []
  5376. }),
  5377. $globals.Number);
  5378. $core.addMethod(
  5379. $core.method({
  5380. selector: "sign",
  5381. protocol: 'mathematical functions',
  5382. fn: function (){
  5383. var self=this;
  5384. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5385. return $core.withContext(function($ctx1) {
  5386. //>>excludeEnd("ctx");
  5387. var $1,$2;
  5388. $1=self._isZero();
  5389. if($core.assert($1)){
  5390. return (0);
  5391. };
  5392. $2=self._positive();
  5393. if($core.assert($2)){
  5394. return (1);
  5395. } else {
  5396. return (-1);
  5397. };
  5398. return self;
  5399. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5400. }, function($ctx1) {$ctx1.fill(self,"sign",{},$globals.Number)});
  5401. //>>excludeEnd("ctx");
  5402. },
  5403. //>>excludeStart("ide", pragmas.excludeIdeData);
  5404. args: [],
  5405. source: "sign\x0a\x09self isZero \x0a\x09\x09ifTrue: [ ^ 0 ].\x0a\x09self positive\x0a\x09\x09ifTrue: [ ^ 1 ]\x0a\x09\x09ifFalse: [ ^ -1 ].",
  5406. referencedClasses: [],
  5407. //>>excludeEnd("ide");
  5408. messageSends: ["ifTrue:", "isZero", "ifTrue:ifFalse:", "positive"]
  5409. }),
  5410. $globals.Number);
  5411. $core.addMethod(
  5412. $core.method({
  5413. selector: "sin",
  5414. protocol: 'mathematical functions',
  5415. fn: function (){
  5416. var self=this;
  5417. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5418. return $core.withContext(function($ctx1) {
  5419. //>>excludeEnd("ctx");
  5420. return Math.sin(self);;
  5421. return self;
  5422. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5423. }, function($ctx1) {$ctx1.fill(self,"sin",{},$globals.Number)});
  5424. //>>excludeEnd("ctx");
  5425. },
  5426. //>>excludeStart("ide", pragmas.excludeIdeData);
  5427. args: [],
  5428. source: "sin\x0a\x09<return Math.sin(self);>",
  5429. referencedClasses: [],
  5430. //>>excludeEnd("ide");
  5431. messageSends: []
  5432. }),
  5433. $globals.Number);
  5434. $core.addMethod(
  5435. $core.method({
  5436. selector: "sqrt",
  5437. protocol: 'mathematical functions',
  5438. fn: function (){
  5439. var self=this;
  5440. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5441. return $core.withContext(function($ctx1) {
  5442. //>>excludeEnd("ctx");
  5443. return Math.sqrt(self);
  5444. return self;
  5445. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5446. }, function($ctx1) {$ctx1.fill(self,"sqrt",{},$globals.Number)});
  5447. //>>excludeEnd("ctx");
  5448. },
  5449. //>>excludeStart("ide", pragmas.excludeIdeData);
  5450. args: [],
  5451. source: "sqrt\x0a\x09<return Math.sqrt(self)>",
  5452. referencedClasses: [],
  5453. //>>excludeEnd("ide");
  5454. messageSends: []
  5455. }),
  5456. $globals.Number);
  5457. $core.addMethod(
  5458. $core.method({
  5459. selector: "squared",
  5460. protocol: 'mathematical functions',
  5461. fn: function (){
  5462. var self=this;
  5463. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5464. return $core.withContext(function($ctx1) {
  5465. //>>excludeEnd("ctx");
  5466. var $1;
  5467. $1=self.__star(self);
  5468. return $1;
  5469. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5470. }, function($ctx1) {$ctx1.fill(self,"squared",{},$globals.Number)});
  5471. //>>excludeEnd("ctx");
  5472. },
  5473. //>>excludeStart("ide", pragmas.excludeIdeData);
  5474. args: [],
  5475. source: "squared\x0a\x09^ self * self",
  5476. referencedClasses: [],
  5477. //>>excludeEnd("ide");
  5478. messageSends: ["*"]
  5479. }),
  5480. $globals.Number);
  5481. $core.addMethod(
  5482. $core.method({
  5483. selector: "tan",
  5484. protocol: 'mathematical functions',
  5485. fn: function (){
  5486. var self=this;
  5487. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5488. return $core.withContext(function($ctx1) {
  5489. //>>excludeEnd("ctx");
  5490. return Math.tan(self);;
  5491. return self;
  5492. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5493. }, function($ctx1) {$ctx1.fill(self,"tan",{},$globals.Number)});
  5494. //>>excludeEnd("ctx");
  5495. },
  5496. //>>excludeStart("ide", pragmas.excludeIdeData);
  5497. args: [],
  5498. source: "tan\x0a\x09<return Math.tan(self);>",
  5499. referencedClasses: [],
  5500. //>>excludeEnd("ide");
  5501. messageSends: []
  5502. }),
  5503. $globals.Number);
  5504. $core.addMethod(
  5505. $core.method({
  5506. selector: "timesRepeat:",
  5507. protocol: 'enumerating',
  5508. fn: function (aBlock){
  5509. var self=this;
  5510. var count;
  5511. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5512. return $core.withContext(function($ctx1) {
  5513. //>>excludeEnd("ctx");
  5514. count=(1);
  5515. $recv((function(){
  5516. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5517. return $core.withContext(function($ctx2) {
  5518. //>>excludeEnd("ctx");
  5519. return $recv(count).__gt(self);
  5520. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5521. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  5522. //>>excludeEnd("ctx");
  5523. }))._whileFalse_((function(){
  5524. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5525. return $core.withContext(function($ctx2) {
  5526. //>>excludeEnd("ctx");
  5527. $recv(aBlock)._value();
  5528. count=$recv(count).__plus((1));
  5529. return count;
  5530. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5531. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
  5532. //>>excludeEnd("ctx");
  5533. }));
  5534. return self;
  5535. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5536. }, function($ctx1) {$ctx1.fill(self,"timesRepeat:",{aBlock:aBlock,count:count},$globals.Number)});
  5537. //>>excludeEnd("ctx");
  5538. },
  5539. //>>excludeStart("ide", pragmas.excludeIdeData);
  5540. args: ["aBlock"],
  5541. source: "timesRepeat: aBlock\x0a\x09| count |\x0a\x09count := 1.\x0a\x09[ count > self ] whileFalse: [\x0a\x09\x09aBlock value.\x0a\x09\x09count := count + 1 ]",
  5542. referencedClasses: [],
  5543. //>>excludeEnd("ide");
  5544. messageSends: ["whileFalse:", ">", "value", "+"]
  5545. }),
  5546. $globals.Number);
  5547. $core.addMethod(
  5548. $core.method({
  5549. selector: "to:",
  5550. protocol: 'converting',
  5551. fn: function (aNumber){
  5552. var self=this;
  5553. var array,first,last,count;
  5554. function $Array(){return $globals.Array||(typeof Array=="undefined"?nil:Array)}
  5555. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5556. return $core.withContext(function($ctx1) {
  5557. //>>excludeEnd("ctx");
  5558. var $1;
  5559. first=self._truncated();
  5560. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5561. $ctx1.sendIdx["truncated"]=1;
  5562. //>>excludeEnd("ctx");
  5563. last=$recv($recv(aNumber)._truncated()).__plus((1));
  5564. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5565. $ctx1.sendIdx["+"]=1;
  5566. //>>excludeEnd("ctx");
  5567. count=(1);
  5568. array=$recv($Array())._new();
  5569. $recv($recv(last).__minus(first))._timesRepeat_((function(){
  5570. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5571. return $core.withContext(function($ctx2) {
  5572. //>>excludeEnd("ctx");
  5573. $recv(array)._at_put_(count,first);
  5574. count=$recv(count).__plus((1));
  5575. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5576. $ctx2.sendIdx["+"]=2;
  5577. //>>excludeEnd("ctx");
  5578. count;
  5579. first=$recv(first).__plus((1));
  5580. return first;
  5581. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5582. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  5583. //>>excludeEnd("ctx");
  5584. }));
  5585. $1=array;
  5586. return $1;
  5587. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5588. }, function($ctx1) {$ctx1.fill(self,"to:",{aNumber:aNumber,array:array,first:first,last:last,count:count},$globals.Number)});
  5589. //>>excludeEnd("ctx");
  5590. },
  5591. //>>excludeStart("ide", pragmas.excludeIdeData);
  5592. args: ["aNumber"],
  5593. 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",
  5594. referencedClasses: ["Array"],
  5595. //>>excludeEnd("ide");
  5596. messageSends: ["truncated", "+", "new", "timesRepeat:", "-", "at:put:"]
  5597. }),
  5598. $globals.Number);
  5599. $core.addMethod(
  5600. $core.method({
  5601. selector: "to:by:",
  5602. protocol: 'converting',
  5603. fn: function (stop,step){
  5604. var self=this;
  5605. var array,value,pos;
  5606. function $Array(){return $globals.Array||(typeof Array=="undefined"?nil:Array)}
  5607. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5608. return $core.withContext(function($ctx1) {
  5609. //>>excludeEnd("ctx");
  5610. var $1,$2,$3;
  5611. value=self;
  5612. array=$recv($Array())._new();
  5613. pos=(1);
  5614. $1=$recv(step).__eq((0));
  5615. if($core.assert($1)){
  5616. self._error_("step must be non-zero");
  5617. };
  5618. $2=$recv(step).__lt((0));
  5619. if($core.assert($2)){
  5620. $recv((function(){
  5621. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5622. return $core.withContext(function($ctx2) {
  5623. //>>excludeEnd("ctx");
  5624. return $recv(value).__gt_eq(stop);
  5625. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5626. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,3)});
  5627. //>>excludeEnd("ctx");
  5628. }))._whileTrue_((function(){
  5629. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5630. return $core.withContext(function($ctx2) {
  5631. //>>excludeEnd("ctx");
  5632. $recv(array)._at_put_(pos,value);
  5633. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5634. $ctx2.sendIdx["at:put:"]=1;
  5635. //>>excludeEnd("ctx");
  5636. pos=$recv(pos).__plus((1));
  5637. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5638. $ctx2.sendIdx["+"]=1;
  5639. //>>excludeEnd("ctx");
  5640. pos;
  5641. value=$recv(value).__plus(step);
  5642. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5643. $ctx2.sendIdx["+"]=2;
  5644. //>>excludeEnd("ctx");
  5645. return value;
  5646. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5647. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,4)});
  5648. //>>excludeEnd("ctx");
  5649. }));
  5650. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5651. $ctx1.sendIdx["whileTrue:"]=1;
  5652. //>>excludeEnd("ctx");
  5653. } else {
  5654. $recv((function(){
  5655. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5656. return $core.withContext(function($ctx2) {
  5657. //>>excludeEnd("ctx");
  5658. return $recv(value).__lt_eq(stop);
  5659. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5660. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,6)});
  5661. //>>excludeEnd("ctx");
  5662. }))._whileTrue_((function(){
  5663. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5664. return $core.withContext(function($ctx2) {
  5665. //>>excludeEnd("ctx");
  5666. $recv(array)._at_put_(pos,value);
  5667. pos=$recv(pos).__plus((1));
  5668. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5669. $ctx2.sendIdx["+"]=3;
  5670. //>>excludeEnd("ctx");
  5671. pos;
  5672. value=$recv(value).__plus(step);
  5673. return value;
  5674. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5675. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,7)});
  5676. //>>excludeEnd("ctx");
  5677. }));
  5678. };
  5679. $3=array;
  5680. return $3;
  5681. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5682. }, function($ctx1) {$ctx1.fill(self,"to:by:",{stop:stop,step:step,array:array,value:value,pos:pos},$globals.Number)});
  5683. //>>excludeEnd("ctx");
  5684. },
  5685. //>>excludeStart("ide", pragmas.excludeIdeData);
  5686. args: ["stop", "step"],
  5687. 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",
  5688. referencedClasses: ["Array"],
  5689. //>>excludeEnd("ide");
  5690. messageSends: ["new", "ifTrue:", "=", "error:", "ifTrue:ifFalse:", "<", "whileTrue:", ">=", "at:put:", "+", "<="]
  5691. }),
  5692. $globals.Number);
  5693. $core.addMethod(
  5694. $core.method({
  5695. selector: "to:by:do:",
  5696. protocol: 'enumerating',
  5697. fn: function (stop,step,aBlock){
  5698. var self=this;
  5699. var value;
  5700. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5701. return $core.withContext(function($ctx1) {
  5702. //>>excludeEnd("ctx");
  5703. var $1,$2;
  5704. value=self;
  5705. $1=$recv(step).__eq((0));
  5706. if($core.assert($1)){
  5707. self._error_("step must be non-zero");
  5708. };
  5709. $2=$recv(step).__lt((0));
  5710. if($core.assert($2)){
  5711. $recv((function(){
  5712. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5713. return $core.withContext(function($ctx2) {
  5714. //>>excludeEnd("ctx");
  5715. return $recv(value).__gt_eq(stop);
  5716. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5717. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,3)});
  5718. //>>excludeEnd("ctx");
  5719. }))._whileTrue_((function(){
  5720. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5721. return $core.withContext(function($ctx2) {
  5722. //>>excludeEnd("ctx");
  5723. $recv(aBlock)._value_(value);
  5724. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5725. $ctx2.sendIdx["value:"]=1;
  5726. //>>excludeEnd("ctx");
  5727. value=$recv(value).__plus(step);
  5728. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5729. $ctx2.sendIdx["+"]=1;
  5730. //>>excludeEnd("ctx");
  5731. return value;
  5732. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5733. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,4)});
  5734. //>>excludeEnd("ctx");
  5735. }));
  5736. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5737. $ctx1.sendIdx["whileTrue:"]=1;
  5738. //>>excludeEnd("ctx");
  5739. } else {
  5740. $recv((function(){
  5741. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5742. return $core.withContext(function($ctx2) {
  5743. //>>excludeEnd("ctx");
  5744. return $recv(value).__lt_eq(stop);
  5745. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5746. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,6)});
  5747. //>>excludeEnd("ctx");
  5748. }))._whileTrue_((function(){
  5749. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5750. return $core.withContext(function($ctx2) {
  5751. //>>excludeEnd("ctx");
  5752. $recv(aBlock)._value_(value);
  5753. value=$recv(value).__plus(step);
  5754. return value;
  5755. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5756. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,7)});
  5757. //>>excludeEnd("ctx");
  5758. }));
  5759. };
  5760. return self;
  5761. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5762. }, function($ctx1) {$ctx1.fill(self,"to:by:do:",{stop:stop,step:step,aBlock:aBlock,value:value},$globals.Number)});
  5763. //>>excludeEnd("ctx");
  5764. },
  5765. //>>excludeStart("ide", pragmas.excludeIdeData);
  5766. args: ["stop", "step", "aBlock"],
  5767. 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 ]]",
  5768. referencedClasses: [],
  5769. //>>excludeEnd("ide");
  5770. messageSends: ["ifTrue:", "=", "error:", "ifTrue:ifFalse:", "<", "whileTrue:", ">=", "value:", "+", "<="]
  5771. }),
  5772. $globals.Number);
  5773. $core.addMethod(
  5774. $core.method({
  5775. selector: "to:do:",
  5776. protocol: 'enumerating',
  5777. fn: function (stop,aBlock){
  5778. var self=this;
  5779. var nextValue;
  5780. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5781. return $core.withContext(function($ctx1) {
  5782. //>>excludeEnd("ctx");
  5783. nextValue=self;
  5784. $recv((function(){
  5785. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5786. return $core.withContext(function($ctx2) {
  5787. //>>excludeEnd("ctx");
  5788. return $recv(nextValue).__lt_eq(stop);
  5789. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5790. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  5791. //>>excludeEnd("ctx");
  5792. }))._whileTrue_((function(){
  5793. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5794. return $core.withContext(function($ctx2) {
  5795. //>>excludeEnd("ctx");
  5796. $recv(aBlock)._value_(nextValue);
  5797. nextValue=$recv(nextValue).__plus((1));
  5798. return nextValue;
  5799. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5800. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
  5801. //>>excludeEnd("ctx");
  5802. }));
  5803. return self;
  5804. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5805. }, function($ctx1) {$ctx1.fill(self,"to:do:",{stop:stop,aBlock:aBlock,nextValue:nextValue},$globals.Number)});
  5806. //>>excludeEnd("ctx");
  5807. },
  5808. //>>excludeStart("ide", pragmas.excludeIdeData);
  5809. args: ["stop", "aBlock"],
  5810. 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 ]",
  5811. referencedClasses: [],
  5812. //>>excludeEnd("ide");
  5813. messageSends: ["whileTrue:", "<=", "value:", "+"]
  5814. }),
  5815. $globals.Number);
  5816. $core.addMethod(
  5817. $core.method({
  5818. selector: "truncated",
  5819. protocol: 'converting',
  5820. fn: function (){
  5821. var self=this;
  5822. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5823. return $core.withContext(function($ctx1) {
  5824. //>>excludeEnd("ctx");
  5825. if(self >= 0) {
  5826. return Math.floor(self);
  5827. } else {
  5828. return Math.floor(self * (-1)) * (-1);
  5829. };
  5830. ;
  5831. return self;
  5832. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5833. }, function($ctx1) {$ctx1.fill(self,"truncated",{},$globals.Number)});
  5834. //>>excludeEnd("ctx");
  5835. },
  5836. //>>excludeStart("ide", pragmas.excludeIdeData);
  5837. args: [],
  5838. source: "truncated\x0a\x09<\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>",
  5839. referencedClasses: [],
  5840. //>>excludeEnd("ide");
  5841. messageSends: []
  5842. }),
  5843. $globals.Number);
  5844. $core.addMethod(
  5845. $core.method({
  5846. selector: "|",
  5847. protocol: 'converting',
  5848. fn: function (aNumber){
  5849. var self=this;
  5850. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5851. return $core.withContext(function($ctx1) {
  5852. //>>excludeEnd("ctx");
  5853. return self | aNumber;
  5854. return self;
  5855. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5856. }, function($ctx1) {$ctx1.fill(self,"|",{aNumber:aNumber},$globals.Number)});
  5857. //>>excludeEnd("ctx");
  5858. },
  5859. //>>excludeStart("ide", pragmas.excludeIdeData);
  5860. args: ["aNumber"],
  5861. source: "| aNumber\x0a\x09<return self | aNumber>",
  5862. referencedClasses: [],
  5863. //>>excludeEnd("ide");
  5864. messageSends: []
  5865. }),
  5866. $globals.Number);
  5867. $core.addMethod(
  5868. $core.method({
  5869. selector: "e",
  5870. protocol: 'instance creation',
  5871. fn: function (){
  5872. var self=this;
  5873. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5874. return $core.withContext(function($ctx1) {
  5875. //>>excludeEnd("ctx");
  5876. return Math.E;;
  5877. return self;
  5878. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5879. }, function($ctx1) {$ctx1.fill(self,"e",{},$globals.Number.klass)});
  5880. //>>excludeEnd("ctx");
  5881. },
  5882. //>>excludeStart("ide", pragmas.excludeIdeData);
  5883. args: [],
  5884. source: "e\x0a\x09<return Math.E;>",
  5885. referencedClasses: [],
  5886. //>>excludeEnd("ide");
  5887. messageSends: []
  5888. }),
  5889. $globals.Number.klass);
  5890. $core.addMethod(
  5891. $core.method({
  5892. selector: "heliosClass",
  5893. protocol: 'helios',
  5894. fn: function (){
  5895. var self=this;
  5896. return "magnitude";
  5897. },
  5898. //>>excludeStart("ide", pragmas.excludeIdeData);
  5899. args: [],
  5900. source: "heliosClass\x0a\x09^ 'magnitude'",
  5901. referencedClasses: [],
  5902. //>>excludeEnd("ide");
  5903. messageSends: []
  5904. }),
  5905. $globals.Number.klass);
  5906. $core.addMethod(
  5907. $core.method({
  5908. selector: "pi",
  5909. protocol: 'instance creation',
  5910. fn: function (){
  5911. var self=this;
  5912. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5913. return $core.withContext(function($ctx1) {
  5914. //>>excludeEnd("ctx");
  5915. return Math.PI;
  5916. return self;
  5917. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5918. }, function($ctx1) {$ctx1.fill(self,"pi",{},$globals.Number.klass)});
  5919. //>>excludeEnd("ctx");
  5920. },
  5921. //>>excludeStart("ide", pragmas.excludeIdeData);
  5922. args: [],
  5923. source: "pi\x0a\x09<return Math.PI>",
  5924. referencedClasses: [],
  5925. //>>excludeEnd("ide");
  5926. messageSends: []
  5927. }),
  5928. $globals.Number.klass);
  5929. $core.addClass('Point', $globals.Object, ['x', 'y'], 'Kernel-Objects');
  5930. //>>excludeStart("ide", pragmas.excludeIdeData);
  5931. $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";
  5932. //>>excludeEnd("ide");
  5933. $core.addMethod(
  5934. $core.method({
  5935. selector: "*",
  5936. protocol: 'arithmetic',
  5937. fn: function (aPoint){
  5938. var self=this;
  5939. function $Point(){return $globals.Point||(typeof Point=="undefined"?nil:Point)}
  5940. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5941. return $core.withContext(function($ctx1) {
  5942. //>>excludeEnd("ctx");
  5943. var $3,$5,$4,$2,$7,$6,$1;
  5944. $3=self._x();
  5945. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5946. $ctx1.sendIdx["x"]=1;
  5947. //>>excludeEnd("ctx");
  5948. $5=$recv(aPoint)._asPoint();
  5949. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5950. $ctx1.sendIdx["asPoint"]=1;
  5951. //>>excludeEnd("ctx");
  5952. $4=$recv($5)._x();
  5953. $2=$recv($3).__star($4);
  5954. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5955. $ctx1.sendIdx["*"]=1;
  5956. //>>excludeEnd("ctx");
  5957. $7=self._y();
  5958. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5959. $ctx1.sendIdx["y"]=1;
  5960. //>>excludeEnd("ctx");
  5961. $6=$recv($7).__star($recv($recv(aPoint)._asPoint())._y());
  5962. $1=$recv($Point())._x_y_($2,$6);
  5963. return $1;
  5964. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5965. }, function($ctx1) {$ctx1.fill(self,"*",{aPoint:aPoint},$globals.Point)});
  5966. //>>excludeEnd("ctx");
  5967. },
  5968. //>>excludeStart("ide", pragmas.excludeIdeData);
  5969. args: ["aPoint"],
  5970. source: "* aPoint\x0a\x09^ Point x: self x * aPoint asPoint x y: self y * aPoint asPoint y",
  5971. referencedClasses: ["Point"],
  5972. //>>excludeEnd("ide");
  5973. messageSends: ["x:y:", "*", "x", "asPoint", "y"]
  5974. }),
  5975. $globals.Point);
  5976. $core.addMethod(
  5977. $core.method({
  5978. selector: "+",
  5979. protocol: 'arithmetic',
  5980. fn: function (aPoint){
  5981. var self=this;
  5982. function $Point(){return $globals.Point||(typeof Point=="undefined"?nil:Point)}
  5983. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5984. return $core.withContext(function($ctx1) {
  5985. //>>excludeEnd("ctx");
  5986. var $3,$5,$4,$2,$7,$6,$1;
  5987. $3=self._x();
  5988. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5989. $ctx1.sendIdx["x"]=1;
  5990. //>>excludeEnd("ctx");
  5991. $5=$recv(aPoint)._asPoint();
  5992. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5993. $ctx1.sendIdx["asPoint"]=1;
  5994. //>>excludeEnd("ctx");
  5995. $4=$recv($5)._x();
  5996. $2=$recv($3).__plus($4);
  5997. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  5998. $ctx1.sendIdx["+"]=1;
  5999. //>>excludeEnd("ctx");
  6000. $7=self._y();
  6001. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  6002. $ctx1.sendIdx["y"]=1;
  6003. //>>excludeEnd("ctx");
  6004. $6=$recv($7).__plus($recv($recv(aPoint)._asPoint())._y());
  6005. $1=$recv($Point())._x_y_($2,$6);
  6006. return $1;
  6007. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  6008. }, function($ctx1) {$ctx1.fill(self,"+",{aPoint:aPoint},$globals.Point)});
  6009. //>>excludeEnd("ctx");
  6010. },
  6011. //>>excludeStart("ide", pragmas.excludeIdeData);
  6012. args: ["aPoint"],
  6013. source: "+ aPoint\x0a\x09^ Point x: self x + aPoint asPoint x y: self y + aPoint asPoint y",
  6014. referencedClasses: ["Point"],
  6015. //>>excludeEnd("ide");
  6016. messageSends: ["x:y:", "+", "x", "asPoint", "y"]
  6017. }),
  6018. $globals.Point);
  6019. $core.addMethod(
  6020. $core.method({
  6021. selector: "-",
  6022. protocol: 'arithmetic',
  6023. fn: function (aPoint){
  6024. var self=this;
  6025. function $Point(){return $globals.Point||(typeof Point=="undefined"?nil:Point)}
  6026. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  6027. return $core.withContext(function($ctx1) {
  6028. //>>excludeEnd("ctx");
  6029. var $3,$5,$4,$2,$7,$6,$1;
  6030. $3=self._x();
  6031. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  6032. $ctx1.sendIdx["x"]=1;
  6033. //>>excludeEnd("ctx");
  6034. $5=$recv(aPoint)._asPoint();
  6035. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  6036. $ctx1.sendIdx["asPoint"]=1;
  6037. //>>excludeEnd("ctx");
  6038. $4=$recv($5)._x();
  6039. $2=$recv($3).__minus($4);
  6040. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  6041. $ctx1.sendIdx["-"]=1;
  6042. //>>excludeEnd("ctx");
  6043. $7=self._y();
  6044. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  6045. $ctx1.sendIdx["y"]=1;
  6046. //>>excludeEnd("ctx");
  6047. $6=$recv($7).__minus($recv($recv(aPoint)._asPoint())._y());
  6048. $1=$recv($Point())._x_y_($2,$6);
  6049. return $1;
  6050. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  6051. }, function($ctx1) {$ctx1.fill(self,"-",{aPoint:aPoint},$globals.Point)});
  6052. //>>excludeEnd("ctx");
  6053. },
  6054. //>>excludeStart("ide", pragmas.excludeIdeData);
  6055. args: ["aPoint"],
  6056. source: "- aPoint\x0a\x09^ Point x: self x - aPoint asPoint x y: self y - aPoint asPoint y",
  6057. referencedClasses: ["Point"],
  6058. //>>excludeEnd("ide");
  6059. messageSends: ["x:y:", "-", "x", "asPoint", "y"]
  6060. }),
  6061. $globals.Point);
  6062. $core.addMethod(
  6063. $core.method({
  6064. selector: "/",
  6065. protocol: 'arithmetic',
  6066. fn: function (aPoint){
  6067. var self=this;
  6068. function $Point(){return $globals.Point||(typeof Point=="undefined"?nil:Point)}
  6069. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  6070. return $core.withContext(function($ctx1) {
  6071. //>>excludeEnd("ctx");
  6072. var $3,$5,$4,$2,$7,$6,$1;
  6073. $3=self._x();
  6074. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  6075. $ctx1.sendIdx["x"]=1;
  6076. //>>excludeEnd("ctx");
  6077. $5=$recv(aPoint)._asPoint();
  6078. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  6079. $ctx1.sendIdx["asPoint"]=1;
  6080. //>>excludeEnd("ctx");
  6081. $4=$recv($5)._x();
  6082. $2=$recv($3).__slash($4);
  6083. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  6084. $ctx1.sendIdx["/"]=1;
  6085. //>>excludeEnd("ctx");
  6086. $7=self._y();
  6087. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  6088. $ctx1.sendIdx["y"]=1;
  6089. //>>excludeEnd("ctx");
  6090. $6=$recv($7).__slash($recv($recv(aPoint)._asPoint())._y());
  6091. $1=$recv($Point())._x_y_($2,$6);
  6092. return $1;
  6093. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  6094. }, function($ctx1) {$ctx1.fill(self,"/",{aPoint:aPoint},$globals.Point)});
  6095. //>>excludeEnd("ctx");
  6096. },
  6097. //>>excludeStart("ide", pragmas.excludeIdeData);
  6098. args: ["aPoint"],
  6099. source: "/ aPoint\x0a\x09^ Point x: self x / aPoint asPoint x y: self y / aPoint asPoint y",
  6100. referencedClasses: ["Point"],
  6101. //>>excludeEnd("ide");
  6102. messageSends: ["x:y:", "/", "x", "asPoint", "y"]
  6103. }),
  6104. $globals.Point);
  6105. $core.addMethod(
  6106. $core.method({
  6107. selector: "<",
  6108. protocol: 'comparing',
  6109. fn: function (aPoint){
  6110. var self=this;
  6111. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  6112. return $core.withContext(function($ctx1) {
  6113. //>>excludeEnd("ctx");
  6114. var $3,$2,$4,$1;
  6115. $3=self._x();
  6116. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  6117. $ctx1.sendIdx["x"]=1;
  6118. //>>excludeEnd("ctx");
  6119. $2=$recv($3).__lt($recv(aPoint)._x());
  6120. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  6121. $ctx1.sendIdx["<"]=1;
  6122. //>>excludeEnd("ctx");
  6123. $1=$recv($2)._and_((function(){
  6124. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  6125. return $core.withContext(function($ctx2) {
  6126. //>>excludeEnd("ctx");
  6127. $4=self._y();
  6128. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  6129. $ctx2.sendIdx["y"]=1;
  6130. //>>excludeEnd("ctx");
  6131. return $recv($4).__lt($recv(aPoint)._y());
  6132. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  6133. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  6134. //>>excludeEnd("ctx");
  6135. }));
  6136. return $1;
  6137. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  6138. }, function($ctx1) {$ctx1.fill(self,"<",{aPoint:aPoint},$globals.Point)});
  6139. //>>excludeEnd("ctx");
  6140. },
  6141. //>>excludeStart("ide", pragmas.excludeIdeData);
  6142. args: ["aPoint"],
  6143. source: "< aPoint\x0a\x09^ self x < aPoint x and: [\x0a\x09\x09self y < aPoint y ]",
  6144. referencedClasses: [],
  6145. //>>excludeEnd("ide");
  6146. messageSends: ["and:", "<", "x", "y"]
  6147. }),
  6148. $globals.Point);
  6149. $core.addMethod(
  6150. $core.method({
  6151. selector: "<=",
  6152. protocol: 'comparing',
  6153. fn: function (aPoint){
  6154. var self=this;
  6155. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  6156. return $core.withContext(function($ctx1) {
  6157. //>>excludeEnd("ctx");
  6158. var $3,$2,$4,$1;
  6159. $3=self._x();
  6160. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  6161. $ctx1.sendIdx["x"]=1;
  6162. //>>excludeEnd("ctx");
  6163. $2=$recv($3).__lt_eq($recv(aPoint)._x());
  6164. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  6165. $ctx1.sendIdx["<="]=1;
  6166. //>>excludeEnd("ctx");
  6167. $1=$recv($2)._and_((function(){
  6168. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  6169. return $core.withContext(function($ctx2) {
  6170. //>>excludeEnd("ctx");
  6171. $4=self._y();
  6172. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  6173. $ctx2.sendIdx["y"]=1;
  6174. //>>excludeEnd("ctx");
  6175. return $recv($4).__lt_eq($recv(aPoint)._y());
  6176. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  6177. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  6178. //>>excludeEnd("ctx");
  6179. }));
  6180. return $1;
  6181. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  6182. }, function($ctx1) {$ctx1.fill(self,"<=",{aPoint:aPoint},$globals.Point)});
  6183. //>>excludeEnd("ctx");
  6184. },
  6185. //>>excludeStart("ide", pragmas.excludeIdeData);
  6186. args: ["aPoint"],
  6187. source: "<= aPoint\x0a\x09^ self x <= aPoint x and: [\x0a\x09\x09self y <= aPoint y ]",
  6188. referencedClasses: [],
  6189. //>>excludeEnd("ide");
  6190. messageSends: ["and:", "<=", "x", "y"]
  6191. }),
  6192. $globals.Point);
  6193. $core.addMethod(
  6194. $core.method({
  6195. selector: "=",
  6196. protocol: 'comparing',
  6197. fn: function (aPoint){
  6198. var self=this;
  6199. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  6200. return $core.withContext(function($ctx1) {
  6201. //>>excludeEnd("ctx");
  6202. var $3,$2,$5,$4,$7,$6,$1;
  6203. $3=$recv(aPoint)._class();
  6204. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  6205. $ctx1.sendIdx["class"]=1;
  6206. //>>excludeEnd("ctx");
  6207. $2=$recv($3).__eq(self._class());
  6208. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  6209. $ctx1.sendIdx["="]=1;
  6210. //>>excludeEnd("ctx");
  6211. $1=$recv($2)._and_((function(){
  6212. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  6213. return $core.withContext(function($ctx2) {
  6214. //>>excludeEnd("ctx");
  6215. $5=$recv(aPoint)._x();
  6216. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  6217. $ctx2.sendIdx["x"]=1;
  6218. //>>excludeEnd("ctx");
  6219. $4=$recv($5).__eq(self._x());
  6220. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  6221. $ctx2.sendIdx["="]=2;
  6222. //>>excludeEnd("ctx");
  6223. $7=$recv(aPoint)._y();
  6224. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  6225. $ctx2.sendIdx["y"]=1;
  6226. //>>excludeEnd("ctx");
  6227. $6=$recv($7).__eq(self._y());
  6228. return $recv($4).__and($6);
  6229. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  6230. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  6231. //>>excludeEnd("ctx");
  6232. }));
  6233. return $1;
  6234. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  6235. }, function($ctx1) {$ctx1.fill(self,"=",{aPoint:aPoint},$globals.Point)});
  6236. //>>excludeEnd("ctx");
  6237. },
  6238. //>>excludeStart("ide", pragmas.excludeIdeData);
  6239. args: ["aPoint"],
  6240. source: "= aPoint\x0a\x09^ aPoint class = self class and: [\x0a\x09\x09(aPoint x = self x) & (aPoint y = self y) ]",
  6241. referencedClasses: [],
  6242. //>>excludeEnd("ide");
  6243. messageSends: ["and:", "=", "class", "&", "x", "y"]
  6244. }),
  6245. $globals.Point);
  6246. $core.addMethod(
  6247. $core.method({
  6248. selector: ">",
  6249. protocol: 'comparing',
  6250. fn: function (aPoint){
  6251. var self=this;
  6252. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  6253. return $core.withContext(function($ctx1) {
  6254. //>>excludeEnd("ctx");
  6255. var $3,$2,$4,$1;
  6256. $3=self._x();
  6257. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  6258. $ctx1.sendIdx["x"]=1;
  6259. //>>excludeEnd("ctx");
  6260. $2=$recv($3).__gt($recv(aPoint)._x());
  6261. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  6262. $ctx1.sendIdx[">"]=1;
  6263. //>>excludeEnd("ctx");
  6264. $1=$recv($2)._and_((function(){
  6265. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  6266. return $core.withContext(function($ctx2) {
  6267. //>>excludeEnd("ctx");
  6268. $4=self._y();
  6269. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  6270. $ctx2.sendIdx["y"]=1;
  6271. //>>excludeEnd("ctx");
  6272. return $recv($4).__gt($recv(aPoint)._y());
  6273. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  6274. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  6275. //>>excludeEnd("ctx");
  6276. }));
  6277. return $1;
  6278. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  6279. }, function($ctx1) {$ctx1.fill(self,">",{aPoint:aPoint},$globals.Point)});
  6280. //>>excludeEnd("ctx");
  6281. },
  6282. //>>excludeStart("ide", pragmas.excludeIdeData);
  6283. args: ["aPoint"],
  6284. source: "> aPoint\x0a\x09^ self x > aPoint x and: [\x0a\x09\x09self y > aPoint y ]",
  6285. referencedClasses: [],
  6286. //>>excludeEnd("ide");
  6287. messageSends: ["and:", ">", "x", "y"]
  6288. }),
  6289. $globals.Point);
  6290. $core.addMethod(
  6291. $core.method({
  6292. selector: ">=",
  6293. protocol: 'comparing',
  6294. fn: function (aPoint){
  6295. var self=this;
  6296. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  6297. return $core.withContext(function($ctx1) {
  6298. //>>excludeEnd("ctx");
  6299. var $3,$2,$4,$1;
  6300. $3=self._x();
  6301. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  6302. $ctx1.sendIdx["x"]=1;
  6303. //>>excludeEnd("ctx");
  6304. $2=$recv($3).__gt_eq($recv(aPoint)._x());
  6305. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  6306. $ctx1.sendIdx[">="]=1;
  6307. //>>excludeEnd("ctx");
  6308. $1=$recv($2)._and_((function(){
  6309. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  6310. return $core.withContext(function($ctx2) {
  6311. //>>excludeEnd("ctx");
  6312. $4=self._y();
  6313. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  6314. $ctx2.sendIdx["y"]=1;
  6315. //>>excludeEnd("ctx");
  6316. return $recv($4).__gt_eq($recv(aPoint)._y());
  6317. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  6318. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  6319. //>>excludeEnd("ctx");
  6320. }));
  6321. return $1;
  6322. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  6323. }, function($ctx1) {$ctx1.fill(self,">=",{aPoint:aPoint},$globals.Point)});
  6324. //>>excludeEnd("ctx");
  6325. },
  6326. //>>excludeStart("ide", pragmas.excludeIdeData);
  6327. args: ["aPoint"],
  6328. source: ">= aPoint\x0a\x09^ self x >= aPoint x and: [\x0a\x09\x09self y >= aPoint y ]",
  6329. referencedClasses: [],
  6330. //>>excludeEnd("ide");
  6331. messageSends: ["and:", ">=", "x", "y"]
  6332. }),
  6333. $globals.Point);
  6334. $core.addMethod(
  6335. $core.method({
  6336. selector: "asPoint",
  6337. protocol: 'converting',
  6338. fn: function (){
  6339. var self=this;
  6340. return self;
  6341. },
  6342. //>>excludeStart("ide", pragmas.excludeIdeData);
  6343. args: [],
  6344. source: "asPoint\x0a\x09^ self",
  6345. referencedClasses: [],
  6346. //>>excludeEnd("ide");
  6347. messageSends: []
  6348. }),
  6349. $globals.Point);
  6350. $core.addMethod(
  6351. $core.method({
  6352. selector: "dist:",
  6353. protocol: 'transforming',
  6354. fn: function (aPoint){
  6355. var self=this;
  6356. var dx,dy;
  6357. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  6358. return $core.withContext(function($ctx1) {
  6359. //>>excludeEnd("ctx");
  6360. var $3,$2,$1;
  6361. dx=$recv($recv(aPoint)._x()).__minus(self["@x"]);
  6362. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  6363. $ctx1.sendIdx["-"]=1;
  6364. //>>excludeEnd("ctx");
  6365. dy=$recv($recv(aPoint)._y()).__minus(self["@y"]);
  6366. $3=$recv(dx).__star(dx);
  6367. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  6368. $ctx1.sendIdx["*"]=1;
  6369. //>>excludeEnd("ctx");
  6370. $2=$recv($3).__plus($recv(dy).__star(dy));
  6371. $1=$recv($2)._sqrt();
  6372. return $1;
  6373. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  6374. }, function($ctx1) {$ctx1.fill(self,"dist:",{aPoint:aPoint,dx:dx,dy:dy},$globals.Point)});
  6375. //>>excludeEnd("ctx");
  6376. },
  6377. //>>excludeStart("ide", pragmas.excludeIdeData);
  6378. args: ["aPoint"],
  6379. 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",
  6380. referencedClasses: [],
  6381. //>>excludeEnd("ide");
  6382. messageSends: ["-", "x", "y", "sqrt", "+", "*"]
  6383. }),
  6384. $globals.Point);
  6385. $core.addMethod(
  6386. $core.method({
  6387. selector: "printOn:",
  6388. protocol: 'printing',
  6389. fn: function (aStream){
  6390. var self=this;
  6391. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  6392. return $core.withContext(function($ctx1) {
  6393. //>>excludeEnd("ctx");
  6394. var $1;
  6395. $recv(self["@x"])._printOn_(aStream);
  6396. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  6397. $ctx1.sendIdx["printOn:"]=1;
  6398. //>>excludeEnd("ctx");
  6399. $recv(aStream)._nextPutAll_("@");
  6400. $1=$recv($recv(self["@y"])._notNil())._and_((function(){
  6401. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  6402. return $core.withContext(function($ctx2) {
  6403. //>>excludeEnd("ctx");
  6404. return $recv(self["@y"])._negative();
  6405. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  6406. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  6407. //>>excludeEnd("ctx");
  6408. }));
  6409. if($core.assert($1)){
  6410. $recv(aStream)._space();
  6411. };
  6412. $recv(self["@y"])._printOn_(aStream);
  6413. return self;
  6414. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  6415. }, function($ctx1) {$ctx1.fill(self,"printOn:",{aStream:aStream},$globals.Point)});
  6416. //>>excludeEnd("ctx");
  6417. },
  6418. //>>excludeStart("ide", pragmas.excludeIdeData);
  6419. args: ["aStream"],
  6420. 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",
  6421. referencedClasses: [],
  6422. //>>excludeEnd("ide");
  6423. messageSends: ["printOn:", "nextPutAll:", "ifTrue:", "and:", "notNil", "negative", "space"]
  6424. }),
  6425. $globals.Point);
  6426. $core.addMethod(
  6427. $core.method({
  6428. selector: "translateBy:",
  6429. protocol: 'transforming',
  6430. fn: function (delta){
  6431. var self=this;
  6432. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  6433. return $core.withContext(function($ctx1) {
  6434. //>>excludeEnd("ctx");
  6435. var $2,$1;
  6436. $2=$recv($recv(delta)._x()).__plus(self["@x"]);
  6437. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  6438. $ctx1.sendIdx["+"]=1;
  6439. //>>excludeEnd("ctx");
  6440. $1=$recv($2).__at($recv($recv(delta)._y()).__plus(self["@y"]));
  6441. return $1;
  6442. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  6443. }, function($ctx1) {$ctx1.fill(self,"translateBy:",{delta:delta},$globals.Point)});
  6444. //>>excludeEnd("ctx");
  6445. },
  6446. //>>excludeStart("ide", pragmas.excludeIdeData);
  6447. args: ["delta"],
  6448. source: "translateBy: delta\x0a\x09\x22Answer a Point translated by delta (an instance of Point).\x22\x0a\x09^ (delta x + x) @ (delta y + y)",
  6449. referencedClasses: [],
  6450. //>>excludeEnd("ide");
  6451. messageSends: ["@", "+", "x", "y"]
  6452. }),
  6453. $globals.Point);
  6454. $core.addMethod(
  6455. $core.method({
  6456. selector: "x",
  6457. protocol: 'accessing',
  6458. fn: function (){
  6459. var self=this;
  6460. var $1;
  6461. $1=self["@x"];
  6462. return $1;
  6463. },
  6464. //>>excludeStart("ide", pragmas.excludeIdeData);
  6465. args: [],
  6466. source: "x\x0a\x09^ x",
  6467. referencedClasses: [],
  6468. //>>excludeEnd("ide");
  6469. messageSends: []
  6470. }),
  6471. $globals.Point);
  6472. $core.addMethod(
  6473. $core.method({
  6474. selector: "x:",
  6475. protocol: 'accessing',
  6476. fn: function (aNumber){
  6477. var self=this;
  6478. self["@x"]=aNumber;
  6479. return self;
  6480. },
  6481. //>>excludeStart("ide", pragmas.excludeIdeData);
  6482. args: ["aNumber"],
  6483. source: "x: aNumber\x0a\x09x := aNumber",
  6484. referencedClasses: [],
  6485. //>>excludeEnd("ide");
  6486. messageSends: []
  6487. }),
  6488. $globals.Point);
  6489. $core.addMethod(
  6490. $core.method({
  6491. selector: "y",
  6492. protocol: 'accessing',
  6493. fn: function (){
  6494. var self=this;
  6495. var $1;
  6496. $1=self["@y"];
  6497. return $1;
  6498. },
  6499. //>>excludeStart("ide", pragmas.excludeIdeData);
  6500. args: [],
  6501. source: "y\x0a\x09^ y",
  6502. referencedClasses: [],
  6503. //>>excludeEnd("ide");
  6504. messageSends: []
  6505. }),
  6506. $globals.Point);
  6507. $core.addMethod(
  6508. $core.method({
  6509. selector: "y:",
  6510. protocol: 'accessing',
  6511. fn: function (aNumber){
  6512. var self=this;
  6513. self["@y"]=aNumber;
  6514. return self;
  6515. },
  6516. //>>excludeStart("ide", pragmas.excludeIdeData);
  6517. args: ["aNumber"],
  6518. source: "y: aNumber\x0a\x09y := aNumber",
  6519. referencedClasses: [],
  6520. //>>excludeEnd("ide");
  6521. messageSends: []
  6522. }),
  6523. $globals.Point);
  6524. $core.addMethod(
  6525. $core.method({
  6526. selector: "heliosClass",
  6527. protocol: 'helios',
  6528. fn: function (){
  6529. var self=this;
  6530. return "magnitude";
  6531. },
  6532. //>>excludeStart("ide", pragmas.excludeIdeData);
  6533. args: [],
  6534. source: "heliosClass\x0a\x09^ 'magnitude'",
  6535. referencedClasses: [],
  6536. //>>excludeEnd("ide");
  6537. messageSends: []
  6538. }),
  6539. $globals.Point.klass);
  6540. $core.addMethod(
  6541. $core.method({
  6542. selector: "x:y:",
  6543. protocol: 'instance creation',
  6544. fn: function (aNumber,anotherNumber){
  6545. var self=this;
  6546. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  6547. return $core.withContext(function($ctx1) {
  6548. //>>excludeEnd("ctx");
  6549. var $2,$3,$1;
  6550. $2=self._new();
  6551. $recv($2)._x_(aNumber);
  6552. $recv($2)._y_(anotherNumber);
  6553. $3=$recv($2)._yourself();
  6554. $1=$3;
  6555. return $1;
  6556. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  6557. }, function($ctx1) {$ctx1.fill(self,"x:y:",{aNumber:aNumber,anotherNumber:anotherNumber},$globals.Point.klass)});
  6558. //>>excludeEnd("ctx");
  6559. },
  6560. //>>excludeStart("ide", pragmas.excludeIdeData);
  6561. args: ["aNumber", "anotherNumber"],
  6562. source: "x: aNumber y: anotherNumber\x0a\x09^ self new\x0a\x09\x09x: aNumber;\x0a\x09\x09y: anotherNumber;\x0a\x09\x09yourself",
  6563. referencedClasses: [],
  6564. //>>excludeEnd("ide");
  6565. messageSends: ["x:", "new", "y:", "yourself"]
  6566. }),
  6567. $globals.Point.klass);
  6568. $core.addClass('Random', $globals.Object, [], 'Kernel-Objects');
  6569. //>>excludeStart("ide", pragmas.excludeIdeData);
  6570. $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'`.";
  6571. //>>excludeEnd("ide");
  6572. $core.addMethod(
  6573. $core.method({
  6574. selector: "next",
  6575. protocol: 'accessing',
  6576. fn: function (){
  6577. var self=this;
  6578. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  6579. return $core.withContext(function($ctx1) {
  6580. //>>excludeEnd("ctx");
  6581. return Math.random();
  6582. return self;
  6583. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  6584. }, function($ctx1) {$ctx1.fill(self,"next",{},$globals.Random)});
  6585. //>>excludeEnd("ctx");
  6586. },
  6587. //>>excludeStart("ide", pragmas.excludeIdeData);
  6588. args: [],
  6589. source: "next\x0a\x09<return Math.random()>",
  6590. referencedClasses: [],
  6591. //>>excludeEnd("ide");
  6592. messageSends: []
  6593. }),
  6594. $globals.Random);
  6595. $core.addMethod(
  6596. $core.method({
  6597. selector: "next:",
  6598. protocol: 'accessing',
  6599. fn: function (anInteger){
  6600. var self=this;
  6601. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  6602. return $core.withContext(function($ctx1) {
  6603. //>>excludeEnd("ctx");
  6604. var $1;
  6605. $1=$recv((1)._to_(anInteger))._collect_((function(each){
  6606. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  6607. return $core.withContext(function($ctx2) {
  6608. //>>excludeEnd("ctx");
  6609. return self._next();
  6610. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  6611. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  6612. //>>excludeEnd("ctx");
  6613. }));
  6614. return $1;
  6615. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  6616. }, function($ctx1) {$ctx1.fill(self,"next:",{anInteger:anInteger},$globals.Random)});
  6617. //>>excludeEnd("ctx");
  6618. },
  6619. //>>excludeStart("ide", pragmas.excludeIdeData);
  6620. args: ["anInteger"],
  6621. source: "next: anInteger\x0a\x09^ (1 to: anInteger) collect: [ :each | self next ]",
  6622. referencedClasses: [],
  6623. //>>excludeEnd("ide");
  6624. messageSends: ["collect:", "to:", "next"]
  6625. }),
  6626. $globals.Random);
  6627. $core.addClass('UndefinedObject', $globals.Object, [], 'Kernel-Objects');
  6628. //>>excludeStart("ide", pragmas.excludeIdeData);
  6629. $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`.";
  6630. //>>excludeEnd("ide");
  6631. $core.addMethod(
  6632. $core.method({
  6633. selector: "asJSON",
  6634. protocol: 'converting',
  6635. fn: function (){
  6636. var self=this;
  6637. var $1;
  6638. $1=null;
  6639. return $1;
  6640. },
  6641. //>>excludeStart("ide", pragmas.excludeIdeData);
  6642. args: [],
  6643. source: "asJSON\x0a\x09^ null",
  6644. referencedClasses: [],
  6645. //>>excludeEnd("ide");
  6646. messageSends: []
  6647. }),
  6648. $globals.UndefinedObject);
  6649. $core.addMethod(
  6650. $core.method({
  6651. selector: "deepCopy",
  6652. protocol: 'copying',
  6653. fn: function (){
  6654. var self=this;
  6655. return self;
  6656. },
  6657. //>>excludeStart("ide", pragmas.excludeIdeData);
  6658. args: [],
  6659. source: "deepCopy\x0a\x09^ self",
  6660. referencedClasses: [],
  6661. //>>excludeEnd("ide");
  6662. messageSends: []
  6663. }),
  6664. $globals.UndefinedObject);
  6665. $core.addMethod(
  6666. $core.method({
  6667. selector: "ifNil:",
  6668. protocol: 'testing',
  6669. fn: function (aBlock){
  6670. var self=this;
  6671. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  6672. return $core.withContext(function($ctx1) {
  6673. //>>excludeEnd("ctx");
  6674. var $1;
  6675. $1=self._ifNil_ifNotNil_(aBlock,(function(){
  6676. }));
  6677. return $1;
  6678. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  6679. }, function($ctx1) {$ctx1.fill(self,"ifNil:",{aBlock:aBlock},$globals.UndefinedObject)});
  6680. //>>excludeEnd("ctx");
  6681. },
  6682. //>>excludeStart("ide", pragmas.excludeIdeData);
  6683. args: ["aBlock"],
  6684. source: "ifNil: aBlock\x0a\x09\x22inlined in the Compiler\x22\x0a\x09^ self ifNil: aBlock ifNotNil: []",
  6685. referencedClasses: [],
  6686. //>>excludeEnd("ide");
  6687. messageSends: ["ifNil:ifNotNil:"]
  6688. }),
  6689. $globals.UndefinedObject);
  6690. $core.addMethod(
  6691. $core.method({
  6692. selector: "ifNil:ifNotNil:",
  6693. protocol: 'testing',
  6694. fn: function (aBlock,anotherBlock){
  6695. var self=this;
  6696. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  6697. return $core.withContext(function($ctx1) {
  6698. //>>excludeEnd("ctx");
  6699. var $1;
  6700. $1=$recv(aBlock)._value();
  6701. return $1;
  6702. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  6703. }, function($ctx1) {$ctx1.fill(self,"ifNil:ifNotNil:",{aBlock:aBlock,anotherBlock:anotherBlock},$globals.UndefinedObject)});
  6704. //>>excludeEnd("ctx");
  6705. },
  6706. //>>excludeStart("ide", pragmas.excludeIdeData);
  6707. args: ["aBlock", "anotherBlock"],
  6708. source: "ifNil: aBlock ifNotNil: anotherBlock\x0a\x09\x22inlined in the Compiler\x22\x0a\x09^ aBlock value",
  6709. referencedClasses: [],
  6710. //>>excludeEnd("ide");
  6711. messageSends: ["value"]
  6712. }),
  6713. $globals.UndefinedObject);
  6714. $core.addMethod(
  6715. $core.method({
  6716. selector: "ifNotNil:",
  6717. protocol: 'testing',
  6718. fn: function (aBlock){
  6719. var self=this;
  6720. return self;
  6721. },
  6722. //>>excludeStart("ide", pragmas.excludeIdeData);
  6723. args: ["aBlock"],
  6724. source: "ifNotNil: aBlock\x0a\x09\x22inlined in the Compiler\x22\x0a\x09^ self",
  6725. referencedClasses: [],
  6726. //>>excludeEnd("ide");
  6727. messageSends: []
  6728. }),
  6729. $globals.UndefinedObject);
  6730. $core.addMethod(
  6731. $core.method({
  6732. selector: "ifNotNil:ifNil:",
  6733. protocol: 'testing',
  6734. fn: function (aBlock,anotherBlock){
  6735. var self=this;
  6736. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  6737. return $core.withContext(function($ctx1) {
  6738. //>>excludeEnd("ctx");
  6739. var $1;
  6740. $1=$recv(anotherBlock)._value();
  6741. return $1;
  6742. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  6743. }, function($ctx1) {$ctx1.fill(self,"ifNotNil:ifNil:",{aBlock:aBlock,anotherBlock:anotherBlock},$globals.UndefinedObject)});
  6744. //>>excludeEnd("ctx");
  6745. },
  6746. //>>excludeStart("ide", pragmas.excludeIdeData);
  6747. args: ["aBlock", "anotherBlock"],
  6748. source: "ifNotNil: aBlock ifNil: anotherBlock\x0a\x09\x22inlined in the Compiler\x22\x0a\x09^ anotherBlock value",
  6749. referencedClasses: [],
  6750. //>>excludeEnd("ide");
  6751. messageSends: ["value"]
  6752. }),
  6753. $globals.UndefinedObject);
  6754. $core.addMethod(
  6755. $core.method({
  6756. selector: "isImmutable",
  6757. protocol: 'testing',
  6758. fn: function (){
  6759. var self=this;
  6760. return true;
  6761. },
  6762. //>>excludeStart("ide", pragmas.excludeIdeData);
  6763. args: [],
  6764. source: "isImmutable\x0a\x09^ true",
  6765. referencedClasses: [],
  6766. //>>excludeEnd("ide");
  6767. messageSends: []
  6768. }),
  6769. $globals.UndefinedObject);
  6770. $core.addMethod(
  6771. $core.method({
  6772. selector: "isNil",
  6773. protocol: 'testing',
  6774. fn: function (){
  6775. var self=this;
  6776. return true;
  6777. },
  6778. //>>excludeStart("ide", pragmas.excludeIdeData);
  6779. args: [],
  6780. source: "isNil\x0a\x09^ true",
  6781. referencedClasses: [],
  6782. //>>excludeEnd("ide");
  6783. messageSends: []
  6784. }),
  6785. $globals.UndefinedObject);
  6786. $core.addMethod(
  6787. $core.method({
  6788. selector: "notNil",
  6789. protocol: 'testing',
  6790. fn: function (){
  6791. var self=this;
  6792. return false;
  6793. },
  6794. //>>excludeStart("ide", pragmas.excludeIdeData);
  6795. args: [],
  6796. source: "notNil\x0a\x09^ false",
  6797. referencedClasses: [],
  6798. //>>excludeEnd("ide");
  6799. messageSends: []
  6800. }),
  6801. $globals.UndefinedObject);
  6802. $core.addMethod(
  6803. $core.method({
  6804. selector: "printOn:",
  6805. protocol: 'printing',
  6806. fn: function (aStream){
  6807. var self=this;
  6808. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  6809. return $core.withContext(function($ctx1) {
  6810. //>>excludeEnd("ctx");
  6811. $recv(aStream)._nextPutAll_("nil");
  6812. return self;
  6813. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  6814. }, function($ctx1) {$ctx1.fill(self,"printOn:",{aStream:aStream},$globals.UndefinedObject)});
  6815. //>>excludeEnd("ctx");
  6816. },
  6817. //>>excludeStart("ide", pragmas.excludeIdeData);
  6818. args: ["aStream"],
  6819. source: "printOn: aStream\x0a\x09aStream nextPutAll: 'nil'",
  6820. referencedClasses: [],
  6821. //>>excludeEnd("ide");
  6822. messageSends: ["nextPutAll:"]
  6823. }),
  6824. $globals.UndefinedObject);
  6825. $core.addMethod(
  6826. $core.method({
  6827. selector: "shallowCopy",
  6828. protocol: 'copying',
  6829. fn: function (){
  6830. var self=this;
  6831. return self;
  6832. },
  6833. //>>excludeStart("ide", pragmas.excludeIdeData);
  6834. args: [],
  6835. source: "shallowCopy\x0a\x09^ self",
  6836. referencedClasses: [],
  6837. //>>excludeEnd("ide");
  6838. messageSends: []
  6839. }),
  6840. $globals.UndefinedObject);
  6841. $core.addMethod(
  6842. $core.method({
  6843. selector: "subclass:instanceVariableNames:",
  6844. protocol: 'class creation',
  6845. fn: function (aString,anotherString){
  6846. var self=this;
  6847. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  6848. return $core.withContext(function($ctx1) {
  6849. //>>excludeEnd("ctx");
  6850. var $1;
  6851. $1=self._subclass_instanceVariableNames_package_(aString,anotherString,nil);
  6852. return $1;
  6853. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  6854. }, function($ctx1) {$ctx1.fill(self,"subclass:instanceVariableNames:",{aString:aString,anotherString:anotherString},$globals.UndefinedObject)});
  6855. //>>excludeEnd("ctx");
  6856. },
  6857. //>>excludeStart("ide", pragmas.excludeIdeData);
  6858. args: ["aString", "anotherString"],
  6859. source: "subclass: aString instanceVariableNames: anotherString\x0a\x09\x22Kept for file-in compatibility.\x22\x0a\x09^ self subclass: aString instanceVariableNames: anotherString package: nil",
  6860. referencedClasses: [],
  6861. //>>excludeEnd("ide");
  6862. messageSends: ["subclass:instanceVariableNames:package:"]
  6863. }),
  6864. $globals.UndefinedObject);
  6865. $core.addMethod(
  6866. $core.method({
  6867. selector: "subclass:instanceVariableNames:category:",
  6868. protocol: 'class creation',
  6869. fn: function (aString,aString2,aString3){
  6870. var self=this;
  6871. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  6872. return $core.withContext(function($ctx1) {
  6873. //>>excludeEnd("ctx");
  6874. var $1;
  6875. $1=self._subclass_instanceVariableNames_package_(aString,aString2,aString3);
  6876. return $1;
  6877. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  6878. }, function($ctx1) {$ctx1.fill(self,"subclass:instanceVariableNames:category:",{aString:aString,aString2:aString2,aString3:aString3},$globals.UndefinedObject)});
  6879. //>>excludeEnd("ctx");
  6880. },
  6881. //>>excludeStart("ide", pragmas.excludeIdeData);
  6882. args: ["aString", "aString2", "aString3"],
  6883. source: "subclass: aString instanceVariableNames: aString2 category: aString3\x0a\x09\x22Kept for file-in compatibility.\x22\x0a\x09^ self subclass: aString instanceVariableNames: aString2 package: aString3",
  6884. referencedClasses: [],
  6885. //>>excludeEnd("ide");
  6886. messageSends: ["subclass:instanceVariableNames:package:"]
  6887. }),
  6888. $globals.UndefinedObject);
  6889. $core.addMethod(
  6890. $core.method({
  6891. selector: "subclass:instanceVariableNames:classVariableNames:poolDictionaries:category:",
  6892. protocol: 'class creation',
  6893. fn: function (aString,aString2,classVars,pools,aString3){
  6894. var self=this;
  6895. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  6896. return $core.withContext(function($ctx1) {
  6897. //>>excludeEnd("ctx");
  6898. var $1;
  6899. $1=self._subclass_instanceVariableNames_package_(aString,aString2,aString3);
  6900. return $1;
  6901. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  6902. }, function($ctx1) {$ctx1.fill(self,"subclass:instanceVariableNames:classVariableNames:poolDictionaries:category:",{aString:aString,aString2:aString2,classVars:classVars,pools:pools,aString3:aString3},$globals.UndefinedObject)});
  6903. //>>excludeEnd("ctx");
  6904. },
  6905. //>>excludeStart("ide", pragmas.excludeIdeData);
  6906. args: ["aString", "aString2", "classVars", "pools", "aString3"],
  6907. 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",
  6908. referencedClasses: [],
  6909. //>>excludeEnd("ide");
  6910. messageSends: ["subclass:instanceVariableNames:package:"]
  6911. }),
  6912. $globals.UndefinedObject);
  6913. $core.addMethod(
  6914. $core.method({
  6915. selector: "subclass:instanceVariableNames:package:",
  6916. protocol: 'class creation',
  6917. fn: function (aString,aString2,aString3){
  6918. var self=this;
  6919. function $ClassBuilder(){return $globals.ClassBuilder||(typeof ClassBuilder=="undefined"?nil:ClassBuilder)}
  6920. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  6921. return $core.withContext(function($ctx1) {
  6922. //>>excludeEnd("ctx");
  6923. var $1;
  6924. $1=$recv($recv($ClassBuilder())._new())._superclass_subclass_instanceVariableNames_package_(self,$recv(aString)._asString(),aString2,aString3);
  6925. return $1;
  6926. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  6927. }, function($ctx1) {$ctx1.fill(self,"subclass:instanceVariableNames:package:",{aString:aString,aString2:aString2,aString3:aString3},$globals.UndefinedObject)});
  6928. //>>excludeEnd("ctx");
  6929. },
  6930. //>>excludeStart("ide", pragmas.excludeIdeData);
  6931. args: ["aString", "aString2", "aString3"],
  6932. source: "subclass: aString instanceVariableNames: aString2 package: aString3\x0a\x09^ ClassBuilder new\x0a\x09\x09superclass: self subclass: aString asString instanceVariableNames: aString2 package: aString3",
  6933. referencedClasses: ["ClassBuilder"],
  6934. //>>excludeEnd("ide");
  6935. messageSends: ["superclass:subclass:instanceVariableNames:package:", "new", "asString"]
  6936. }),
  6937. $globals.UndefinedObject);
  6938. $core.addMethod(
  6939. $core.method({
  6940. selector: "new",
  6941. protocol: 'instance creation',
  6942. fn: function (){
  6943. var self=this;
  6944. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  6945. return $core.withContext(function($ctx1) {
  6946. //>>excludeEnd("ctx");
  6947. self._error_("You cannot create new instances of UndefinedObject. Use nil");
  6948. return self;
  6949. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  6950. }, function($ctx1) {$ctx1.fill(self,"new",{},$globals.UndefinedObject.klass)});
  6951. //>>excludeEnd("ctx");
  6952. },
  6953. //>>excludeStart("ide", pragmas.excludeIdeData);
  6954. args: [],
  6955. source: "new\x0a\x09\x09self error: 'You cannot create new instances of UndefinedObject. Use nil'",
  6956. referencedClasses: [],
  6957. //>>excludeEnd("ide");
  6958. messageSends: ["error:"]
  6959. }),
  6960. $globals.UndefinedObject.klass);
  6961. });
  6962. define("amber_core/Kernel-Classes", ["amber/boot", "amber_core/Kernel-Objects"], function($boot){
  6963. var $core=$boot.api,nil=$boot.nil,$recv=$boot.asReceiver,$globals=$boot.globals;
  6964. var smalltalk=$core,_st=$recv,globals=$globals;
  6965. $core.addPackage('Kernel-Classes');
  6966. $core.packages["Kernel-Classes"].transport = {"type":"amd","amdNamespace":"amber_core"};
  6967. $core.addClass('Behavior', $globals.Object, [], 'Kernel-Classes');
  6968. //>>excludeStart("ide", pragmas.excludeIdeData);
  6969. $globals.Behavior.comment="I am the superclass of all class objects.\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, contain the description that instances are created from,\x0aand hold the method dictionary that's associated with each class.\x0a\x0aI also provides methods for compiling methods, examining the method dictionary, and iterating over the class hierarchy.";
  6970. //>>excludeEnd("ide");
  6971. $core.addMethod(
  6972. $core.method({
  6973. selector: ">>",
  6974. protocol: 'accessing',
  6975. fn: function (aString){
  6976. var self=this;
  6977. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  6978. return $core.withContext(function($ctx1) {
  6979. //>>excludeEnd("ctx");
  6980. var $1;
  6981. $1=self._methodAt_(aString);
  6982. return $1;
  6983. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  6984. }, function($ctx1) {$ctx1.fill(self,">>",{aString:aString},$globals.Behavior)});
  6985. //>>excludeEnd("ctx");
  6986. },
  6987. //>>excludeStart("ide", pragmas.excludeIdeData);
  6988. args: ["aString"],
  6989. source: ">> aString\x0a\x09^ self methodAt: aString",
  6990. referencedClasses: [],
  6991. //>>excludeEnd("ide");
  6992. messageSends: ["methodAt:"]
  6993. }),
  6994. $globals.Behavior);
  6995. $core.addMethod(
  6996. $core.method({
  6997. selector: "addCompiledMethod:",
  6998. protocol: 'compiling',
  6999. fn: function (aMethod){
  7000. var self=this;
  7001. var oldMethod,announcement;
  7002. function $MethodAdded(){return $globals.MethodAdded||(typeof MethodAdded=="undefined"?nil:MethodAdded)}
  7003. function $MethodModified(){return $globals.MethodModified||(typeof MethodModified=="undefined"?nil:MethodModified)}
  7004. function $SystemAnnouncer(){return $globals.SystemAnnouncer||(typeof SystemAnnouncer=="undefined"?nil:SystemAnnouncer)}
  7005. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7006. return $core.withContext(function($ctx1) {
  7007. //>>excludeEnd("ctx");
  7008. var $2,$3,$1,$4,$5,$6,$7,$8,$9,$10,$11,$receiver;
  7009. oldMethod=$recv(self._methodDictionary())._at_ifAbsent_($recv(aMethod)._selector(),(function(){
  7010. return nil;
  7011. }));
  7012. $2=self._protocols();
  7013. $3=$recv(aMethod)._protocol();
  7014. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7015. $ctx1.sendIdx["protocol"]=1;
  7016. //>>excludeEnd("ctx");
  7017. $1=$recv($2)._includes_($3);
  7018. if(!$core.assert($1)){
  7019. $4=self._organization();
  7020. $5=$recv(aMethod)._protocol();
  7021. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7022. $ctx1.sendIdx["protocol"]=2;
  7023. //>>excludeEnd("ctx");
  7024. $recv($4)._addElement_($5);
  7025. };
  7026. self._basicAddCompiledMethod_(aMethod);
  7027. $6=oldMethod;
  7028. if(($receiver = $6) == null || $receiver.isNil){
  7029. $6;
  7030. } else {
  7031. self._removeProtocolIfEmpty_($recv(oldMethod)._protocol());
  7032. };
  7033. $7=oldMethod;
  7034. if(($receiver = $7) == null || $receiver.isNil){
  7035. $8=$recv($MethodAdded())._new();
  7036. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7037. $ctx1.sendIdx["new"]=1;
  7038. //>>excludeEnd("ctx");
  7039. $recv($8)._method_(aMethod);
  7040. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7041. $ctx1.sendIdx["method:"]=1;
  7042. //>>excludeEnd("ctx");
  7043. $9=$recv($8)._yourself();
  7044. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7045. $ctx1.sendIdx["yourself"]=1;
  7046. //>>excludeEnd("ctx");
  7047. announcement=$9;
  7048. } else {
  7049. $10=$recv($MethodModified())._new();
  7050. $recv($10)._oldMethod_(oldMethod);
  7051. $recv($10)._method_(aMethod);
  7052. $11=$recv($10)._yourself();
  7053. announcement=$11;
  7054. };
  7055. $recv($recv($SystemAnnouncer())._current())._announce_(announcement);
  7056. return self;
  7057. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7058. }, function($ctx1) {$ctx1.fill(self,"addCompiledMethod:",{aMethod:aMethod,oldMethod:oldMethod,announcement:announcement},$globals.Behavior)});
  7059. //>>excludeEnd("ctx");
  7060. },
  7061. //>>excludeStart("ide", pragmas.excludeIdeData);
  7062. args: ["aMethod"],
  7063. 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\x09(self protocols includes: aMethod protocol)\x0a\x09\x09ifFalse: [ self organization addElement: aMethod protocol ].\x0a\x0a\x09self basicAddCompiledMethod: aMethod.\x0a\x09\x0a\x09oldMethod ifNotNil: [\x0a\x09\x09self removeProtocolIfEmpty: oldMethod protocol ].\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",
  7064. referencedClasses: ["MethodAdded", "MethodModified", "SystemAnnouncer"],
  7065. //>>excludeEnd("ide");
  7066. messageSends: ["at:ifAbsent:", "methodDictionary", "selector", "ifFalse:", "includes:", "protocols", "protocol", "addElement:", "organization", "basicAddCompiledMethod:", "ifNotNil:", "removeProtocolIfEmpty:", "ifNil:ifNotNil:", "method:", "new", "yourself", "oldMethod:", "announce:", "current"]
  7067. }),
  7068. $globals.Behavior);
  7069. $core.addMethod(
  7070. $core.method({
  7071. selector: "allInstanceVariableNames",
  7072. protocol: 'accessing',
  7073. fn: function (){
  7074. var self=this;
  7075. var result;
  7076. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7077. return $core.withContext(function($ctx1) {
  7078. //>>excludeEnd("ctx");
  7079. var $1,$2,$receiver;
  7080. result=$recv(self._instanceVariableNames())._copy();
  7081. $1=self._superclass();
  7082. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7083. $ctx1.sendIdx["superclass"]=1;
  7084. //>>excludeEnd("ctx");
  7085. if(($receiver = $1) == null || $receiver.isNil){
  7086. $1;
  7087. } else {
  7088. $recv(result)._addAll_($recv(self._superclass())._allInstanceVariableNames());
  7089. };
  7090. $2=result;
  7091. return $2;
  7092. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7093. }, function($ctx1) {$ctx1.fill(self,"allInstanceVariableNames",{result:result},$globals.Behavior)});
  7094. //>>excludeEnd("ctx");
  7095. },
  7096. //>>excludeStart("ide", pragmas.excludeIdeData);
  7097. args: [],
  7098. source: "allInstanceVariableNames\x0a\x09| result |\x0a\x09result := self instanceVariableNames copy.\x0a\x09self superclass ifNotNil: [\x0a\x09\x09result addAll: self superclass allInstanceVariableNames ].\x0a\x09^ result",
  7099. referencedClasses: [],
  7100. //>>excludeEnd("ide");
  7101. messageSends: ["copy", "instanceVariableNames", "ifNotNil:", "superclass", "addAll:", "allInstanceVariableNames"]
  7102. }),
  7103. $globals.Behavior);
  7104. $core.addMethod(
  7105. $core.method({
  7106. selector: "allSelectors",
  7107. protocol: 'accessing',
  7108. fn: function (){
  7109. var self=this;
  7110. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7111. return $core.withContext(function($ctx1) {
  7112. //>>excludeEnd("ctx");
  7113. var $2,$3,$4,$1;
  7114. $2=self._allSuperclasses();
  7115. $3=self._selectors();
  7116. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7117. $ctx1.sendIdx["selectors"]=1;
  7118. //>>excludeEnd("ctx");
  7119. $1=$recv($2)._inject_into_($3,(function(acc,each){
  7120. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7121. return $core.withContext(function($ctx2) {
  7122. //>>excludeEnd("ctx");
  7123. $recv(acc)._addAll_($recv(each)._selectors());
  7124. $4=$recv(acc)._yourself();
  7125. return $4;
  7126. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7127. }, function($ctx2) {$ctx2.fillBlock({acc:acc,each:each},$ctx1,1)});
  7128. //>>excludeEnd("ctx");
  7129. }));
  7130. return $1;
  7131. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7132. }, function($ctx1) {$ctx1.fill(self,"allSelectors",{},$globals.Behavior)});
  7133. //>>excludeEnd("ctx");
  7134. },
  7135. //>>excludeStart("ide", pragmas.excludeIdeData);
  7136. args: [],
  7137. source: "allSelectors\x0a\x09^ self allSuperclasses\x0a\x09\x09inject: self selectors\x0a\x09\x09into: [ :acc :each | acc addAll: each selectors; yourself ]",
  7138. referencedClasses: [],
  7139. //>>excludeEnd("ide");
  7140. messageSends: ["inject:into:", "allSuperclasses", "selectors", "addAll:", "yourself"]
  7141. }),
  7142. $globals.Behavior);
  7143. $core.addMethod(
  7144. $core.method({
  7145. selector: "allSubclasses",
  7146. protocol: 'accessing',
  7147. fn: function (){
  7148. var self=this;
  7149. var subclasses,index;
  7150. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7151. return $core.withContext(function($ctx1) {
  7152. //>>excludeEnd("ctx");
  7153. var $1;
  7154. subclasses=self._subclasses();
  7155. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7156. $ctx1.sendIdx["subclasses"]=1;
  7157. //>>excludeEnd("ctx");
  7158. index=(1);
  7159. $recv((function(){
  7160. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7161. return $core.withContext(function($ctx2) {
  7162. //>>excludeEnd("ctx");
  7163. return $recv(index).__gt($recv(subclasses)._size());
  7164. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7165. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  7166. //>>excludeEnd("ctx");
  7167. }))._whileFalse_((function(){
  7168. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7169. return $core.withContext(function($ctx2) {
  7170. //>>excludeEnd("ctx");
  7171. $recv(subclasses)._addAll_($recv($recv(subclasses)._at_(index))._subclasses());
  7172. index=$recv(index).__plus((1));
  7173. return index;
  7174. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7175. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
  7176. //>>excludeEnd("ctx");
  7177. }));
  7178. $1=subclasses;
  7179. return $1;
  7180. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7181. }, function($ctx1) {$ctx1.fill(self,"allSubclasses",{subclasses:subclasses,index:index},$globals.Behavior)});
  7182. //>>excludeEnd("ctx");
  7183. },
  7184. //>>excludeStart("ide", pragmas.excludeIdeData);
  7185. args: [],
  7186. source: "allSubclasses\x0a\x09\x22Answer an collection of the receiver's and the receiver's descendent's subclasses. \x22\x0a\x0a\x09| subclasses index |\x0a\x09\x0a\x09subclasses := self 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\x09^ subclasses",
  7187. referencedClasses: [],
  7188. //>>excludeEnd("ide");
  7189. messageSends: ["subclasses", "whileFalse:", ">", "size", "addAll:", "at:", "+"]
  7190. }),
  7191. $globals.Behavior);
  7192. $core.addMethod(
  7193. $core.method({
  7194. selector: "allSubclassesDo:",
  7195. protocol: 'enumerating',
  7196. fn: function (aBlock){
  7197. var self=this;
  7198. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7199. return $core.withContext(function($ctx1) {
  7200. //>>excludeEnd("ctx");
  7201. $recv(self._allSubclasses())._do_((function(each){
  7202. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7203. return $core.withContext(function($ctx2) {
  7204. //>>excludeEnd("ctx");
  7205. return $recv(aBlock)._value_(each);
  7206. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7207. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  7208. //>>excludeEnd("ctx");
  7209. }));
  7210. return self;
  7211. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7212. }, function($ctx1) {$ctx1.fill(self,"allSubclassesDo:",{aBlock:aBlock},$globals.Behavior)});
  7213. //>>excludeEnd("ctx");
  7214. },
  7215. //>>excludeStart("ide", pragmas.excludeIdeData);
  7216. args: ["aBlock"],
  7217. source: "allSubclassesDo: aBlock\x0a\x09\x22Evaluate the argument, aBlock, for each of the receiver's subclasses.\x22\x0a\x0a\x09self allSubclasses do: [ :each |\x0a \x09aBlock value: each ]",
  7218. referencedClasses: [],
  7219. //>>excludeEnd("ide");
  7220. messageSends: ["do:", "allSubclasses", "value:"]
  7221. }),
  7222. $globals.Behavior);
  7223. $core.addMethod(
  7224. $core.method({
  7225. selector: "allSuperclasses",
  7226. protocol: 'accessing',
  7227. fn: function (){
  7228. var self=this;
  7229. function $OrderedCollection(){return $globals.OrderedCollection||(typeof OrderedCollection=="undefined"?nil:OrderedCollection)}
  7230. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7231. return $core.withContext(function($ctx1) {
  7232. //>>excludeEnd("ctx");
  7233. var $1,$2,$5,$4,$6,$3,$receiver;
  7234. $1=self._superclass();
  7235. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7236. $ctx1.sendIdx["superclass"]=1;
  7237. //>>excludeEnd("ctx");
  7238. if(($receiver = $1) == null || $receiver.isNil){
  7239. $2=[];
  7240. return $2;
  7241. } else {
  7242. $1;
  7243. };
  7244. $5=self._superclass();
  7245. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7246. $ctx1.sendIdx["superclass"]=2;
  7247. //>>excludeEnd("ctx");
  7248. $4=$recv($OrderedCollection())._with_($5);
  7249. $recv($4)._addAll_($recv(self._superclass())._allSuperclasses());
  7250. $6=$recv($4)._yourself();
  7251. $3=$6;
  7252. return $3;
  7253. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7254. }, function($ctx1) {$ctx1.fill(self,"allSuperclasses",{},$globals.Behavior)});
  7255. //>>excludeEnd("ctx");
  7256. },
  7257. //>>excludeStart("ide", pragmas.excludeIdeData);
  7258. args: [],
  7259. source: "allSuperclasses\x0a\x09\x0a\x09self superclass ifNil: [ ^ #() ].\x0a\x09\x0a\x09^ (OrderedCollection with: self superclass)\x0a\x09\x09addAll: self superclass allSuperclasses;\x0a\x09\x09yourself",
  7260. referencedClasses: ["OrderedCollection"],
  7261. //>>excludeEnd("ide");
  7262. messageSends: ["ifNil:", "superclass", "addAll:", "with:", "allSuperclasses", "yourself"]
  7263. }),
  7264. $globals.Behavior);
  7265. $core.addMethod(
  7266. $core.method({
  7267. selector: "basicAddCompiledMethod:",
  7268. protocol: 'private',
  7269. fn: function (aMethod){
  7270. var self=this;
  7271. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7272. return $core.withContext(function($ctx1) {
  7273. //>>excludeEnd("ctx");
  7274. $core.addMethod(aMethod, self);
  7275. return self;
  7276. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7277. }, function($ctx1) {$ctx1.fill(self,"basicAddCompiledMethod:",{aMethod:aMethod},$globals.Behavior)});
  7278. //>>excludeEnd("ctx");
  7279. },
  7280. //>>excludeStart("ide", pragmas.excludeIdeData);
  7281. args: ["aMethod"],
  7282. source: "basicAddCompiledMethod: aMethod\x0a\x09<$core.addMethod(aMethod, self)>",
  7283. referencedClasses: [],
  7284. //>>excludeEnd("ide");
  7285. messageSends: []
  7286. }),
  7287. $globals.Behavior);
  7288. $core.addMethod(
  7289. $core.method({
  7290. selector: "basicNew",
  7291. protocol: 'instance creation',
  7292. fn: function (){
  7293. var self=this;
  7294. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7295. return $core.withContext(function($ctx1) {
  7296. //>>excludeEnd("ctx");
  7297. return new self.fn();
  7298. return self;
  7299. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7300. }, function($ctx1) {$ctx1.fill(self,"basicNew",{},$globals.Behavior)});
  7301. //>>excludeEnd("ctx");
  7302. },
  7303. //>>excludeStart("ide", pragmas.excludeIdeData);
  7304. args: [],
  7305. source: "basicNew\x0a\x09<return new self.fn()>",
  7306. referencedClasses: [],
  7307. //>>excludeEnd("ide");
  7308. messageSends: []
  7309. }),
  7310. $globals.Behavior);
  7311. $core.addMethod(
  7312. $core.method({
  7313. selector: "basicRemoveCompiledMethod:",
  7314. protocol: 'private',
  7315. fn: function (aMethod){
  7316. var self=this;
  7317. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7318. return $core.withContext(function($ctx1) {
  7319. //>>excludeEnd("ctx");
  7320. $core.removeMethod(aMethod,self);
  7321. return self;
  7322. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7323. }, function($ctx1) {$ctx1.fill(self,"basicRemoveCompiledMethod:",{aMethod:aMethod},$globals.Behavior)});
  7324. //>>excludeEnd("ctx");
  7325. },
  7326. //>>excludeStart("ide", pragmas.excludeIdeData);
  7327. args: ["aMethod"],
  7328. source: "basicRemoveCompiledMethod: aMethod\x0a\x09<$core.removeMethod(aMethod,self)>",
  7329. referencedClasses: [],
  7330. //>>excludeEnd("ide");
  7331. messageSends: []
  7332. }),
  7333. $globals.Behavior);
  7334. $core.addMethod(
  7335. $core.method({
  7336. selector: "canUnderstand:",
  7337. protocol: 'testing',
  7338. fn: function (aSelector){
  7339. var self=this;
  7340. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7341. return $core.withContext(function($ctx1) {
  7342. //>>excludeEnd("ctx");
  7343. var $3,$2,$1;
  7344. $1=$recv(self._includesSelector_($recv(aSelector)._asString()))._or_((function(){
  7345. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7346. return $core.withContext(function($ctx2) {
  7347. //>>excludeEnd("ctx");
  7348. $3=self._superclass();
  7349. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7350. $ctx2.sendIdx["superclass"]=1;
  7351. //>>excludeEnd("ctx");
  7352. $2=$recv($3)._notNil();
  7353. return $recv($2)._and_((function(){
  7354. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7355. return $core.withContext(function($ctx3) {
  7356. //>>excludeEnd("ctx");
  7357. return $recv(self._superclass())._canUnderstand_(aSelector);
  7358. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7359. }, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)});
  7360. //>>excludeEnd("ctx");
  7361. }));
  7362. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7363. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  7364. //>>excludeEnd("ctx");
  7365. }));
  7366. return $1;
  7367. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7368. }, function($ctx1) {$ctx1.fill(self,"canUnderstand:",{aSelector:aSelector},$globals.Behavior)});
  7369. //>>excludeEnd("ctx");
  7370. },
  7371. //>>excludeStart("ide", pragmas.excludeIdeData);
  7372. args: ["aSelector"],
  7373. source: "canUnderstand: aSelector\x0a\x09^ (self includesSelector: aSelector asString) or: [\x0a\x09\x09self superclass notNil and: [ self superclass canUnderstand: aSelector ]]",
  7374. referencedClasses: [],
  7375. //>>excludeEnd("ide");
  7376. messageSends: ["or:", "includesSelector:", "asString", "and:", "notNil", "superclass", "canUnderstand:"]
  7377. }),
  7378. $globals.Behavior);
  7379. $core.addMethod(
  7380. $core.method({
  7381. selector: "comment",
  7382. protocol: 'accessing',
  7383. fn: function (){
  7384. var self=this;
  7385. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7386. return $core.withContext(function($ctx1) {
  7387. //>>excludeEnd("ctx");
  7388. var $2,$1,$receiver;
  7389. $2=self._basicAt_("comment");
  7390. if(($receiver = $2) == null || $receiver.isNil){
  7391. $1="";
  7392. } else {
  7393. $1=$2;
  7394. };
  7395. return $1;
  7396. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7397. }, function($ctx1) {$ctx1.fill(self,"comment",{},$globals.Behavior)});
  7398. //>>excludeEnd("ctx");
  7399. },
  7400. //>>excludeStart("ide", pragmas.excludeIdeData);
  7401. args: [],
  7402. source: "comment\x0a\x09^ (self basicAt: 'comment') ifNil: [ '' ]",
  7403. referencedClasses: [],
  7404. //>>excludeEnd("ide");
  7405. messageSends: ["ifNil:", "basicAt:"]
  7406. }),
  7407. $globals.Behavior);
  7408. $core.addMethod(
  7409. $core.method({
  7410. selector: "comment:",
  7411. protocol: 'accessing',
  7412. fn: function (aString){
  7413. var self=this;
  7414. function $SystemAnnouncer(){return $globals.SystemAnnouncer||(typeof SystemAnnouncer=="undefined"?nil:SystemAnnouncer)}
  7415. function $ClassCommentChanged(){return $globals.ClassCommentChanged||(typeof ClassCommentChanged=="undefined"?nil:ClassCommentChanged)}
  7416. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7417. return $core.withContext(function($ctx1) {
  7418. //>>excludeEnd("ctx");
  7419. var $1,$2;
  7420. self._basicAt_put_("comment",aString);
  7421. $1=$recv($ClassCommentChanged())._new();
  7422. $recv($1)._theClass_(self);
  7423. $2=$recv($1)._yourself();
  7424. $recv($recv($SystemAnnouncer())._current())._announce_($2);
  7425. return self;
  7426. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7427. }, function($ctx1) {$ctx1.fill(self,"comment:",{aString:aString},$globals.Behavior)});
  7428. //>>excludeEnd("ctx");
  7429. },
  7430. //>>excludeStart("ide", pragmas.excludeIdeData);
  7431. args: ["aString"],
  7432. 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)",
  7433. referencedClasses: ["SystemAnnouncer", "ClassCommentChanged"],
  7434. //>>excludeEnd("ide");
  7435. messageSends: ["basicAt:put:", "announce:", "current", "theClass:", "new", "yourself"]
  7436. }),
  7437. $globals.Behavior);
  7438. $core.addMethod(
  7439. $core.method({
  7440. selector: "commentStamp",
  7441. protocol: 'accessing',
  7442. fn: function (){
  7443. var self=this;
  7444. function $ClassCommentReader(){return $globals.ClassCommentReader||(typeof ClassCommentReader=="undefined"?nil:ClassCommentReader)}
  7445. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7446. return $core.withContext(function($ctx1) {
  7447. //>>excludeEnd("ctx");
  7448. var $2,$3,$1;
  7449. $2=$recv($ClassCommentReader())._new();
  7450. $recv($2)._class_(self);
  7451. $3=$recv($2)._yourself();
  7452. $1=$3;
  7453. return $1;
  7454. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7455. }, function($ctx1) {$ctx1.fill(self,"commentStamp",{},$globals.Behavior)});
  7456. //>>excludeEnd("ctx");
  7457. },
  7458. //>>excludeStart("ide", pragmas.excludeIdeData);
  7459. args: [],
  7460. source: "commentStamp\x0a\x09^ ClassCommentReader new\x0a\x09class: self;\x0a\x09yourself",
  7461. referencedClasses: ["ClassCommentReader"],
  7462. //>>excludeEnd("ide");
  7463. messageSends: ["class:", "new", "yourself"]
  7464. }),
  7465. $globals.Behavior);
  7466. $core.addMethod(
  7467. $core.method({
  7468. selector: "commentStamp:prior:",
  7469. protocol: 'accessing',
  7470. fn: function (aStamp,prior){
  7471. var self=this;
  7472. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7473. return $core.withContext(function($ctx1) {
  7474. //>>excludeEnd("ctx");
  7475. var $1;
  7476. $1=self._commentStamp();
  7477. return $1;
  7478. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7479. }, function($ctx1) {$ctx1.fill(self,"commentStamp:prior:",{aStamp:aStamp,prior:prior},$globals.Behavior)});
  7480. //>>excludeEnd("ctx");
  7481. },
  7482. //>>excludeStart("ide", pragmas.excludeIdeData);
  7483. args: ["aStamp", "prior"],
  7484. source: "commentStamp: aStamp prior: prior\x0a\x09\x09^ self commentStamp",
  7485. referencedClasses: [],
  7486. //>>excludeEnd("ide");
  7487. messageSends: ["commentStamp"]
  7488. }),
  7489. $globals.Behavior);
  7490. $core.addMethod(
  7491. $core.method({
  7492. selector: "compile:",
  7493. protocol: 'compiling',
  7494. fn: function (aString){
  7495. var self=this;
  7496. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7497. return $core.withContext(function($ctx1) {
  7498. //>>excludeEnd("ctx");
  7499. var $1;
  7500. $1=self._compile_protocol_(aString,"");
  7501. return $1;
  7502. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7503. }, function($ctx1) {$ctx1.fill(self,"compile:",{aString:aString},$globals.Behavior)});
  7504. //>>excludeEnd("ctx");
  7505. },
  7506. //>>excludeStart("ide", pragmas.excludeIdeData);
  7507. args: ["aString"],
  7508. source: "compile: aString\x0a\x09^ self compile: aString protocol: ''",
  7509. referencedClasses: [],
  7510. //>>excludeEnd("ide");
  7511. messageSends: ["compile:protocol:"]
  7512. }),
  7513. $globals.Behavior);
  7514. $core.addMethod(
  7515. $core.method({
  7516. selector: "compile:protocol:",
  7517. protocol: 'compiling',
  7518. fn: function (aString,anotherString){
  7519. var self=this;
  7520. function $Compiler(){return $globals.Compiler||(typeof Compiler=="undefined"?nil:Compiler)}
  7521. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7522. return $core.withContext(function($ctx1) {
  7523. //>>excludeEnd("ctx");
  7524. var $1;
  7525. $1=$recv($recv($Compiler())._new())._install_forClass_protocol_(aString,self,anotherString);
  7526. return $1;
  7527. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7528. }, function($ctx1) {$ctx1.fill(self,"compile:protocol:",{aString:aString,anotherString:anotherString},$globals.Behavior)});
  7529. //>>excludeEnd("ctx");
  7530. },
  7531. //>>excludeStart("ide", pragmas.excludeIdeData);
  7532. args: ["aString", "anotherString"],
  7533. source: "compile: aString protocol: anotherString\x0a\x09^ Compiler new\x0a\x09\x09install: aString\x0a\x09\x09forClass: self\x0a\x09\x09protocol: anotherString",
  7534. referencedClasses: ["Compiler"],
  7535. //>>excludeEnd("ide");
  7536. messageSends: ["install:forClass:protocol:", "new"]
  7537. }),
  7538. $globals.Behavior);
  7539. $core.addMethod(
  7540. $core.method({
  7541. selector: "definition",
  7542. protocol: 'accessing',
  7543. fn: function (){
  7544. var self=this;
  7545. return "";
  7546. },
  7547. //>>excludeStart("ide", pragmas.excludeIdeData);
  7548. args: [],
  7549. source: "definition\x0a\x09^ ''",
  7550. referencedClasses: [],
  7551. //>>excludeEnd("ide");
  7552. messageSends: []
  7553. }),
  7554. $globals.Behavior);
  7555. $core.addMethod(
  7556. $core.method({
  7557. selector: "includesBehavior:",
  7558. protocol: 'testing',
  7559. fn: function (aClass){
  7560. var self=this;
  7561. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7562. return $core.withContext(function($ctx1) {
  7563. //>>excludeEnd("ctx");
  7564. var $1;
  7565. $1=$recv(self.__eq_eq(aClass))._or_((function(){
  7566. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7567. return $core.withContext(function($ctx2) {
  7568. //>>excludeEnd("ctx");
  7569. return self._inheritsFrom_(aClass);
  7570. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7571. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  7572. //>>excludeEnd("ctx");
  7573. }));
  7574. return $1;
  7575. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7576. }, function($ctx1) {$ctx1.fill(self,"includesBehavior:",{aClass:aClass},$globals.Behavior)});
  7577. //>>excludeEnd("ctx");
  7578. },
  7579. //>>excludeStart("ide", pragmas.excludeIdeData);
  7580. args: ["aClass"],
  7581. source: "includesBehavior: aClass\x0a\x09^ self == aClass or: [\x0a\x09\x09\x09self inheritsFrom: aClass ]",
  7582. referencedClasses: [],
  7583. //>>excludeEnd("ide");
  7584. messageSends: ["or:", "==", "inheritsFrom:"]
  7585. }),
  7586. $globals.Behavior);
  7587. $core.addMethod(
  7588. $core.method({
  7589. selector: "includesSelector:",
  7590. protocol: 'testing',
  7591. fn: function (aString){
  7592. var self=this;
  7593. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7594. return $core.withContext(function($ctx1) {
  7595. //>>excludeEnd("ctx");
  7596. var $1;
  7597. $1=$recv(self._methodDictionary())._includesKey_(aString);
  7598. return $1;
  7599. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7600. }, function($ctx1) {$ctx1.fill(self,"includesSelector:",{aString:aString},$globals.Behavior)});
  7601. //>>excludeEnd("ctx");
  7602. },
  7603. //>>excludeStart("ide", pragmas.excludeIdeData);
  7604. args: ["aString"],
  7605. source: "includesSelector: aString\x0a\x09^ self methodDictionary includesKey: aString",
  7606. referencedClasses: [],
  7607. //>>excludeEnd("ide");
  7608. messageSends: ["includesKey:", "methodDictionary"]
  7609. }),
  7610. $globals.Behavior);
  7611. $core.addMethod(
  7612. $core.method({
  7613. selector: "inheritsFrom:",
  7614. protocol: 'testing',
  7615. fn: function (aClass){
  7616. var self=this;
  7617. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7618. return $core.withContext(function($ctx1) {
  7619. //>>excludeEnd("ctx");
  7620. var $1,$4,$3,$2,$receiver;
  7621. $1=self._superclass();
  7622. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7623. $ctx1.sendIdx["superclass"]=1;
  7624. //>>excludeEnd("ctx");
  7625. if(($receiver = $1) == null || $receiver.isNil){
  7626. return false;
  7627. } else {
  7628. $1;
  7629. };
  7630. $4=self._superclass();
  7631. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7632. $ctx1.sendIdx["superclass"]=2;
  7633. //>>excludeEnd("ctx");
  7634. $3=$recv(aClass).__eq_eq($4);
  7635. $2=$recv($3)._or_((function(){
  7636. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7637. return $core.withContext(function($ctx2) {
  7638. //>>excludeEnd("ctx");
  7639. return $recv(self._superclass())._inheritsFrom_(aClass);
  7640. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7641. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
  7642. //>>excludeEnd("ctx");
  7643. }));
  7644. return $2;
  7645. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7646. }, function($ctx1) {$ctx1.fill(self,"inheritsFrom:",{aClass:aClass},$globals.Behavior)});
  7647. //>>excludeEnd("ctx");
  7648. },
  7649. //>>excludeStart("ide", pragmas.excludeIdeData);
  7650. args: ["aClass"],
  7651. source: "inheritsFrom: aClass\x0a\x09self superclass ifNil: [ ^ false ].\x0a\x0a\x09^ aClass == self superclass or: [ \x0a\x09\x09self superclass inheritsFrom: aClass ]",
  7652. referencedClasses: [],
  7653. //>>excludeEnd("ide");
  7654. messageSends: ["ifNil:", "superclass", "or:", "==", "inheritsFrom:"]
  7655. }),
  7656. $globals.Behavior);
  7657. $core.addMethod(
  7658. $core.method({
  7659. selector: "instanceVariableNames",
  7660. protocol: 'accessing',
  7661. fn: function (){
  7662. var self=this;
  7663. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7664. return $core.withContext(function($ctx1) {
  7665. //>>excludeEnd("ctx");
  7666. return self.iVarNames;
  7667. return self;
  7668. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7669. }, function($ctx1) {$ctx1.fill(self,"instanceVariableNames",{},$globals.Behavior)});
  7670. //>>excludeEnd("ctx");
  7671. },
  7672. //>>excludeStart("ide", pragmas.excludeIdeData);
  7673. args: [],
  7674. source: "instanceVariableNames\x0a\x09<return self.iVarNames>",
  7675. referencedClasses: [],
  7676. //>>excludeEnd("ide");
  7677. messageSends: []
  7678. }),
  7679. $globals.Behavior);
  7680. $core.addMethod(
  7681. $core.method({
  7682. selector: "isBehavior",
  7683. protocol: 'testing',
  7684. fn: function (){
  7685. var self=this;
  7686. return true;
  7687. },
  7688. //>>excludeStart("ide", pragmas.excludeIdeData);
  7689. args: [],
  7690. source: "isBehavior\x0a\x09^ true",
  7691. referencedClasses: [],
  7692. //>>excludeEnd("ide");
  7693. messageSends: []
  7694. }),
  7695. $globals.Behavior);
  7696. $core.addMethod(
  7697. $core.method({
  7698. selector: "javascriptConstructor",
  7699. protocol: 'accessing',
  7700. fn: function (){
  7701. var self=this;
  7702. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7703. return $core.withContext(function($ctx1) {
  7704. //>>excludeEnd("ctx");
  7705. return self.fn;
  7706. return self;
  7707. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7708. }, function($ctx1) {$ctx1.fill(self,"javascriptConstructor",{},$globals.Behavior)});
  7709. //>>excludeEnd("ctx");
  7710. },
  7711. //>>excludeStart("ide", pragmas.excludeIdeData);
  7712. args: [],
  7713. source: "javascriptConstructor\x0a\x09\x22Answer the JS constructor used to instantiate. See boot.js\x22\x0a\x09\x0a\x09<return self.fn>",
  7714. referencedClasses: [],
  7715. //>>excludeEnd("ide");
  7716. messageSends: []
  7717. }),
  7718. $globals.Behavior);
  7719. $core.addMethod(
  7720. $core.method({
  7721. selector: "javascriptConstructor:",
  7722. protocol: 'accessing',
  7723. fn: function (aJavaScriptFunction){
  7724. var self=this;
  7725. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7726. return $core.withContext(function($ctx1) {
  7727. //>>excludeEnd("ctx");
  7728. $core.setClassConstructor(self, aJavaScriptFunction);;
  7729. return self;
  7730. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7731. }, function($ctx1) {$ctx1.fill(self,"javascriptConstructor:",{aJavaScriptFunction:aJavaScriptFunction},$globals.Behavior)});
  7732. //>>excludeEnd("ctx");
  7733. },
  7734. //>>excludeStart("ide", pragmas.excludeIdeData);
  7735. args: ["aJavaScriptFunction"],
  7736. 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\x09<$core.setClassConstructor(self, aJavaScriptFunction);>",
  7737. referencedClasses: [],
  7738. //>>excludeEnd("ide");
  7739. messageSends: []
  7740. }),
  7741. $globals.Behavior);
  7742. $core.addMethod(
  7743. $core.method({
  7744. selector: "lookupSelector:",
  7745. protocol: 'accessing',
  7746. fn: function (selector){
  7747. var self=this;
  7748. var lookupClass;
  7749. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7750. return $core.withContext(function($ctx1) {
  7751. //>>excludeEnd("ctx");
  7752. var $1,$2;
  7753. var $early={};
  7754. try {
  7755. lookupClass=self;
  7756. $recv((function(){
  7757. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7758. return $core.withContext(function($ctx2) {
  7759. //>>excludeEnd("ctx");
  7760. return $recv(lookupClass).__eq(nil);
  7761. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7762. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  7763. //>>excludeEnd("ctx");
  7764. }))._whileFalse_((function(){
  7765. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7766. return $core.withContext(function($ctx2) {
  7767. //>>excludeEnd("ctx");
  7768. $1=$recv(lookupClass)._includesSelector_(selector);
  7769. if($core.assert($1)){
  7770. $2=$recv(lookupClass)._methodAt_(selector);
  7771. throw $early=[$2];
  7772. };
  7773. lookupClass=$recv(lookupClass)._superclass();
  7774. return lookupClass;
  7775. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7776. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
  7777. //>>excludeEnd("ctx");
  7778. }));
  7779. return nil;
  7780. }
  7781. catch(e) {if(e===$early)return e[0]; throw e}
  7782. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7783. }, function($ctx1) {$ctx1.fill(self,"lookupSelector:",{selector:selector,lookupClass:lookupClass},$globals.Behavior)});
  7784. //>>excludeEnd("ctx");
  7785. },
  7786. //>>excludeStart("ide", pragmas.excludeIdeData);
  7787. args: ["selector"],
  7788. 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| lookupClass |\x0a\x09\x0a\x09lookupClass := self.\x0a\x09[ lookupClass = nil ] whileFalse: [\x0a\x09\x09(lookupClass includesSelector: selector)\x0a\x09\x09\x09\x09ifTrue: [ ^ lookupClass methodAt: selector ].\x0a\x09\x09\x09lookupClass := lookupClass superclass ].\x0a\x09^ nil",
  7789. referencedClasses: [],
  7790. //>>excludeEnd("ide");
  7791. messageSends: ["whileFalse:", "=", "ifTrue:", "includesSelector:", "methodAt:", "superclass"]
  7792. }),
  7793. $globals.Behavior);
  7794. $core.addMethod(
  7795. $core.method({
  7796. selector: "methodAt:",
  7797. protocol: 'accessing',
  7798. fn: function (aString){
  7799. var self=this;
  7800. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7801. return $core.withContext(function($ctx1) {
  7802. //>>excludeEnd("ctx");
  7803. var $1;
  7804. $1=$recv(self._methodDictionary())._at_(aString);
  7805. return $1;
  7806. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7807. }, function($ctx1) {$ctx1.fill(self,"methodAt:",{aString:aString},$globals.Behavior)});
  7808. //>>excludeEnd("ctx");
  7809. },
  7810. //>>excludeStart("ide", pragmas.excludeIdeData);
  7811. args: ["aString"],
  7812. source: "methodAt: aString\x0a\x09^ self methodDictionary at: aString",
  7813. referencedClasses: [],
  7814. //>>excludeEnd("ide");
  7815. messageSends: ["at:", "methodDictionary"]
  7816. }),
  7817. $globals.Behavior);
  7818. $core.addMethod(
  7819. $core.method({
  7820. selector: "methodDictionary",
  7821. protocol: 'accessing',
  7822. fn: function (){
  7823. var self=this;
  7824. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7825. return $core.withContext(function($ctx1) {
  7826. //>>excludeEnd("ctx");
  7827. var dict = $globals.HashedCollection._new();
  7828. var methods = self.methods;
  7829. Object.keys(methods).forEach(function(i) {
  7830. if(methods[i].selector) {
  7831. dict._at_put_(methods[i].selector, methods[i]);
  7832. }
  7833. });
  7834. return dict;
  7835. return self;
  7836. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7837. }, function($ctx1) {$ctx1.fill(self,"methodDictionary",{},$globals.Behavior)});
  7838. //>>excludeEnd("ctx");
  7839. },
  7840. //>>excludeStart("ide", pragmas.excludeIdeData);
  7841. args: [],
  7842. source: "methodDictionary\x0a\x09<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>",
  7843. referencedClasses: [],
  7844. //>>excludeEnd("ide");
  7845. messageSends: []
  7846. }),
  7847. $globals.Behavior);
  7848. $core.addMethod(
  7849. $core.method({
  7850. selector: "methodTemplate",
  7851. protocol: 'accessing',
  7852. fn: function (){
  7853. var self=this;
  7854. function $String(){return $globals.String||(typeof String=="undefined"?nil:String)}
  7855. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7856. return $core.withContext(function($ctx1) {
  7857. //>>excludeEnd("ctx");
  7858. var $3,$4,$2,$7,$8,$6,$9,$5,$10,$1;
  7859. $1=$recv($String())._streamContents_((function(stream){
  7860. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7861. return $core.withContext(function($ctx2) {
  7862. //>>excludeEnd("ctx");
  7863. $recv(stream)._nextPutAll_("messageSelectorAndArgumentNames");
  7864. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7865. $ctx2.sendIdx["nextPutAll:"]=1;
  7866. //>>excludeEnd("ctx");
  7867. $3=$recv($String())._lf();
  7868. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7869. $ctx2.sendIdx["lf"]=1;
  7870. //>>excludeEnd("ctx");
  7871. $4=$recv($String())._tab();
  7872. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7873. $ctx2.sendIdx["tab"]=1;
  7874. //>>excludeEnd("ctx");
  7875. $2=$recv($3).__comma($4);
  7876. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7877. $ctx2.sendIdx[","]=1;
  7878. //>>excludeEnd("ctx");
  7879. $recv(stream)._nextPutAll_($2);
  7880. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7881. $ctx2.sendIdx["nextPutAll:"]=2;
  7882. //>>excludeEnd("ctx");
  7883. $recv(stream)._nextPutAll_("\x22comment stating purpose of message\x22");
  7884. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7885. $ctx2.sendIdx["nextPutAll:"]=3;
  7886. //>>excludeEnd("ctx");
  7887. $7=$recv($String())._lf();
  7888. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7889. $ctx2.sendIdx["lf"]=2;
  7890. //>>excludeEnd("ctx");
  7891. $8=$recv($String())._lf();
  7892. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7893. $ctx2.sendIdx["lf"]=3;
  7894. //>>excludeEnd("ctx");
  7895. $6=$recv($7).__comma($8);
  7896. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7897. $ctx2.sendIdx[","]=3;
  7898. //>>excludeEnd("ctx");
  7899. $9=$recv($String())._tab();
  7900. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7901. $ctx2.sendIdx["tab"]=2;
  7902. //>>excludeEnd("ctx");
  7903. $5=$recv($6).__comma($9);
  7904. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7905. $ctx2.sendIdx[","]=2;
  7906. //>>excludeEnd("ctx");
  7907. $recv(stream)._nextPutAll_($5);
  7908. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7909. $ctx2.sendIdx["nextPutAll:"]=4;
  7910. //>>excludeEnd("ctx");
  7911. $recv(stream)._nextPutAll_("| temporary variable names |");
  7912. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7913. $ctx2.sendIdx["nextPutAll:"]=5;
  7914. //>>excludeEnd("ctx");
  7915. $recv(stream)._nextPutAll_($recv($recv($String())._lf()).__comma($recv($String())._tab()));
  7916. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7917. $ctx2.sendIdx["nextPutAll:"]=6;
  7918. //>>excludeEnd("ctx");
  7919. $10=$recv(stream)._nextPutAll_("statements");
  7920. return $10;
  7921. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7922. }, function($ctx2) {$ctx2.fillBlock({stream:stream},$ctx1,1)});
  7923. //>>excludeEnd("ctx");
  7924. }));
  7925. return $1;
  7926. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7927. }, function($ctx1) {$ctx1.fill(self,"methodTemplate",{},$globals.Behavior)});
  7928. //>>excludeEnd("ctx");
  7929. },
  7930. //>>excludeStart("ide", pragmas.excludeIdeData);
  7931. args: [],
  7932. source: "methodTemplate\x0a\x09^ String streamContents: [ :stream |\x0a\x09\x09stream \x0a\x09\x09\x09nextPutAll: 'messageSelectorAndArgumentNames';\x0a\x09\x09\x09nextPutAll: String lf, String tab;\x0a\x09\x09\x09nextPutAll: '\x22comment stating purpose of message\x22';\x0a\x09\x09\x09nextPutAll: String lf, String lf, String tab;\x0a\x09\x09\x09nextPutAll: '| temporary variable names |';\x0a\x09\x09\x09nextPutAll: String lf, String tab;\x0a\x09\x09\x09nextPutAll: 'statements' ]",
  7933. referencedClasses: ["String"],
  7934. //>>excludeEnd("ide");
  7935. messageSends: ["streamContents:", "nextPutAll:", ",", "lf", "tab"]
  7936. }),
  7937. $globals.Behavior);
  7938. $core.addMethod(
  7939. $core.method({
  7940. selector: "methods",
  7941. protocol: 'accessing',
  7942. fn: function (){
  7943. var self=this;
  7944. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7945. return $core.withContext(function($ctx1) {
  7946. //>>excludeEnd("ctx");
  7947. var $1;
  7948. $1=$recv(self._methodDictionary())._values();
  7949. return $1;
  7950. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7951. }, function($ctx1) {$ctx1.fill(self,"methods",{},$globals.Behavior)});
  7952. //>>excludeEnd("ctx");
  7953. },
  7954. //>>excludeStart("ide", pragmas.excludeIdeData);
  7955. args: [],
  7956. source: "methods\x0a\x09^ self methodDictionary values",
  7957. referencedClasses: [],
  7958. //>>excludeEnd("ide");
  7959. messageSends: ["values", "methodDictionary"]
  7960. }),
  7961. $globals.Behavior);
  7962. $core.addMethod(
  7963. $core.method({
  7964. selector: "methodsFor:",
  7965. protocol: 'accessing',
  7966. fn: function (aString){
  7967. var self=this;
  7968. function $ClassCategoryReader(){return $globals.ClassCategoryReader||(typeof ClassCategoryReader=="undefined"?nil:ClassCategoryReader)}
  7969. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7970. return $core.withContext(function($ctx1) {
  7971. //>>excludeEnd("ctx");
  7972. var $2,$3,$1;
  7973. $2=$recv($ClassCategoryReader())._new();
  7974. $recv($2)._class_category_(self,aString);
  7975. $3=$recv($2)._yourself();
  7976. $1=$3;
  7977. return $1;
  7978. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7979. }, function($ctx1) {$ctx1.fill(self,"methodsFor:",{aString:aString},$globals.Behavior)});
  7980. //>>excludeEnd("ctx");
  7981. },
  7982. //>>excludeStart("ide", pragmas.excludeIdeData);
  7983. args: ["aString"],
  7984. source: "methodsFor: aString\x0a\x09^ ClassCategoryReader new\x0a\x09\x09class: self category: aString;\x0a\x09\x09yourself",
  7985. referencedClasses: ["ClassCategoryReader"],
  7986. //>>excludeEnd("ide");
  7987. messageSends: ["class:category:", "new", "yourself"]
  7988. }),
  7989. $globals.Behavior);
  7990. $core.addMethod(
  7991. $core.method({
  7992. selector: "methodsFor:stamp:",
  7993. protocol: 'accessing',
  7994. fn: function (aString,aStamp){
  7995. var self=this;
  7996. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  7997. return $core.withContext(function($ctx1) {
  7998. //>>excludeEnd("ctx");
  7999. var $1;
  8000. $1=self._methodsFor_(aString);
  8001. return $1;
  8002. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8003. }, function($ctx1) {$ctx1.fill(self,"methodsFor:stamp:",{aString:aString,aStamp:aStamp},$globals.Behavior)});
  8004. //>>excludeEnd("ctx");
  8005. },
  8006. //>>excludeStart("ide", pragmas.excludeIdeData);
  8007. args: ["aString", "aStamp"],
  8008. source: "methodsFor: aString stamp: aStamp\x0a\x09\x22Added for file-in compatibility, ignores stamp.\x22\x0a\x09^ self methodsFor: aString",
  8009. referencedClasses: [],
  8010. //>>excludeEnd("ide");
  8011. messageSends: ["methodsFor:"]
  8012. }),
  8013. $globals.Behavior);
  8014. $core.addMethod(
  8015. $core.method({
  8016. selector: "methodsInProtocol:",
  8017. protocol: 'accessing',
  8018. fn: function (aString){
  8019. var self=this;
  8020. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8021. return $core.withContext(function($ctx1) {
  8022. //>>excludeEnd("ctx");
  8023. var $1;
  8024. $1=$recv(self._methods())._select_((function(each){
  8025. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8026. return $core.withContext(function($ctx2) {
  8027. //>>excludeEnd("ctx");
  8028. return $recv($recv(each)._protocol()).__eq(aString);
  8029. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8030. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  8031. //>>excludeEnd("ctx");
  8032. }));
  8033. return $1;
  8034. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8035. }, function($ctx1) {$ctx1.fill(self,"methodsInProtocol:",{aString:aString},$globals.Behavior)});
  8036. //>>excludeEnd("ctx");
  8037. },
  8038. //>>excludeStart("ide", pragmas.excludeIdeData);
  8039. args: ["aString"],
  8040. source: "methodsInProtocol: aString\x0a\x09^ self methods select: [ :each | each protocol = aString ]",
  8041. referencedClasses: [],
  8042. //>>excludeEnd("ide");
  8043. messageSends: ["select:", "methods", "=", "protocol"]
  8044. }),
  8045. $globals.Behavior);
  8046. $core.addMethod(
  8047. $core.method({
  8048. selector: "name",
  8049. protocol: 'accessing',
  8050. fn: function (){
  8051. var self=this;
  8052. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8053. return $core.withContext(function($ctx1) {
  8054. //>>excludeEnd("ctx");
  8055. return self.className || nil;
  8056. return self;
  8057. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8058. }, function($ctx1) {$ctx1.fill(self,"name",{},$globals.Behavior)});
  8059. //>>excludeEnd("ctx");
  8060. },
  8061. //>>excludeStart("ide", pragmas.excludeIdeData);
  8062. args: [],
  8063. source: "name\x0a\x09<return self.className || nil>",
  8064. referencedClasses: [],
  8065. //>>excludeEnd("ide");
  8066. messageSends: []
  8067. }),
  8068. $globals.Behavior);
  8069. $core.addMethod(
  8070. $core.method({
  8071. selector: "new",
  8072. protocol: 'instance creation',
  8073. fn: function (){
  8074. var self=this;
  8075. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8076. return $core.withContext(function($ctx1) {
  8077. //>>excludeEnd("ctx");
  8078. var $1;
  8079. $1=$recv(self._basicNew())._initialize();
  8080. return $1;
  8081. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8082. }, function($ctx1) {$ctx1.fill(self,"new",{},$globals.Behavior)});
  8083. //>>excludeEnd("ctx");
  8084. },
  8085. //>>excludeStart("ide", pragmas.excludeIdeData);
  8086. args: [],
  8087. source: "new\x0a\x09^ self basicNew initialize",
  8088. referencedClasses: [],
  8089. //>>excludeEnd("ide");
  8090. messageSends: ["initialize", "basicNew"]
  8091. }),
  8092. $globals.Behavior);
  8093. $core.addMethod(
  8094. $core.method({
  8095. selector: "organization",
  8096. protocol: 'accessing',
  8097. fn: function (){
  8098. var self=this;
  8099. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8100. return $core.withContext(function($ctx1) {
  8101. //>>excludeEnd("ctx");
  8102. var $1;
  8103. $1=self._basicAt_("organization");
  8104. return $1;
  8105. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8106. }, function($ctx1) {$ctx1.fill(self,"organization",{},$globals.Behavior)});
  8107. //>>excludeEnd("ctx");
  8108. },
  8109. //>>excludeStart("ide", pragmas.excludeIdeData);
  8110. args: [],
  8111. source: "organization\x0a\x09^ self basicAt: 'organization'",
  8112. referencedClasses: [],
  8113. //>>excludeEnd("ide");
  8114. messageSends: ["basicAt:"]
  8115. }),
  8116. $globals.Behavior);
  8117. $core.addMethod(
  8118. $core.method({
  8119. selector: "ownMethods",
  8120. protocol: 'accessing',
  8121. fn: function (){
  8122. var self=this;
  8123. function $OrderedCollection(){return $globals.OrderedCollection||(typeof OrderedCollection=="undefined"?nil:OrderedCollection)}
  8124. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8125. return $core.withContext(function($ctx1) {
  8126. //>>excludeEnd("ctx");
  8127. var $2,$1;
  8128. $1=$recv($recv(self._ownProtocols())._inject_into_($recv($OrderedCollection())._new(),(function(acc,each){
  8129. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8130. return $core.withContext(function($ctx2) {
  8131. //>>excludeEnd("ctx");
  8132. return $recv(acc).__comma(self._methodsInProtocol_(each));
  8133. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8134. }, function($ctx2) {$ctx2.fillBlock({acc:acc,each:each},$ctx1,1)});
  8135. //>>excludeEnd("ctx");
  8136. })))._sorted_((function(a,b){
  8137. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8138. return $core.withContext(function($ctx2) {
  8139. //>>excludeEnd("ctx");
  8140. $2=$recv(a)._selector();
  8141. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8142. $ctx2.sendIdx["selector"]=1;
  8143. //>>excludeEnd("ctx");
  8144. return $recv($2).__lt_eq($recv(b)._selector());
  8145. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8146. }, function($ctx2) {$ctx2.fillBlock({a:a,b:b},$ctx1,2)});
  8147. //>>excludeEnd("ctx");
  8148. }));
  8149. return $1;
  8150. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8151. }, function($ctx1) {$ctx1.fill(self,"ownMethods",{},$globals.Behavior)});
  8152. //>>excludeEnd("ctx");
  8153. },
  8154. //>>excludeStart("ide", pragmas.excludeIdeData);
  8155. args: [],
  8156. source: "ownMethods\x0a\x09\x22Answer the methods of the receiver that are not package extensions\x22\x0a\x0a\x09^ (self ownProtocols \x0a\x09\x09inject: OrderedCollection new\x0a\x09\x09into: [ :acc :each | acc, (self methodsInProtocol: each) ])\x0a\x09\x09\x09sorted: [ :a :b | a selector <= b selector ]",
  8157. referencedClasses: ["OrderedCollection"],
  8158. //>>excludeEnd("ide");
  8159. messageSends: ["sorted:", "inject:into:", "ownProtocols", "new", ",", "methodsInProtocol:", "<=", "selector"]
  8160. }),
  8161. $globals.Behavior);
  8162. $core.addMethod(
  8163. $core.method({
  8164. selector: "ownProtocols",
  8165. protocol: 'accessing',
  8166. fn: function (){
  8167. var self=this;
  8168. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8169. return $core.withContext(function($ctx1) {
  8170. //>>excludeEnd("ctx");
  8171. var $1;
  8172. $1=$recv(self._protocols())._reject_((function(each){
  8173. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8174. return $core.withContext(function($ctx2) {
  8175. //>>excludeEnd("ctx");
  8176. return $recv(each)._match_("^\x5c*");
  8177. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8178. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  8179. //>>excludeEnd("ctx");
  8180. }));
  8181. return $1;
  8182. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8183. }, function($ctx1) {$ctx1.fill(self,"ownProtocols",{},$globals.Behavior)});
  8184. //>>excludeEnd("ctx");
  8185. },
  8186. //>>excludeStart("ide", pragmas.excludeIdeData);
  8187. args: [],
  8188. 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*' ]",
  8189. referencedClasses: [],
  8190. //>>excludeEnd("ide");
  8191. messageSends: ["reject:", "protocols", "match:"]
  8192. }),
  8193. $globals.Behavior);
  8194. $core.addMethod(
  8195. $core.method({
  8196. selector: "protocols",
  8197. protocol: 'accessing',
  8198. fn: function (){
  8199. var self=this;
  8200. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8201. return $core.withContext(function($ctx1) {
  8202. //>>excludeEnd("ctx");
  8203. var $1;
  8204. $1=$recv($recv(self._organization())._elements())._sorted();
  8205. return $1;
  8206. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8207. }, function($ctx1) {$ctx1.fill(self,"protocols",{},$globals.Behavior)});
  8208. //>>excludeEnd("ctx");
  8209. },
  8210. //>>excludeStart("ide", pragmas.excludeIdeData);
  8211. args: [],
  8212. source: "protocols\x0a\x09^ self organization elements sorted",
  8213. referencedClasses: [],
  8214. //>>excludeEnd("ide");
  8215. messageSends: ["sorted", "elements", "organization"]
  8216. }),
  8217. $globals.Behavior);
  8218. $core.addMethod(
  8219. $core.method({
  8220. selector: "protocolsDo:",
  8221. protocol: 'enumerating',
  8222. fn: function (aBlock){
  8223. var self=this;
  8224. var methodsByProtocol;
  8225. function $HashedCollection(){return $globals.HashedCollection||(typeof HashedCollection=="undefined"?nil:HashedCollection)}
  8226. function $Array(){return $globals.Array||(typeof Array=="undefined"?nil:Array)}
  8227. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8228. return $core.withContext(function($ctx1) {
  8229. //>>excludeEnd("ctx");
  8230. methodsByProtocol=$recv($HashedCollection())._new();
  8231. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8232. $ctx1.sendIdx["new"]=1;
  8233. //>>excludeEnd("ctx");
  8234. $recv(self._methodDictionary())._valuesDo_((function(m){
  8235. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8236. return $core.withContext(function($ctx2) {
  8237. //>>excludeEnd("ctx");
  8238. return $recv($recv(methodsByProtocol)._at_ifAbsentPut_($recv(m)._protocol(),(function(){
  8239. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8240. return $core.withContext(function($ctx3) {
  8241. //>>excludeEnd("ctx");
  8242. return $recv($Array())._new();
  8243. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8244. }, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)});
  8245. //>>excludeEnd("ctx");
  8246. })))._add_(m);
  8247. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8248. }, function($ctx2) {$ctx2.fillBlock({m:m},$ctx1,1)});
  8249. //>>excludeEnd("ctx");
  8250. }));
  8251. $recv(self._protocols())._do_((function(protocol){
  8252. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8253. return $core.withContext(function($ctx2) {
  8254. //>>excludeEnd("ctx");
  8255. return $recv(aBlock)._value_value_(protocol,$recv(methodsByProtocol)._at_(protocol));
  8256. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8257. }, function($ctx2) {$ctx2.fillBlock({protocol:protocol},$ctx1,3)});
  8258. //>>excludeEnd("ctx");
  8259. }));
  8260. return self;
  8261. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8262. }, function($ctx1) {$ctx1.fill(self,"protocolsDo:",{aBlock:aBlock,methodsByProtocol:methodsByProtocol},$globals.Behavior)});
  8263. //>>excludeEnd("ctx");
  8264. },
  8265. //>>excludeStart("ide", pragmas.excludeIdeData);
  8266. args: ["aBlock"],
  8267. 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) ]",
  8268. referencedClasses: ["HashedCollection", "Array"],
  8269. //>>excludeEnd("ide");
  8270. messageSends: ["new", "valuesDo:", "methodDictionary", "add:", "at:ifAbsentPut:", "protocol", "do:", "protocols", "value:value:", "at:"]
  8271. }),
  8272. $globals.Behavior);
  8273. $core.addMethod(
  8274. $core.method({
  8275. selector: "prototype",
  8276. protocol: 'accessing',
  8277. fn: function (){
  8278. var self=this;
  8279. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8280. return $core.withContext(function($ctx1) {
  8281. //>>excludeEnd("ctx");
  8282. return self.fn.prototype;
  8283. return self;
  8284. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8285. }, function($ctx1) {$ctx1.fill(self,"prototype",{},$globals.Behavior)});
  8286. //>>excludeEnd("ctx");
  8287. },
  8288. //>>excludeStart("ide", pragmas.excludeIdeData);
  8289. args: [],
  8290. source: "prototype\x0a\x09<return self.fn.prototype>",
  8291. referencedClasses: [],
  8292. //>>excludeEnd("ide");
  8293. messageSends: []
  8294. }),
  8295. $globals.Behavior);
  8296. $core.addMethod(
  8297. $core.method({
  8298. selector: "recompile",
  8299. protocol: 'compiling',
  8300. fn: function (){
  8301. var self=this;
  8302. function $Compiler(){return $globals.Compiler||(typeof Compiler=="undefined"?nil:Compiler)}
  8303. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8304. return $core.withContext(function($ctx1) {
  8305. //>>excludeEnd("ctx");
  8306. var $1;
  8307. $1=$recv($recv($Compiler())._new())._recompile_(self);
  8308. return $1;
  8309. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8310. }, function($ctx1) {$ctx1.fill(self,"recompile",{},$globals.Behavior)});
  8311. //>>excludeEnd("ctx");
  8312. },
  8313. //>>excludeStart("ide", pragmas.excludeIdeData);
  8314. args: [],
  8315. source: "recompile\x0a\x09^ Compiler new recompile: self",
  8316. referencedClasses: ["Compiler"],
  8317. //>>excludeEnd("ide");
  8318. messageSends: ["recompile:", "new"]
  8319. }),
  8320. $globals.Behavior);
  8321. $core.addMethod(
  8322. $core.method({
  8323. selector: "removeCompiledMethod:",
  8324. protocol: 'compiling',
  8325. fn: function (aMethod){
  8326. var self=this;
  8327. function $SystemAnnouncer(){return $globals.SystemAnnouncer||(typeof SystemAnnouncer=="undefined"?nil:SystemAnnouncer)}
  8328. function $MethodRemoved(){return $globals.MethodRemoved||(typeof MethodRemoved=="undefined"?nil:MethodRemoved)}
  8329. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8330. return $core.withContext(function($ctx1) {
  8331. //>>excludeEnd("ctx");
  8332. var $1,$2;
  8333. self._basicRemoveCompiledMethod_(aMethod);
  8334. self._removeProtocolIfEmpty_($recv(aMethod)._protocol());
  8335. $1=$recv($MethodRemoved())._new();
  8336. $recv($1)._method_(aMethod);
  8337. $2=$recv($1)._yourself();
  8338. $recv($recv($SystemAnnouncer())._current())._announce_($2);
  8339. return self;
  8340. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8341. }, function($ctx1) {$ctx1.fill(self,"removeCompiledMethod:",{aMethod:aMethod},$globals.Behavior)});
  8342. //>>excludeEnd("ctx");
  8343. },
  8344. //>>excludeStart("ide", pragmas.excludeIdeData);
  8345. args: ["aMethod"],
  8346. source: "removeCompiledMethod: aMethod\x0a\x09self basicRemoveCompiledMethod: aMethod.\x0a\x09\x0a\x09self removeProtocolIfEmpty: aMethod protocol.\x0a\x09\x0a\x09SystemAnnouncer current\x0a\x09\x09announce: (MethodRemoved new\x0a\x09\x09\x09method: aMethod;\x0a\x09\x09\x09yourself)",
  8347. referencedClasses: ["SystemAnnouncer", "MethodRemoved"],
  8348. //>>excludeEnd("ide");
  8349. messageSends: ["basicRemoveCompiledMethod:", "removeProtocolIfEmpty:", "protocol", "announce:", "current", "method:", "new", "yourself"]
  8350. }),
  8351. $globals.Behavior);
  8352. $core.addMethod(
  8353. $core.method({
  8354. selector: "removeProtocolIfEmpty:",
  8355. protocol: 'accessing',
  8356. fn: function (aString){
  8357. var self=this;
  8358. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8359. return $core.withContext(function($ctx1) {
  8360. //>>excludeEnd("ctx");
  8361. $recv(self._methods())._detect_ifNone_((function(each){
  8362. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8363. return $core.withContext(function($ctx2) {
  8364. //>>excludeEnd("ctx");
  8365. return $recv($recv(each)._protocol()).__eq(aString);
  8366. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8367. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  8368. //>>excludeEnd("ctx");
  8369. }),(function(){
  8370. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8371. return $core.withContext(function($ctx2) {
  8372. //>>excludeEnd("ctx");
  8373. return $recv(self._organization())._removeElement_(aString);
  8374. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8375. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
  8376. //>>excludeEnd("ctx");
  8377. }));
  8378. return self;
  8379. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8380. }, function($ctx1) {$ctx1.fill(self,"removeProtocolIfEmpty:",{aString:aString},$globals.Behavior)});
  8381. //>>excludeEnd("ctx");
  8382. },
  8383. //>>excludeStart("ide", pragmas.excludeIdeData);
  8384. args: ["aString"],
  8385. source: "removeProtocolIfEmpty: aString\x0a\x09self methods\x0a\x09\x09detect: [ :each | each protocol = aString ]\x0a\x09\x09ifNone: [ self organization removeElement: aString ]",
  8386. referencedClasses: [],
  8387. //>>excludeEnd("ide");
  8388. messageSends: ["detect:ifNone:", "methods", "=", "protocol", "removeElement:", "organization"]
  8389. }),
  8390. $globals.Behavior);
  8391. $core.addMethod(
  8392. $core.method({
  8393. selector: "selectors",
  8394. protocol: 'accessing',
  8395. fn: function (){
  8396. var self=this;
  8397. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8398. return $core.withContext(function($ctx1) {
  8399. //>>excludeEnd("ctx");
  8400. var $1;
  8401. $1=$recv(self._methodDictionary())._keys();
  8402. return $1;
  8403. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8404. }, function($ctx1) {$ctx1.fill(self,"selectors",{},$globals.Behavior)});
  8405. //>>excludeEnd("ctx");
  8406. },
  8407. //>>excludeStart("ide", pragmas.excludeIdeData);
  8408. args: [],
  8409. source: "selectors\x0a\x09^ self methodDictionary keys",
  8410. referencedClasses: [],
  8411. //>>excludeEnd("ide");
  8412. messageSends: ["keys", "methodDictionary"]
  8413. }),
  8414. $globals.Behavior);
  8415. $core.addMethod(
  8416. $core.method({
  8417. selector: "subclasses",
  8418. protocol: 'accessing',
  8419. fn: function (){
  8420. var self=this;
  8421. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8422. return $core.withContext(function($ctx1) {
  8423. //>>excludeEnd("ctx");
  8424. self._subclassResponsibility();
  8425. return self;
  8426. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8427. }, function($ctx1) {$ctx1.fill(self,"subclasses",{},$globals.Behavior)});
  8428. //>>excludeEnd("ctx");
  8429. },
  8430. //>>excludeStart("ide", pragmas.excludeIdeData);
  8431. args: [],
  8432. source: "subclasses\x0a\x09self subclassResponsibility",
  8433. referencedClasses: [],
  8434. //>>excludeEnd("ide");
  8435. messageSends: ["subclassResponsibility"]
  8436. }),
  8437. $globals.Behavior);
  8438. $core.addMethod(
  8439. $core.method({
  8440. selector: "superclass",
  8441. protocol: 'accessing',
  8442. fn: function (){
  8443. var self=this;
  8444. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8445. return $core.withContext(function($ctx1) {
  8446. //>>excludeEnd("ctx");
  8447. return self.superclass || nil;
  8448. return self;
  8449. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8450. }, function($ctx1) {$ctx1.fill(self,"superclass",{},$globals.Behavior)});
  8451. //>>excludeEnd("ctx");
  8452. },
  8453. //>>excludeStart("ide", pragmas.excludeIdeData);
  8454. args: [],
  8455. source: "superclass\x0a\x09<return self.superclass || nil>",
  8456. referencedClasses: [],
  8457. //>>excludeEnd("ide");
  8458. messageSends: []
  8459. }),
  8460. $globals.Behavior);
  8461. $core.addMethod(
  8462. $core.method({
  8463. selector: "theMetaClass",
  8464. protocol: 'accessing',
  8465. fn: function (){
  8466. var self=this;
  8467. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8468. return $core.withContext(function($ctx1) {
  8469. //>>excludeEnd("ctx");
  8470. var $1;
  8471. $1=self._class();
  8472. return $1;
  8473. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8474. }, function($ctx1) {$ctx1.fill(self,"theMetaClass",{},$globals.Behavior)});
  8475. //>>excludeEnd("ctx");
  8476. },
  8477. //>>excludeStart("ide", pragmas.excludeIdeData);
  8478. args: [],
  8479. source: "theMetaClass\x0a\x09^ self class",
  8480. referencedClasses: [],
  8481. //>>excludeEnd("ide");
  8482. messageSends: ["class"]
  8483. }),
  8484. $globals.Behavior);
  8485. $core.addMethod(
  8486. $core.method({
  8487. selector: "theNonMetaClass",
  8488. protocol: 'accessing',
  8489. fn: function (){
  8490. var self=this;
  8491. return self;
  8492. },
  8493. //>>excludeStart("ide", pragmas.excludeIdeData);
  8494. args: [],
  8495. source: "theNonMetaClass\x0a\x09^ self",
  8496. referencedClasses: [],
  8497. //>>excludeEnd("ide");
  8498. messageSends: []
  8499. }),
  8500. $globals.Behavior);
  8501. $core.addMethod(
  8502. $core.method({
  8503. selector: "withAllSubclasses",
  8504. protocol: 'accessing',
  8505. fn: function (){
  8506. var self=this;
  8507. function $Array(){return $globals.Array||(typeof Array=="undefined"?nil:Array)}
  8508. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8509. return $core.withContext(function($ctx1) {
  8510. //>>excludeEnd("ctx");
  8511. var $2,$3,$1;
  8512. $2=$recv($Array())._with_(self);
  8513. $recv($2)._addAll_(self._allSubclasses());
  8514. $3=$recv($2)._yourself();
  8515. $1=$3;
  8516. return $1;
  8517. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8518. }, function($ctx1) {$ctx1.fill(self,"withAllSubclasses",{},$globals.Behavior)});
  8519. //>>excludeEnd("ctx");
  8520. },
  8521. //>>excludeStart("ide", pragmas.excludeIdeData);
  8522. args: [],
  8523. source: "withAllSubclasses\x0a\x09^ (Array with: self) addAll: self allSubclasses; yourself",
  8524. referencedClasses: ["Array"],
  8525. //>>excludeEnd("ide");
  8526. messageSends: ["addAll:", "with:", "allSubclasses", "yourself"]
  8527. }),
  8528. $globals.Behavior);
  8529. $core.addClass('Class', $globals.Behavior, [], 'Kernel-Classes');
  8530. //>>excludeStart("ide", pragmas.excludeIdeData);
  8531. $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.";
  8532. //>>excludeEnd("ide");
  8533. $core.addMethod(
  8534. $core.method({
  8535. selector: "asJavascript",
  8536. protocol: 'converting',
  8537. fn: function (){
  8538. var self=this;
  8539. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8540. return $core.withContext(function($ctx1) {
  8541. //>>excludeEnd("ctx");
  8542. var $1;
  8543. $1="$globals.".__comma(self._name());
  8544. return $1;
  8545. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8546. }, function($ctx1) {$ctx1.fill(self,"asJavascript",{},$globals.Class)});
  8547. //>>excludeEnd("ctx");
  8548. },
  8549. //>>excludeStart("ide", pragmas.excludeIdeData);
  8550. args: [],
  8551. source: "asJavascript\x0a\x09^ '$globals.', self name",
  8552. referencedClasses: [],
  8553. //>>excludeEnd("ide");
  8554. messageSends: [",", "name"]
  8555. }),
  8556. $globals.Class);
  8557. $core.addMethod(
  8558. $core.method({
  8559. selector: "browse",
  8560. protocol: 'browsing',
  8561. fn: function (){
  8562. var self=this;
  8563. function $Finder(){return $globals.Finder||(typeof Finder=="undefined"?nil:Finder)}
  8564. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8565. return $core.withContext(function($ctx1) {
  8566. //>>excludeEnd("ctx");
  8567. $recv($Finder())._findClass_(self);
  8568. return self;
  8569. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8570. }, function($ctx1) {$ctx1.fill(self,"browse",{},$globals.Class)});
  8571. //>>excludeEnd("ctx");
  8572. },
  8573. //>>excludeStart("ide", pragmas.excludeIdeData);
  8574. args: [],
  8575. source: "browse\x0a\x09Finder findClass: self",
  8576. referencedClasses: ["Finder"],
  8577. //>>excludeEnd("ide");
  8578. messageSends: ["findClass:"]
  8579. }),
  8580. $globals.Class);
  8581. $core.addMethod(
  8582. $core.method({
  8583. selector: "category",
  8584. protocol: 'accessing',
  8585. fn: function (){
  8586. var self=this;
  8587. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8588. return $core.withContext(function($ctx1) {
  8589. //>>excludeEnd("ctx");
  8590. var $2,$1,$receiver;
  8591. $2=self._package();
  8592. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8593. $ctx1.sendIdx["package"]=1;
  8594. //>>excludeEnd("ctx");
  8595. if(($receiver = $2) == null || $receiver.isNil){
  8596. $1="Unclassified";
  8597. } else {
  8598. $1=$recv(self._package())._name();
  8599. };
  8600. return $1;
  8601. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8602. }, function($ctx1) {$ctx1.fill(self,"category",{},$globals.Class)});
  8603. //>>excludeEnd("ctx");
  8604. },
  8605. //>>excludeStart("ide", pragmas.excludeIdeData);
  8606. args: [],
  8607. source: "category\x0a\x09^ self package ifNil: [ 'Unclassified' ] ifNotNil: [ self package name ]",
  8608. referencedClasses: [],
  8609. //>>excludeEnd("ide");
  8610. messageSends: ["ifNil:ifNotNil:", "package", "name"]
  8611. }),
  8612. $globals.Class);
  8613. $core.addMethod(
  8614. $core.method({
  8615. selector: "definition",
  8616. protocol: 'accessing',
  8617. fn: function (){
  8618. var self=this;
  8619. function $String(){return $globals.String||(typeof String=="undefined"?nil:String)}
  8620. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8621. return $core.withContext(function($ctx1) {
  8622. //>>excludeEnd("ctx");
  8623. var $3,$4,$2,$5,$6,$7,$1;
  8624. $1=$recv($String())._streamContents_((function(stream){
  8625. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8626. return $core.withContext(function($ctx2) {
  8627. //>>excludeEnd("ctx");
  8628. $recv(stream)._nextPutAll_($recv(self._superclass())._asString());
  8629. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8630. $ctx2.sendIdx["nextPutAll:"]=1;
  8631. //>>excludeEnd("ctx");
  8632. $recv(stream)._nextPutAll_(" subclass: #");
  8633. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8634. $ctx2.sendIdx["nextPutAll:"]=2;
  8635. //>>excludeEnd("ctx");
  8636. $recv(stream)._nextPutAll_(self._name());
  8637. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8638. $ctx2.sendIdx["nextPutAll:"]=3;
  8639. //>>excludeEnd("ctx");
  8640. $3=$recv($String())._lf();
  8641. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8642. $ctx2.sendIdx["lf"]=1;
  8643. //>>excludeEnd("ctx");
  8644. $4=$recv($String())._tab();
  8645. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8646. $ctx2.sendIdx["tab"]=1;
  8647. //>>excludeEnd("ctx");
  8648. $2=$recv($3).__comma($4);
  8649. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8650. $ctx2.sendIdx[","]=1;
  8651. //>>excludeEnd("ctx");
  8652. $recv(stream)._nextPutAll_($2);
  8653. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8654. $ctx2.sendIdx["nextPutAll:"]=4;
  8655. //>>excludeEnd("ctx");
  8656. $5=$recv(stream)._nextPutAll_("instanceVariableNames: '");
  8657. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8658. $ctx2.sendIdx["nextPutAll:"]=5;
  8659. //>>excludeEnd("ctx");
  8660. $5;
  8661. $recv(self._instanceVariableNames())._do_separatedBy_((function(each){
  8662. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8663. return $core.withContext(function($ctx3) {
  8664. //>>excludeEnd("ctx");
  8665. return $recv(stream)._nextPutAll_(each);
  8666. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8667. $ctx3.sendIdx["nextPutAll:"]=6;
  8668. //>>excludeEnd("ctx");
  8669. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8670. }, function($ctx3) {$ctx3.fillBlock({each:each},$ctx2,2)});
  8671. //>>excludeEnd("ctx");
  8672. }),(function(){
  8673. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8674. return $core.withContext(function($ctx3) {
  8675. //>>excludeEnd("ctx");
  8676. return $recv(stream)._nextPutAll_(" ");
  8677. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8678. $ctx3.sendIdx["nextPutAll:"]=7;
  8679. //>>excludeEnd("ctx");
  8680. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8681. }, function($ctx3) {$ctx3.fillBlock({},$ctx2,3)});
  8682. //>>excludeEnd("ctx");
  8683. }));
  8684. $6=$recv("'".__comma($recv($String())._lf())).__comma($recv($String())._tab());
  8685. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8686. $ctx2.sendIdx[","]=2;
  8687. //>>excludeEnd("ctx");
  8688. $recv(stream)._nextPutAll_($6);
  8689. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8690. $ctx2.sendIdx["nextPutAll:"]=8;
  8691. //>>excludeEnd("ctx");
  8692. $recv(stream)._nextPutAll_("package: '");
  8693. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8694. $ctx2.sendIdx["nextPutAll:"]=9;
  8695. //>>excludeEnd("ctx");
  8696. $recv(stream)._nextPutAll_(self._category());
  8697. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8698. $ctx2.sendIdx["nextPutAll:"]=10;
  8699. //>>excludeEnd("ctx");
  8700. $7=$recv(stream)._nextPutAll_("'");
  8701. return $7;
  8702. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8703. }, function($ctx2) {$ctx2.fillBlock({stream:stream},$ctx1,1)});
  8704. //>>excludeEnd("ctx");
  8705. }));
  8706. return $1;
  8707. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8708. }, function($ctx1) {$ctx1.fill(self,"definition",{},$globals.Class)});
  8709. //>>excludeEnd("ctx");
  8710. },
  8711. //>>excludeStart("ide", pragmas.excludeIdeData);
  8712. args: [],
  8713. source: "definition\x0a\x09^ String streamContents: [ :stream |\x0a\x09\x09stream\x0a\x09\x09\x09nextPutAll: self superclass asString;\x0a\x09\x09\x09nextPutAll: ' subclass: #';\x0a\x09\x09\x09nextPutAll: self name;\x0a\x09\x09\x09nextPutAll: String lf, String tab;\x0a\x09\x09\x09nextPutAll: 'instanceVariableNames: '''.\x0a\x09\x09self instanceVariableNames\x0a\x09\x09\x09do: [ :each | stream nextPutAll: each ]\x0a\x09\x09\x09separatedBy: [ stream nextPutAll: ' ' ].\x0a\x09\x09stream\x0a\x09\x09\x09nextPutAll: '''', String lf, String tab;\x0a\x09\x09\x09nextPutAll: 'package: ''';\x0a\x09\x09\x09nextPutAll: self category;\x0a\x09\x09\x09nextPutAll: '''' ]",
  8714. referencedClasses: ["String"],
  8715. //>>excludeEnd("ide");
  8716. messageSends: ["streamContents:", "nextPutAll:", "asString", "superclass", "name", ",", "lf", "tab", "do:separatedBy:", "instanceVariableNames", "category"]
  8717. }),
  8718. $globals.Class);
  8719. $core.addMethod(
  8720. $core.method({
  8721. selector: "heliosClass",
  8722. protocol: 'accessing',
  8723. fn: function (){
  8724. var self=this;
  8725. return "class";
  8726. },
  8727. //>>excludeStart("ide", pragmas.excludeIdeData);
  8728. args: [],
  8729. source: "heliosClass\x0a\x09\x22Should be an Helios extension. Unfortunately, since helios can browse remote\x0a\x09environments, we can't extend base classes\x22\x0a\x09\x0a\x09^ 'class'",
  8730. referencedClasses: [],
  8731. //>>excludeEnd("ide");
  8732. messageSends: []
  8733. }),
  8734. $globals.Class);
  8735. $core.addMethod(
  8736. $core.method({
  8737. selector: "isClass",
  8738. protocol: 'testing',
  8739. fn: function (){
  8740. var self=this;
  8741. return true;
  8742. },
  8743. //>>excludeStart("ide", pragmas.excludeIdeData);
  8744. args: [],
  8745. source: "isClass\x0a\x09^ true",
  8746. referencedClasses: [],
  8747. //>>excludeEnd("ide");
  8748. messageSends: []
  8749. }),
  8750. $globals.Class);
  8751. $core.addMethod(
  8752. $core.method({
  8753. selector: "package",
  8754. protocol: 'accessing',
  8755. fn: function (){
  8756. var self=this;
  8757. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8758. return $core.withContext(function($ctx1) {
  8759. //>>excludeEnd("ctx");
  8760. var $1;
  8761. $1=self._basicAt_("pkg");
  8762. return $1;
  8763. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8764. }, function($ctx1) {$ctx1.fill(self,"package",{},$globals.Class)});
  8765. //>>excludeEnd("ctx");
  8766. },
  8767. //>>excludeStart("ide", pragmas.excludeIdeData);
  8768. args: [],
  8769. source: "package\x0a\x09^ self basicAt: 'pkg'",
  8770. referencedClasses: [],
  8771. //>>excludeEnd("ide");
  8772. messageSends: ["basicAt:"]
  8773. }),
  8774. $globals.Class);
  8775. $core.addMethod(
  8776. $core.method({
  8777. selector: "package:",
  8778. protocol: 'accessing',
  8779. fn: function (aPackage){
  8780. var self=this;
  8781. var oldPackage;
  8782. function $SystemAnnouncer(){return $globals.SystemAnnouncer||(typeof SystemAnnouncer=="undefined"?nil:SystemAnnouncer)}
  8783. function $ClassMoved(){return $globals.ClassMoved||(typeof ClassMoved=="undefined"?nil:ClassMoved)}
  8784. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8785. return $core.withContext(function($ctx1) {
  8786. //>>excludeEnd("ctx");
  8787. var $2,$1,$3,$4,$5;
  8788. $2=self._package();
  8789. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8790. $ctx1.sendIdx["package"]=1;
  8791. //>>excludeEnd("ctx");
  8792. $1=$recv($2).__eq(aPackage);
  8793. if($core.assert($1)){
  8794. return self;
  8795. };
  8796. oldPackage=self._package();
  8797. self._basicAt_put_("pkg",aPackage);
  8798. $3=$recv(oldPackage)._organization();
  8799. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8800. $ctx1.sendIdx["organization"]=1;
  8801. //>>excludeEnd("ctx");
  8802. $recv($3)._removeElement_(self);
  8803. $recv($recv(aPackage)._organization())._addElement_(self);
  8804. $4=$recv($ClassMoved())._new();
  8805. $recv($4)._theClass_(self);
  8806. $recv($4)._oldPackage_(oldPackage);
  8807. $5=$recv($4)._yourself();
  8808. $recv($recv($SystemAnnouncer())._current())._announce_($5);
  8809. return self;
  8810. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8811. }, function($ctx1) {$ctx1.fill(self,"package:",{aPackage:aPackage,oldPackage:oldPackage},$globals.Class)});
  8812. //>>excludeEnd("ctx");
  8813. },
  8814. //>>excludeStart("ide", pragmas.excludeIdeData);
  8815. args: ["aPackage"],
  8816. source: "package: aPackage\x0a\x09| oldPackage |\x0a\x09\x0a\x09self package = aPackage ifTrue: [ ^ self ].\x0a\x09\x0a\x09oldPackage := self package.\x0a\x09\x0a\x09self basicAt: 'pkg' put: aPackage.\x0a\x09oldPackage organization removeElement: self.\x0a\x09aPackage organization addElement: self.\x0a\x0a\x09SystemAnnouncer current announce: (ClassMoved new\x0a\x09\x09theClass: self;\x0a\x09\x09oldPackage: oldPackage;\x0a\x09\x09yourself)",
  8817. referencedClasses: ["SystemAnnouncer", "ClassMoved"],
  8818. //>>excludeEnd("ide");
  8819. messageSends: ["ifTrue:", "=", "package", "basicAt:put:", "removeElement:", "organization", "addElement:", "announce:", "current", "theClass:", "new", "oldPackage:", "yourself"]
  8820. }),
  8821. $globals.Class);
  8822. $core.addMethod(
  8823. $core.method({
  8824. selector: "printOn:",
  8825. protocol: 'printing',
  8826. fn: function (aStream){
  8827. var self=this;
  8828. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8829. return $core.withContext(function($ctx1) {
  8830. //>>excludeEnd("ctx");
  8831. $recv(aStream)._nextPutAll_(self._name());
  8832. return self;
  8833. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8834. }, function($ctx1) {$ctx1.fill(self,"printOn:",{aStream:aStream},$globals.Class)});
  8835. //>>excludeEnd("ctx");
  8836. },
  8837. //>>excludeStart("ide", pragmas.excludeIdeData);
  8838. args: ["aStream"],
  8839. source: "printOn: aStream\x0a\x09aStream nextPutAll: self name",
  8840. referencedClasses: [],
  8841. //>>excludeEnd("ide");
  8842. messageSends: ["nextPutAll:", "name"]
  8843. }),
  8844. $globals.Class);
  8845. $core.addMethod(
  8846. $core.method({
  8847. selector: "rename:",
  8848. protocol: 'accessing',
  8849. fn: function (aString){
  8850. var self=this;
  8851. function $ClassBuilder(){return $globals.ClassBuilder||(typeof ClassBuilder=="undefined"?nil:ClassBuilder)}
  8852. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8853. return $core.withContext(function($ctx1) {
  8854. //>>excludeEnd("ctx");
  8855. $recv($recv($ClassBuilder())._new())._renameClass_to_(self,aString);
  8856. return self;
  8857. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8858. }, function($ctx1) {$ctx1.fill(self,"rename:",{aString:aString},$globals.Class)});
  8859. //>>excludeEnd("ctx");
  8860. },
  8861. //>>excludeStart("ide", pragmas.excludeIdeData);
  8862. args: ["aString"],
  8863. source: "rename: aString\x0a\x09ClassBuilder new renameClass: self to: aString",
  8864. referencedClasses: ["ClassBuilder"],
  8865. //>>excludeEnd("ide");
  8866. messageSends: ["renameClass:to:", "new"]
  8867. }),
  8868. $globals.Class);
  8869. $core.addMethod(
  8870. $core.method({
  8871. selector: "subclass:instanceVariableNames:",
  8872. protocol: 'class creation',
  8873. fn: function (aString,anotherString){
  8874. var self=this;
  8875. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8876. return $core.withContext(function($ctx1) {
  8877. //>>excludeEnd("ctx");
  8878. var $1;
  8879. $1=self._subclass_instanceVariableNames_package_(aString,anotherString,nil);
  8880. return $1;
  8881. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8882. }, function($ctx1) {$ctx1.fill(self,"subclass:instanceVariableNames:",{aString:aString,anotherString:anotherString},$globals.Class)});
  8883. //>>excludeEnd("ctx");
  8884. },
  8885. //>>excludeStart("ide", pragmas.excludeIdeData);
  8886. args: ["aString", "anotherString"],
  8887. source: "subclass: aString instanceVariableNames: anotherString\x0a\x09\x22Kept for file-in compatibility.\x22\x0a\x09^ self subclass: aString instanceVariableNames: anotherString package: nil",
  8888. referencedClasses: [],
  8889. //>>excludeEnd("ide");
  8890. messageSends: ["subclass:instanceVariableNames:package:"]
  8891. }),
  8892. $globals.Class);
  8893. $core.addMethod(
  8894. $core.method({
  8895. selector: "subclass:instanceVariableNames:category:",
  8896. protocol: 'class creation',
  8897. fn: function (aString,aString2,aString3){
  8898. var self=this;
  8899. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8900. return $core.withContext(function($ctx1) {
  8901. //>>excludeEnd("ctx");
  8902. var $1;
  8903. $1=self._subclass_instanceVariableNames_package_(aString,aString2,aString3);
  8904. return $1;
  8905. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8906. }, function($ctx1) {$ctx1.fill(self,"subclass:instanceVariableNames:category:",{aString:aString,aString2:aString2,aString3:aString3},$globals.Class)});
  8907. //>>excludeEnd("ctx");
  8908. },
  8909. //>>excludeStart("ide", pragmas.excludeIdeData);
  8910. args: ["aString", "aString2", "aString3"],
  8911. source: "subclass: aString instanceVariableNames: aString2 category: aString3\x0a\x09\x22Kept for file-in compatibility.\x22\x0a\x09^ self subclass: aString instanceVariableNames: aString2 package: aString3",
  8912. referencedClasses: [],
  8913. //>>excludeEnd("ide");
  8914. messageSends: ["subclass:instanceVariableNames:package:"]
  8915. }),
  8916. $globals.Class);
  8917. $core.addMethod(
  8918. $core.method({
  8919. selector: "subclass:instanceVariableNames:classVariableNames:poolDictionaries:category:",
  8920. protocol: 'class creation',
  8921. fn: function (aString,aString2,classVars,pools,aString3){
  8922. var self=this;
  8923. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8924. return $core.withContext(function($ctx1) {
  8925. //>>excludeEnd("ctx");
  8926. var $1;
  8927. $1=self._subclass_instanceVariableNames_package_(aString,aString2,aString3);
  8928. return $1;
  8929. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8930. }, function($ctx1) {$ctx1.fill(self,"subclass:instanceVariableNames:classVariableNames:poolDictionaries:category:",{aString:aString,aString2:aString2,classVars:classVars,pools:pools,aString3:aString3},$globals.Class)});
  8931. //>>excludeEnd("ctx");
  8932. },
  8933. //>>excludeStart("ide", pragmas.excludeIdeData);
  8934. args: ["aString", "aString2", "classVars", "pools", "aString3"],
  8935. 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",
  8936. referencedClasses: [],
  8937. //>>excludeEnd("ide");
  8938. messageSends: ["subclass:instanceVariableNames:package:"]
  8939. }),
  8940. $globals.Class);
  8941. $core.addMethod(
  8942. $core.method({
  8943. selector: "subclass:instanceVariableNames:package:",
  8944. protocol: 'class creation',
  8945. fn: function (aString,aString2,aString3){
  8946. var self=this;
  8947. function $ClassBuilder(){return $globals.ClassBuilder||(typeof ClassBuilder=="undefined"?nil:ClassBuilder)}
  8948. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8949. return $core.withContext(function($ctx1) {
  8950. //>>excludeEnd("ctx");
  8951. var $1;
  8952. $1=$recv($recv($ClassBuilder())._new())._superclass_subclass_instanceVariableNames_package_(self,$recv(aString)._asString(),aString2,aString3);
  8953. return $1;
  8954. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8955. }, function($ctx1) {$ctx1.fill(self,"subclass:instanceVariableNames:package:",{aString:aString,aString2:aString2,aString3:aString3},$globals.Class)});
  8956. //>>excludeEnd("ctx");
  8957. },
  8958. //>>excludeStart("ide", pragmas.excludeIdeData);
  8959. args: ["aString", "aString2", "aString3"],
  8960. source: "subclass: aString instanceVariableNames: aString2 package: aString3\x0a\x09^ ClassBuilder new\x0a\x09\x09superclass: self subclass: aString asString instanceVariableNames: aString2 package: aString3",
  8961. referencedClasses: ["ClassBuilder"],
  8962. //>>excludeEnd("ide");
  8963. messageSends: ["superclass:subclass:instanceVariableNames:package:", "new", "asString"]
  8964. }),
  8965. $globals.Class);
  8966. $core.addMethod(
  8967. $core.method({
  8968. selector: "subclasses",
  8969. protocol: 'accessing',
  8970. fn: function (){
  8971. var self=this;
  8972. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8973. return $core.withContext(function($ctx1) {
  8974. //>>excludeEnd("ctx");
  8975. return self.subclasses._copy();
  8976. return self;
  8977. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  8978. }, function($ctx1) {$ctx1.fill(self,"subclasses",{},$globals.Class)});
  8979. //>>excludeEnd("ctx");
  8980. },
  8981. //>>excludeStart("ide", pragmas.excludeIdeData);
  8982. args: [],
  8983. source: "subclasses\x0a\x09<return self.subclasses._copy()>",
  8984. referencedClasses: [],
  8985. //>>excludeEnd("ide");
  8986. messageSends: []
  8987. }),
  8988. $globals.Class);
  8989. $core.addClass('Metaclass', $globals.Behavior, [], 'Kernel-Classes');
  8990. //>>excludeStart("ide", pragmas.excludeIdeData);
  8991. $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.";
  8992. //>>excludeEnd("ide");
  8993. $core.addMethod(
  8994. $core.method({
  8995. selector: "asJavascript",
  8996. protocol: 'converting',
  8997. fn: function (){
  8998. var self=this;
  8999. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  9000. return $core.withContext(function($ctx1) {
  9001. //>>excludeEnd("ctx");
  9002. var $1;
  9003. $1=$recv("$globals.".__comma($recv(self._instanceClass())._name())).__comma(".klass");
  9004. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  9005. $ctx1.sendIdx[","]=1;
  9006. //>>excludeEnd("ctx");
  9007. return $1;
  9008. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  9009. }, function($ctx1) {$ctx1.fill(self,"asJavascript",{},$globals.Metaclass)});
  9010. //>>excludeEnd("ctx");
  9011. },
  9012. //>>excludeStart("ide", pragmas.excludeIdeData);
  9013. args: [],
  9014. source: "asJavascript\x0a\x09^ '$globals.', self instanceClass name, '.klass'",
  9015. referencedClasses: [],
  9016. //>>excludeEnd("ide");
  9017. messageSends: [",", "name", "instanceClass"]
  9018. }),
  9019. $globals.Metaclass);
  9020. $core.addMethod(
  9021. $core.method({
  9022. selector: "definition",
  9023. protocol: 'accessing',
  9024. fn: function (){
  9025. var self=this;
  9026. function $String(){return $globals.String||(typeof String=="undefined"?nil:String)}
  9027. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  9028. return $core.withContext(function($ctx1) {
  9029. //>>excludeEnd("ctx");
  9030. var $2,$1;
  9031. $1=$recv($String())._streamContents_((function(stream){
  9032. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  9033. return $core.withContext(function($ctx2) {
  9034. //>>excludeEnd("ctx");
  9035. $recv(stream)._nextPutAll_(self._asString());
  9036. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  9037. $ctx2.sendIdx["nextPutAll:"]=1;
  9038. //>>excludeEnd("ctx");
  9039. $2=$recv(stream)._nextPutAll_(" instanceVariableNames: '");
  9040. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  9041. $ctx2.sendIdx["nextPutAll:"]=2;
  9042. //>>excludeEnd("ctx");
  9043. $2;
  9044. $recv(self._instanceVariableNames())._do_separatedBy_((function(each){
  9045. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  9046. return $core.withContext(function($ctx3) {
  9047. //>>excludeEnd("ctx");
  9048. return $recv(stream)._nextPutAll_(each);
  9049. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  9050. $ctx3.sendIdx["nextPutAll:"]=3;
  9051. //>>excludeEnd("ctx");
  9052. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  9053. }, function($ctx3) {$ctx3.fillBlock({each:each},$ctx2,2)});
  9054. //>>excludeEnd("ctx");
  9055. }),(function(){
  9056. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  9057. return $core.withContext(function($ctx3) {
  9058. //>>excludeEnd("ctx");
  9059. return $recv(stream)._nextPutAll_(" ");
  9060. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  9061. $ctx3.sendIdx["nextPutAll:"]=4;
  9062. //>>excludeEnd("ctx");
  9063. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  9064. }, function($ctx3) {$ctx3.fillBlock({},$ctx2,3)});
  9065. //>>excludeEnd("ctx");
  9066. }));
  9067. return $recv(stream)._nextPutAll_("'");
  9068. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  9069. }, function($ctx2) {$ctx2.fillBlock({stream:stream},$ctx1,1)});
  9070. //>>excludeEnd("ctx");
  9071. }));
  9072. return $1;
  9073. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  9074. }, function($ctx1) {$ctx1.fill(self,"definition",{},$globals.Metaclass)});
  9075. //>>excludeEnd("ctx");
  9076. },
  9077. //>>excludeStart("ide", pragmas.excludeIdeData);
  9078. args: [],
  9079. source: "definition\x0a\x09^ String streamContents: [ :stream |\x0a\x09\x09stream\x0a\x09\x09\x09nextPutAll: self asString;\x0a\x09\x09\x09nextPutAll: ' instanceVariableNames: '''.\x0a\x09\x09self instanceVariableNames\x0a\x09\x09\x09do: [ :each | stream nextPutAll: each ]\x0a\x09\x09\x09separatedBy: [ stream nextPutAll: ' ' ].\x0a\x09\x09stream nextPutAll: '''' ]",
  9080. referencedClasses: ["String"],
  9081. //>>excludeEnd("ide");
  9082. messageSends: ["streamContents:", "nextPutAll:", "asString", "do:separatedBy:", "instanceVariableNames"]
  9083. }),
  9084. $globals.Metaclass);
  9085. $core.addMethod(
  9086. $core.method({
  9087. selector: "instanceClass",
  9088. protocol: 'accessing',
  9089. fn: function (){
  9090. var self=this;
  9091. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  9092. return $core.withContext(function($ctx1) {
  9093. //>>excludeEnd("ctx");
  9094. return self.instanceClass;
  9095. return self;
  9096. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  9097. }, function($ctx1) {$ctx1.fill(self,"instanceClass",{},$globals.Metaclass)});
  9098. //>>excludeEnd("ctx");
  9099. },
  9100. //>>excludeStart("ide", pragmas.excludeIdeData);
  9101. args: [],
  9102. source: "instanceClass\x0a\x09<return self.instanceClass>",
  9103. referencedClasses: [],
  9104. //>>excludeEnd("ide");
  9105. messageSends: []
  9106. }),
  9107. $globals.Metaclass);
  9108. $core.addMethod(
  9109. $core.method({
  9110. selector: "instanceVariableNames:",
  9111. protocol: 'accessing',
  9112. fn: function (aCollection){
  9113. var self=this;
  9114. function $ClassBuilder(){return $globals.ClassBuilder||(typeof ClassBuilder=="undefined"?nil:ClassBuilder)}
  9115. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  9116. return $core.withContext(function($ctx1) {
  9117. //>>excludeEnd("ctx");
  9118. $recv($recv($ClassBuilder())._new())._class_instanceVariableNames_(self,aCollection);
  9119. return self;
  9120. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  9121. }, function($ctx1) {$ctx1.fill(self,"instanceVariableNames:",{aCollection:aCollection},$globals.Metaclass)});
  9122. //>>excludeEnd("ctx");
  9123. },
  9124. //>>excludeStart("ide", pragmas.excludeIdeData);
  9125. args: ["aCollection"],
  9126. source: "instanceVariableNames: aCollection\x0a\x09ClassBuilder new\x0a\x09\x09class: self instanceVariableNames: aCollection",
  9127. referencedClasses: ["ClassBuilder"],
  9128. //>>excludeEnd("ide");
  9129. messageSends: ["class:instanceVariableNames:", "new"]
  9130. }),
  9131. $globals.Metaclass);
  9132. $core.addMethod(
  9133. $core.method({
  9134. selector: "isMetaclass",
  9135. protocol: 'testing',
  9136. fn: function (){
  9137. var self=this;
  9138. return true;
  9139. },
  9140. //>>excludeStart("ide", pragmas.excludeIdeData);
  9141. args: [],
  9142. source: "isMetaclass\x0a\x09^ true",
  9143. referencedClasses: [],
  9144. //>>excludeEnd("ide");
  9145. messageSends: []
  9146. }),
  9147. $globals.Metaclass);
  9148. $core.addMethod(
  9149. $core.method({
  9150. selector: "package",
  9151. protocol: 'accessing',
  9152. fn: function (){
  9153. var self=this;
  9154. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  9155. return $core.withContext(function($ctx1) {
  9156. //>>excludeEnd("ctx");
  9157. var $1;
  9158. $1=$recv(self._instanceClass())._package();
  9159. return $1;
  9160. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  9161. }, function($ctx1) {$ctx1.fill(self,"package",{},$globals.Metaclass)});
  9162. //>>excludeEnd("ctx");
  9163. },
  9164. //>>excludeStart("ide", pragmas.excludeIdeData);
  9165. args: [],
  9166. source: "package\x0a\x09^ self instanceClass package",
  9167. referencedClasses: [],
  9168. //>>excludeEnd("ide");
  9169. messageSends: ["package", "instanceClass"]
  9170. }),
  9171. $globals.Metaclass);
  9172. $core.addMethod(
  9173. $core.method({
  9174. selector: "printOn:",
  9175. protocol: 'printing',
  9176. fn: function (aStream){
  9177. var self=this;
  9178. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  9179. return $core.withContext(function($ctx1) {
  9180. //>>excludeEnd("ctx");
  9181. var $1;
  9182. $recv(aStream)._nextPutAll_($recv(self._instanceClass())._name());
  9183. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  9184. $ctx1.sendIdx["nextPutAll:"]=1;
  9185. //>>excludeEnd("ctx");
  9186. $1=$recv(aStream)._nextPutAll_(" class");
  9187. return self;
  9188. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  9189. }, function($ctx1) {$ctx1.fill(self,"printOn:",{aStream:aStream},$globals.Metaclass)});
  9190. //>>excludeEnd("ctx");
  9191. },
  9192. //>>excludeStart("ide", pragmas.excludeIdeData);
  9193. args: ["aStream"],
  9194. source: "printOn: aStream\x0a\x09aStream\x0a\x09\x09nextPutAll: self instanceClass name;\x0a\x09\x09nextPutAll: ' class'",
  9195. referencedClasses: [],
  9196. //>>excludeEnd("ide");
  9197. messageSends: ["nextPutAll:", "name", "instanceClass"]
  9198. }),
  9199. $globals.Metaclass);
  9200. $core.addMethod(
  9201. $core.method({
  9202. selector: "subclasses",
  9203. protocol: 'accessing',
  9204. fn: function (){
  9205. var self=this;
  9206. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  9207. return $core.withContext(function($ctx1) {
  9208. //>>excludeEnd("ctx");
  9209. var $1;
  9210. $1=$recv($recv($recv(self._instanceClass())._subclasses())._select_((function(each){
  9211. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  9212. return $core.withContext(function($ctx2) {
  9213. //>>excludeEnd("ctx");
  9214. return $recv($recv(each)._isMetaclass())._not();
  9215. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  9216. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  9217. //>>excludeEnd("ctx");
  9218. })))._collect_((function(each){
  9219. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  9220. return $core.withContext(function($ctx2) {
  9221. //>>excludeEnd("ctx");
  9222. return $recv(each)._theMetaClass();
  9223. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  9224. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,2)});
  9225. //>>excludeEnd("ctx");
  9226. }));
  9227. return $1;
  9228. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  9229. }, function($ctx1) {$ctx1.fill(self,"subclasses",{},$globals.Metaclass)});
  9230. //>>excludeEnd("ctx");
  9231. },
  9232. //>>excludeStart("ide", pragmas.excludeIdeData);
  9233. args: [],
  9234. source: "subclasses\x0a\x09^ (self instanceClass subclasses \x0a\x09\x09select: [ :each | each isMetaclass not ])\x0a\x09\x09collect: [ :each | each theMetaClass ]",
  9235. referencedClasses: [],
  9236. //>>excludeEnd("ide");
  9237. messageSends: ["collect:", "select:", "subclasses", "instanceClass", "not", "isMetaclass", "theMetaClass"]
  9238. }),
  9239. $globals.Metaclass);
  9240. $core.addMethod(
  9241. $core.method({
  9242. selector: "theMetaClass",
  9243. protocol: 'accessing',
  9244. fn: function (){
  9245. var self=this;
  9246. return self;
  9247. },
  9248. //>>excludeStart("ide", pragmas.excludeIdeData);
  9249. args: [],
  9250. source: "theMetaClass\x0a\x09^ self",
  9251. referencedClasses: [],
  9252. //>>excludeEnd("ide");
  9253. messageSends: []
  9254. }),
  9255. $globals.Metaclass);
  9256. $core.addMethod(
  9257. $core.method({
  9258. selector: "theNonMetaClass",
  9259. protocol: 'accessing',
  9260. fn: function (){
  9261. var self=this;
  9262. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  9263. return $core.withContext(function($ctx1) {
  9264. //>>excludeEnd("ctx");
  9265. var $1;
  9266. $1=self._instanceClass();
  9267. return $1;
  9268. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  9269. }, function($ctx1) {$ctx1.fill(self,"theNonMetaClass",{},$globals.Metaclass)});
  9270. //>>excludeEnd("ctx");
  9271. },
  9272. //>>excludeStart("ide", pragmas.excludeIdeData);
  9273. args: [],
  9274. source: "theNonMetaClass\x0a\x09^ self instanceClass",
  9275. referencedClasses: [],
  9276. //>>excludeEnd("ide");
  9277. messageSends: ["instanceClass"]
  9278. }),
  9279. $globals.Metaclass);
  9280. $core.addClass('ClassBuilder', $globals.Object, [], 'Kernel-Classes');
  9281. //>>excludeStart("ide", pragmas.excludeIdeData);
  9282. $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:`.";
  9283. //>>excludeEnd("ide");
  9284. $core.addMethod(
  9285. $core.method({
  9286. selector: "addSubclassOf:named:instanceVariableNames:package:",
  9287. protocol: 'class definition',
  9288. fn: function (aClass,className,aCollection,packageName){
  9289. var self=this;
  9290. var theClass,thePackage;
  9291. function $Smalltalk(){return $globals.Smalltalk||(typeof Smalltalk=="undefined"?nil:Smalltalk)}
  9292. function $Package(){return $globals.Package||(typeof Package=="undefined"?nil:Package)}
  9293. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  9294. return $core.withContext(function($ctx1) {
  9295. //>>excludeEnd("ctx");
  9296. var $1,$2,$3,$4,$receiver;
  9297. theClass=$recv($recv($Smalltalk())._globals())._at_(className);
  9298. thePackage=$recv($Package())._named_(packageName);
  9299. $1=theClass;
  9300. if(($receiver = $1) == null || $receiver.isNil){
  9301. $1;
  9302. } else {
  9303. $recv(theClass)._package_(thePackage);
  9304. $2=$recv($recv(theClass)._superclass()).__eq_eq(aClass);
  9305. if(!$core.assert($2)){
  9306. $3=self._migrateClassNamed_superclass_instanceVariableNames_package_(className,aClass,aCollection,packageName);
  9307. return $3;
  9308. };
  9309. };
  9310. $4=self._basicAddSubclassOf_named_instanceVariableNames_package_(aClass,className,aCollection,packageName);
  9311. return $4;
  9312. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  9313. }, function($ctx1) {$ctx1.fill(self,"addSubclassOf:named:instanceVariableNames:package:",{aClass:aClass,className:className,aCollection:aCollection,packageName:packageName,theClass:theClass,thePackage:thePackage},$globals.ClassBuilder)});
  9314. //>>excludeEnd("ctx");
  9315. },
  9316. //>>excludeStart("ide", pragmas.excludeIdeData);
  9317. args: ["aClass", "className", "aCollection", "packageName"],
  9318. source: "addSubclassOf: aClass named: className instanceVariableNames: 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 ifFalse: [\x0a\x09\x09\x09^ self\x0a\x09\x09\x09\x09migrateClassNamed: className\x0a\x09\x09\x09\x09superclass: aClass\x0a\x09\x09\x09\x09instanceVariableNames: aCollection\x0a\x09\x09\x09\x09package: packageName ] ].\x0a\x09\x09\x0a\x09^ self\x0a\x09\x09basicAddSubclassOf: aClass\x0a\x09\x09named: className\x0a\x09\x09instanceVariableNames: aCollection\x0a\x09\x09package: packageName",
  9319. referencedClasses: ["Smalltalk", "Package"],
  9320. //>>excludeEnd("ide");
  9321. messageSends: ["at:", "globals", "named:", "ifNotNil:", "package:", "ifFalse:", "==", "superclass", "migrateClassNamed:superclass:instanceVariableNames:package:", "basicAddSubclassOf:named:instanceVariableNames:package:"]
  9322. }),
  9323. $globals.ClassBuilder);
  9324. $core.addMethod(
  9325. $core.method({
  9326. selector: "basicAddSubclassOf:named:instanceVariableNames:package:",
  9327. protocol: 'private',
  9328. fn: function (aClass,aString,aCollection,packageName){
  9329. var self=this;
  9330. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  9331. return $core.withContext(function($ctx1) {
  9332. //>>excludeEnd("ctx");
  9333. $core.addClass(aString, aClass, aCollection, packageName);
  9334. return $globals[aString]
  9335. ;
  9336. return self;
  9337. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  9338. }, function($ctx1) {$ctx1.fill(self,"basicAddSubclassOf:named:instanceVariableNames:package:",{aClass:aClass,aString:aString,aCollection:aCollection,packageName:packageName},$globals.ClassBuilder)});
  9339. //>>excludeEnd("ctx");
  9340. },
  9341. //>>excludeStart("ide", pragmas.excludeIdeData);
  9342. args: ["aClass", "aString", "aCollection", "packageName"],
  9343. source: "basicAddSubclassOf: aClass named: aString instanceVariableNames: aCollection package: packageName\x0a\x09<\x0a\x09\x09$core.addClass(aString, aClass, aCollection, packageName);\x0a\x09\x09return $globals[aString]\x0a\x09>",
  9344. referencedClasses: [],
  9345. //>>excludeEnd("ide");
  9346. messageSends: []
  9347. }),
  9348. $globals.ClassBuilder);
  9349. $core.addMethod(
  9350. $core.method({
  9351. selector: "basicClass:instanceVariableNames:",
  9352. protocol: 'private',
  9353. fn: function (aClass,aString){
  9354. var self=this;
  9355. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  9356. return $core.withContext(function($ctx1) {
  9357. //>>excludeEnd("ctx");
  9358. self._basicClass_instanceVariables_(aClass,self._instanceVariableNamesFor_(aString));
  9359. return self;
  9360. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  9361. }, function($ctx1) {$ctx1.fill(self,"basicClass:instanceVariableNames:",{aClass:aClass,aString:aString},$globals.ClassBuilder)});
  9362. //>>excludeEnd("ctx");
  9363. },
  9364. //>>excludeStart("ide", pragmas.excludeIdeData);
  9365. args: ["aClass", "aString"],
  9366. source: "basicClass: aClass instanceVariableNames: aString\x0a\x09self basicClass: aClass instanceVariables: (self instanceVariableNamesFor: aString)",
  9367. referencedClasses: [],
  9368. //>>excludeEnd("ide");
  9369. messageSends: ["basicClass:instanceVariables:", "instanceVariableNamesFor:"]
  9370. }),
  9371. $globals.ClassBuilder);
  9372. $core.addMethod(
  9373. $core.method({
  9374. selector: "basicClass:instanceVariables:",
  9375. protocol: 'private',
  9376. fn: function (aClass,aCollection){
  9377. var self=this;
  9378. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  9379. return $core.withContext(function($ctx1) {
  9380. //>>excludeEnd("ctx");
  9381. var $1;
  9382. $1=$recv(aClass)._isMetaclass();
  9383. if(!$core.assert($1)){
  9384. self._error_($recv($recv(aClass)._name()).__comma(" is not a metaclass"));
  9385. };
  9386. $recv(aClass)._basicAt_put_("iVarNames",aCollection);
  9387. return self;
  9388. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  9389. }, function($ctx1) {$ctx1.fill(self,"basicClass:instanceVariables:",{aClass:aClass,aCollection:aCollection},$globals.ClassBuilder)});
  9390. //>>excludeEnd("ctx");
  9391. },
  9392. //>>excludeStart("ide", pragmas.excludeIdeData);
  9393. args: ["aClass", "aCollection"],
  9394. source: "basicClass: aClass instanceVariables: aCollection\x0a\x0a\x09aClass isMetaclass ifFalse: [ self error: aClass name, ' is not a metaclass' ].\x0a\x09aClass basicAt: 'iVarNames' put: aCollection",
  9395. referencedClasses: [],
  9396. //>>excludeEnd("ide");
  9397. messageSends: ["ifFalse:", "isMetaclass", "error:", ",", "name", "basicAt:put:"]
  9398. }),
  9399. $globals.ClassBuilder);
  9400. $core.addMethod(
  9401. $core.method({
  9402. selector: "basicRemoveClass:",
  9403. protocol: 'private',
  9404. fn: function (aClass){
  9405. var self=this;
  9406. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  9407. return $core.withContext(function($ctx1) {
  9408. //>>excludeEnd("ctx");
  9409. $core.removeClass(aClass);
  9410. return self;
  9411. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  9412. }, function($ctx1) {$ctx1.fill(self,"basicRemoveClass:",{aClass:aClass},$globals.ClassBuilder)});
  9413. //>>excludeEnd("ctx");
  9414. },
  9415. //>>excludeStart("ide", pragmas.excludeIdeData);
  9416. args: ["aClass"],
  9417. source: "basicRemoveClass: aClass\x0a\x09<$core.removeClass(aClass)>",
  9418. referencedClasses: [],
  9419. //>>excludeEnd("ide");
  9420. messageSends: []
  9421. }),
  9422. $globals.ClassBuilder);
  9423. $core.addMethod(
  9424. $core.method({
  9425. selector: "basicRenameClass:to:",
  9426. protocol: 'private',
  9427. fn: function (aClass,aString){
  9428. var self=this;
  9429. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  9430. return $core.withContext(function($ctx1) {
  9431. //>>excludeEnd("ctx");
  9432. $globals[aString] = aClass;
  9433. delete $globals[aClass.className];
  9434. aClass.className = aString;
  9435. ;
  9436. return self;
  9437. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  9438. }, function($ctx1) {$ctx1.fill(self,"basicRenameClass:to:",{aClass:aClass,aString:aString},$globals.ClassBuilder)});
  9439. //>>excludeEnd("ctx");
  9440. },
  9441. //>>excludeStart("ide", pragmas.excludeIdeData);
  9442. args: ["aClass", "aString"],
  9443. source: "basicRenameClass: aClass to: aString\x0a\x09<\x0a\x09\x09$globals[aString] = aClass;\x0a\x09\x09delete $globals[aClass.className];\x0a\x09\x09aClass.className = aString;\x0a\x09>",
  9444. referencedClasses: [],
  9445. //>>excludeEnd("ide");
  9446. messageSends: []
  9447. }),
  9448. $globals.ClassBuilder);
  9449. $core.addMethod(
  9450. $core.method({
  9451. selector: "basicSwapClassNames:with:",
  9452. protocol: 'private',
  9453. fn: function (aClass,anotherClass){
  9454. var self=this;
  9455. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  9456. return $core.withContext(function($ctx1) {
  9457. //>>excludeEnd("ctx");
  9458. var tmp = aClass.className;
  9459. aClass.className = anotherClass.className;
  9460. anotherClass.className = tmp;
  9461. ;
  9462. return self;
  9463. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  9464. }, function($ctx1) {$ctx1.fill(self,"basicSwapClassNames:with:",{aClass:aClass,anotherClass:anotherClass},$globals.ClassBuilder)});
  9465. //>>excludeEnd("ctx");
  9466. },
  9467. //>>excludeStart("ide", pragmas.excludeIdeData);
  9468. args: ["aClass", "anotherClass"],
  9469. source: "basicSwapClassNames: aClass with: anotherClass\x0a\x09<\x0a\x09\x09var tmp = aClass.className;\x0a\x09\x09aClass.className = anotherClass.className;\x0a\x09\x09anotherClass.className = tmp;\x0a\x09>",
  9470. referencedClasses: [],
  9471. //>>excludeEnd("ide");
  9472. messageSends: []
  9473. }),
  9474. $globals.ClassBuilder);
  9475. $core.addMethod(
  9476. $core.method({
  9477. selector: "class:instanceVariableNames:",
  9478. protocol: 'class definition',
  9479. fn: function (aClass,ivarNames){
  9480. var self=this;
  9481. function $SystemAnnouncer(){return $globals.SystemAnnouncer||(typeof SystemAnnouncer=="undefined"?nil:SystemAnnouncer)}
  9482. function $ClassDefinitionChanged(){return $globals.ClassDefinitionChanged||(typeof ClassDefinitionChanged=="undefined"?nil:ClassDefinitionChanged)}
  9483. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  9484. return $core.withContext(function($ctx1) {
  9485. //>>excludeEnd("ctx");
  9486. var $1,$2;
  9487. self._basicClass_instanceVariableNames_(aClass,ivarNames);
  9488. self._setupClass_(aClass);
  9489. $1=$recv($ClassDefinitionChanged())._new();
  9490. $recv($1)._theClass_(aClass);
  9491. $2=$recv($1)._yourself();
  9492. $recv($recv($SystemAnnouncer())._current())._announce_($2);
  9493. return self;
  9494. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  9495. }, function($ctx1) {$ctx1.fill(self,"class:instanceVariableNames:",{aClass:aClass,ivarNames:ivarNames},$globals.ClassBuilder)});
  9496. //>>excludeEnd("ctx");
  9497. },
  9498. //>>excludeStart("ide", pragmas.excludeIdeData);
  9499. args: ["aClass", "ivarNames"],
  9500. source: "class: aClass instanceVariableNames: ivarNames\x0a\x09self basicClass: aClass instanceVariableNames: ivarNames.\x0a\x09self setupClass: aClass.\x0a\x09\x0a\x09SystemAnnouncer current\x0a\x09\x09announce: (ClassDefinitionChanged new\x0a\x09\x09\x09theClass: aClass;\x0a\x09\x09\x09yourself)",
  9501. referencedClasses: ["SystemAnnouncer", "ClassDefinitionChanged"],
  9502. //>>excludeEnd("ide");
  9503. messageSends: ["basicClass:instanceVariableNames:", "setupClass:", "announce:", "current", "theClass:", "new", "yourself"]
  9504. }),
  9505. $globals.ClassBuilder);
  9506. $core.addMethod(
  9507. $core.method({
  9508. selector: "copyClass:named:",
  9509. protocol: 'copying',
  9510. fn: function (aClass,className){
  9511. var self=this;
  9512. var newClass;
  9513. function $SystemAnnouncer(){return $globals.SystemAnnouncer||(typeof SystemAnnouncer=="undefined"?nil:SystemAnnouncer)}
  9514. function $ClassAdded(){return $globals.ClassAdded||(typeof ClassAdded=="undefined"?nil:ClassAdded)}
  9515. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  9516. return $core.withContext(function($ctx1) {
  9517. //>>excludeEnd("ctx");
  9518. var $1,$2,$3;
  9519. newClass=self._addSubclassOf_named_instanceVariableNames_package_($recv(aClass)._superclass(),className,$recv(aClass)._instanceVariableNames(),$recv($recv(aClass)._package())._name());
  9520. self._copyClass_to_(aClass,newClass);
  9521. $1=$recv($ClassAdded())._new();
  9522. $recv($1)._theClass_(newClass);
  9523. $2=$recv($1)._yourself();
  9524. $recv($recv($SystemAnnouncer())._current())._announce_($2);
  9525. $3=newClass;
  9526. return $3;
  9527. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  9528. }, function($ctx1) {$ctx1.fill(self,"copyClass:named:",{aClass:aClass,className:className,newClass:newClass},$globals.ClassBuilder)});
  9529. //>>excludeEnd("ctx");
  9530. },
  9531. //>>excludeStart("ide", pragmas.excludeIdeData);
  9532. args: ["aClass", "className"],
  9533. source: "copyClass: aClass named: className\x0a\x09| newClass |\x0a\x0a\x09newClass := self\x0a\x09\x09addSubclassOf: aClass superclass\x0a\x09\x09named: className\x0a\x09\x09instanceVariableNames: aClass instanceVariableNames\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",
  9534. referencedClasses: ["SystemAnnouncer", "ClassAdded"],
  9535. //>>excludeEnd("ide");
  9536. messageSends: ["addSubclassOf:named:instanceVariableNames:package:", "superclass", "instanceVariableNames", "name", "package", "copyClass:to:", "announce:", "current", "theClass:", "new", "yourself"]
  9537. }),
  9538. $globals.ClassBuilder);
  9539. $core.addMethod(
  9540. $core.method({
  9541. selector: "copyClass:to:",
  9542. protocol: 'copying',
  9543. fn: function (aClass,anotherClass){
  9544. var self=this;
  9545. function $Compiler(){return $globals.Compiler||(typeof Compiler=="undefined"?nil:Compiler)}
  9546. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  9547. return $core.withContext(function($ctx1) {
  9548. //>>excludeEnd("ctx");
  9549. var $1,$2,$3,$4,$5,$7,$6,$9,$8;
  9550. $recv(anotherClass)._comment_($recv(aClass)._comment());
  9551. $1=$recv(aClass)._methodDictionary();
  9552. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  9553. $ctx1.sendIdx["methodDictionary"]=1;
  9554. //>>excludeEnd("ctx");
  9555. $recv($1)._valuesDo_((function(each){
  9556. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  9557. return $core.withContext(function($ctx2) {
  9558. //>>excludeEnd("ctx");
  9559. $2=$recv($Compiler())._new();
  9560. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  9561. $ctx2.sendIdx["new"]=1;
  9562. //>>excludeEnd("ctx");
  9563. $3=$recv(each)._source();
  9564. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  9565. $ctx2.sendIdx["source"]=1;
  9566. //>>excludeEnd("ctx");
  9567. $4=$recv(each)._protocol();
  9568. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  9569. $ctx2.sendIdx["protocol"]=1;
  9570. //>>excludeEnd("ctx");
  9571. return $recv($2)._install_forClass_protocol_($3,anotherClass,$4);
  9572. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  9573. $ctx2.sendIdx["install:forClass:protocol:"]=1;
  9574. //>>excludeEnd("ctx");
  9575. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  9576. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  9577. //>>excludeEnd("ctx");
  9578. }));
  9579. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  9580. $ctx1.sendIdx["valuesDo:"]=1;
  9581. //>>excludeEnd("ctx");
  9582. $5=$recv(anotherClass)._class();
  9583. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  9584. $ctx1.sendIdx["class"]=1;
  9585. //>>excludeEnd("ctx");
  9586. $7=$recv(aClass)._class();
  9587. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  9588. $ctx1.sendIdx["class"]=2;
  9589. //>>excludeEnd("ctx");
  9590. $6=$recv($7)._instanceVariableNames();
  9591. self._basicClass_instanceVariables_($5,$6);
  9592. $9=$recv(aClass)._class();
  9593. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  9594. $ctx1.sendIdx["class"]=3;
  9595. //>>excludeEnd("ctx");
  9596. $8=$recv($9)._methodDictionary();
  9597. $recv($8)._valuesDo_((function(each){
  9598. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  9599. return $core.withContext(function($ctx2) {
  9600. //>>excludeEnd("ctx");
  9601. return $recv($recv($Compiler())._new())._install_forClass_protocol_($recv(each)._source(),$recv(anotherClass)._class(),$recv(each)._protocol());
  9602. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  9603. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,2)});
  9604. //>>excludeEnd("ctx");
  9605. }));
  9606. self._setupClass_(anotherClass);
  9607. return self;
  9608. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  9609. }, function($ctx1) {$ctx1.fill(self,"copyClass:to:",{aClass:aClass,anotherClass:anotherClass},$globals.ClassBuilder)});
  9610. //>>excludeEnd("ctx");
  9611. },
  9612. //>>excludeStart("ide", pragmas.excludeIdeData);
  9613. args: ["aClass", "anotherClass"],
  9614. source: "copyClass: aClass to: anotherClass\x0a\x0a\x09anotherClass comment: aClass comment.\x0a\x0a\x09aClass methodDictionary valuesDo: [ :each |\x0a\x09\x09Compiler new install: each source forClass: anotherClass protocol: each protocol ].\x0a\x0a\x09self basicClass: anotherClass class instanceVariables: aClass class instanceVariableNames.\x0a\x0a\x09aClass class methodDictionary valuesDo: [ :each |\x0a\x09\x09Compiler new install: each source forClass: anotherClass class protocol: each protocol ].\x0a\x0a\x09self setupClass: anotherClass",
  9615. referencedClasses: ["Compiler"],
  9616. //>>excludeEnd("ide");
  9617. messageSends: ["comment:", "comment", "valuesDo:", "methodDictionary", "install:forClass:protocol:", "new", "source", "protocol", "basicClass:instanceVariables:", "class", "instanceVariableNames", "setupClass:"]
  9618. }),
  9619. $globals.ClassBuilder);
  9620. $core.addMethod(
  9621. $core.method({
  9622. selector: "installMethod:forClass:protocol:",
  9623. protocol: 'method definition',
  9624. fn: function (aCompiledMethod,aBehavior,aString){
  9625. var self=this;
  9626. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  9627. return $core.withContext(function($ctx1) {
  9628. //>>excludeEnd("ctx");
  9629. $recv(aCompiledMethod)._protocol_(aString);
  9630. $recv(aBehavior)._addCompiledMethod_(aCompiledMethod);
  9631. self._setupClass_(aBehavior);
  9632. return aCompiledMethod;
  9633. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  9634. }, function($ctx1) {$ctx1.fill(self,"installMethod:forClass:protocol:",{aCompiledMethod:aCompiledMethod,aBehavior:aBehavior,aString:aString},$globals.ClassBuilder)});
  9635. //>>excludeEnd("ctx");
  9636. },
  9637. //>>excludeStart("ide", pragmas.excludeIdeData);
  9638. args: ["aCompiledMethod", "aBehavior", "aString"],
  9639. source: "installMethod: aCompiledMethod forClass: aBehavior protocol: aString\x0a\x09aCompiledMethod protocol: aString.\x0a\x09aBehavior addCompiledMethod: aCompiledMethod.\x0a\x09self setupClass: aBehavior.\x0a\x09^ aCompiledMethod",
  9640. referencedClasses: [],
  9641. //>>excludeEnd("ide");
  9642. messageSends: ["protocol:", "addCompiledMethod:", "setupClass:"]
  9643. }),
  9644. $globals.ClassBuilder);
  9645. $core.addMethod(
  9646. $core.method({
  9647. selector: "instanceVariableNamesFor:",
  9648. protocol: 'accessing',
  9649. fn: function (aString){
  9650. var self=this;
  9651. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  9652. return $core.withContext(function($ctx1) {
  9653. //>>excludeEnd("ctx");
  9654. var $1;
  9655. $1=$recv($recv(aString)._tokenize_(" "))._reject_((function(each){
  9656. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  9657. return $core.withContext(function($ctx2) {
  9658. //>>excludeEnd("ctx");
  9659. return $recv(each)._isEmpty();
  9660. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  9661. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  9662. //>>excludeEnd("ctx");
  9663. }));
  9664. return $1;
  9665. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  9666. }, function($ctx1) {$ctx1.fill(self,"instanceVariableNamesFor:",{aString:aString},$globals.ClassBuilder)});
  9667. //>>excludeEnd("ctx");
  9668. },
  9669. //>>excludeStart("ide", pragmas.excludeIdeData);
  9670. args: ["aString"],
  9671. source: "instanceVariableNamesFor: aString\x0a\x09^ (aString tokenize: ' ') reject: [ :each | each isEmpty ]",
  9672. referencedClasses: [],
  9673. //>>excludeEnd("ide");
  9674. messageSends: ["reject:", "tokenize:", "isEmpty"]
  9675. }),
  9676. $globals.ClassBuilder);
  9677. $core.addMethod(
  9678. $core.method({
  9679. selector: "migrateClass:superclass:",
  9680. protocol: 'class migration',
  9681. fn: function (aClass,anotherClass){
  9682. var self=this;
  9683. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  9684. return $core.withContext(function($ctx1) {
  9685. //>>excludeEnd("ctx");
  9686. var $2,$1;
  9687. $2=$recv(aClass)._name();
  9688. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  9689. $ctx1.sendIdx["name"]=1;
  9690. //>>excludeEnd("ctx");
  9691. $1=self._migrateClassNamed_superclass_instanceVariableNames_package_($2,anotherClass,$recv(aClass)._instanceVariableNames(),$recv($recv(aClass)._package())._name());
  9692. return $1;
  9693. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  9694. }, function($ctx1) {$ctx1.fill(self,"migrateClass:superclass:",{aClass:aClass,anotherClass:anotherClass},$globals.ClassBuilder)});
  9695. //>>excludeEnd("ctx");
  9696. },
  9697. //>>excludeStart("ide", pragmas.excludeIdeData);
  9698. args: ["aClass", "anotherClass"],
  9699. source: "migrateClass: aClass superclass: anotherClass\x0a\x09^ self\x0a\x09\x09migrateClassNamed: aClass name\x0a\x09\x09superclass: anotherClass\x0a\x09\x09instanceVariableNames: aClass instanceVariableNames\x0a\x09\x09package: aClass package name",
  9700. referencedClasses: [],
  9701. //>>excludeEnd("ide");
  9702. messageSends: ["migrateClassNamed:superclass:instanceVariableNames:package:", "name", "instanceVariableNames", "package"]
  9703. }),
  9704. $globals.ClassBuilder);
  9705. $core.addMethod(
  9706. $core.method({
  9707. selector: "migrateClassNamed:superclass:instanceVariableNames:package:",
  9708. protocol: 'class migration',
  9709. fn: function (className,aClass,aCollection,packageName){
  9710. var self=this;
  9711. var oldClass,newClass,tmp;
  9712. function $Smalltalk(){return $globals.Smalltalk||(typeof Smalltalk=="undefined"?nil:Smalltalk)}
  9713. function $Error(){return $globals.Error||(typeof Error=="undefined"?nil:Error)}
  9714. function $SystemAnnouncer(){return $globals.SystemAnnouncer||(typeof SystemAnnouncer=="undefined"?nil:SystemAnnouncer)}
  9715. function $ClassMigrated(){return $globals.ClassMigrated||(typeof ClassMigrated=="undefined"?nil:ClassMigrated)}
  9716. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  9717. return $core.withContext(function($ctx1) {
  9718. //>>excludeEnd("ctx");
  9719. var $1,$2,$3,$4,$5;
  9720. tmp="new*".__comma(className);
  9721. oldClass=$recv($recv($Smalltalk())._globals())._at_(className);
  9722. newClass=self._addSubclassOf_named_instanceVariableNames_package_(aClass,tmp,aCollection,packageName);
  9723. self._basicSwapClassNames_with_(oldClass,newClass);
  9724. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  9725. $ctx1.sendIdx["basicSwapClassNames:with:"]=1;
  9726. //>>excludeEnd("ctx");
  9727. $recv((function(){
  9728. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  9729. return $core.withContext(function($ctx2) {
  9730. //>>excludeEnd("ctx");
  9731. return self._copyClass_to_(oldClass,newClass);
  9732. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  9733. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  9734. //>>excludeEnd("ctx");
  9735. }))._on_do_($Error(),(function(exception){
  9736. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  9737. return $core.withContext(function($ctx2) {
  9738. //>>excludeEnd("ctx");
  9739. self._basicSwapClassNames_with_(oldClass,newClass);
  9740. $1=self._basicRemoveClass_(newClass);
  9741. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  9742. $ctx2.sendIdx["basicRemoveClass:"]=1;
  9743. //>>excludeEnd("ctx");
  9744. $1;
  9745. return $recv(exception)._signal();
  9746. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  9747. }, function($ctx2) {$ctx2.fillBlock({exception:exception},$ctx1,2)});
  9748. //>>excludeEnd("ctx");
  9749. }));
  9750. self._rawRenameClass_to_(oldClass,tmp);
  9751. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  9752. $ctx1.sendIdx["rawRenameClass:to:"]=1;
  9753. //>>excludeEnd("ctx");
  9754. $2=self._rawRenameClass_to_(newClass,className);
  9755. $recv($recv(oldClass)._subclasses())._do_((function(each){
  9756. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  9757. return $core.withContext(function($ctx2) {
  9758. //>>excludeEnd("ctx");
  9759. return self._migrateClass_superclass_(each,newClass);
  9760. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  9761. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,3)});
  9762. //>>excludeEnd("ctx");
  9763. }));
  9764. self._basicRemoveClass_(oldClass);
  9765. $3=$recv($ClassMigrated())._new();
  9766. $recv($3)._theClass_(newClass);
  9767. $recv($3)._oldClass_(oldClass);
  9768. $4=$recv($3)._yourself();
  9769. $recv($recv($SystemAnnouncer())._current())._announce_($4);
  9770. $5=newClass;
  9771. return $5;
  9772. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  9773. }, function($ctx1) {$ctx1.fill(self,"migrateClassNamed:superclass:instanceVariableNames:package:",{className:className,aClass:aClass,aCollection:aCollection,packageName:packageName,oldClass:oldClass,newClass:newClass,tmp:tmp},$globals.ClassBuilder)});
  9774. //>>excludeEnd("ctx");
  9775. },
  9776. //>>excludeStart("ide", pragmas.excludeIdeData);
  9777. args: ["className", "aClass", "aCollection", "packageName"],
  9778. source: "migrateClassNamed: className superclass: aClass instanceVariableNames: 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\x09instanceVariableNames: 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\x09exception signal ].\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",
  9779. referencedClasses: ["Smalltalk", "Error", "SystemAnnouncer", "ClassMigrated"],
  9780. //>>excludeEnd("ide");
  9781. messageSends: [",", "at:", "globals", "addSubclassOf:named:instanceVariableNames:package:", "basicSwapClassNames:with:", "on:do:", "copyClass:to:", "basicRemoveClass:", "signal", "rawRenameClass:to:", "do:", "subclasses", "migrateClass:superclass:", "announce:", "current", "theClass:", "new", "oldClass:", "yourself"]
  9782. }),
  9783. $globals.ClassBuilder);
  9784. $core.addMethod(
  9785. $core.method({
  9786. selector: "rawRenameClass:to:",
  9787. protocol: 'private',
  9788. fn: function (aClass,aString){
  9789. var self=this;
  9790. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  9791. return $core.withContext(function($ctx1) {
  9792. //>>excludeEnd("ctx");
  9793. $globals[aString] = aClass;
  9794. ;
  9795. return self;
  9796. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  9797. }, function($ctx1) {$ctx1.fill(self,"rawRenameClass:to:",{aClass:aClass,aString:aString},$globals.ClassBuilder)});
  9798. //>>excludeEnd("ctx");
  9799. },
  9800. //>>excludeStart("ide", pragmas.excludeIdeData);
  9801. args: ["aClass", "aString"],
  9802. source: "rawRenameClass: aClass to: aString\x0a\x09<\x0a\x09\x09$globals[aString] = aClass;\x0a\x09>",
  9803. referencedClasses: [],
  9804. //>>excludeEnd("ide");
  9805. messageSends: []
  9806. }),
  9807. $globals.ClassBuilder);
  9808. $core.addMethod(
  9809. $core.method({
  9810. selector: "renameClass:to:",
  9811. protocol: 'class migration',
  9812. fn: function (aClass,className){
  9813. var self=this;
  9814. function $SystemAnnouncer(){return $globals.SystemAnnouncer||(typeof SystemAnnouncer=="undefined"?nil:SystemAnnouncer)}
  9815. function $ClassRenamed(){return $globals.ClassRenamed||(typeof ClassRenamed=="undefined"?nil:ClassRenamed)}
  9816. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  9817. return $core.withContext(function($ctx1) {
  9818. //>>excludeEnd("ctx");
  9819. var $1,$2;
  9820. self._basicRenameClass_to_(aClass,className);
  9821. $recv(aClass)._recompile();
  9822. $1=$recv($ClassRenamed())._new();
  9823. $recv($1)._theClass_(aClass);
  9824. $2=$recv($1)._yourself();
  9825. $recv($recv($SystemAnnouncer())._current())._announce_($2);
  9826. return self;
  9827. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  9828. }, function($ctx1) {$ctx1.fill(self,"renameClass:to:",{aClass:aClass,className:className},$globals.ClassBuilder)});
  9829. //>>excludeEnd("ctx");
  9830. },
  9831. //>>excludeStart("ide", pragmas.excludeIdeData);
  9832. args: ["aClass", "className"],
  9833. 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)",
  9834. referencedClasses: ["SystemAnnouncer", "ClassRenamed"],
  9835. //>>excludeEnd("ide");
  9836. messageSends: ["basicRenameClass:to:", "recompile", "announce:", "current", "theClass:", "new", "yourself"]
  9837. }),
  9838. $globals.ClassBuilder);
  9839. $core.addMethod(
  9840. $core.method({
  9841. selector: "setupClass:",
  9842. protocol: 'public',
  9843. fn: function (aClass){
  9844. var self=this;
  9845. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  9846. return $core.withContext(function($ctx1) {
  9847. //>>excludeEnd("ctx");
  9848. $core.init(aClass);;
  9849. return self;
  9850. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  9851. }, function($ctx1) {$ctx1.fill(self,"setupClass:",{aClass:aClass},$globals.ClassBuilder)});
  9852. //>>excludeEnd("ctx");
  9853. },
  9854. //>>excludeStart("ide", pragmas.excludeIdeData);
  9855. args: ["aClass"],
  9856. source: "setupClass: aClass\x0a\x09<$core.init(aClass);>",
  9857. referencedClasses: [],
  9858. //>>excludeEnd("ide");
  9859. messageSends: []
  9860. }),
  9861. $globals.ClassBuilder);
  9862. $core.addMethod(
  9863. $core.method({
  9864. selector: "superclass:subclass:",
  9865. protocol: 'class definition',
  9866. fn: function (aClass,className){
  9867. var self=this;
  9868. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  9869. return $core.withContext(function($ctx1) {
  9870. //>>excludeEnd("ctx");
  9871. var $1;
  9872. $1=self._superclass_subclass_instanceVariableNames_package_(aClass,className,"",nil);
  9873. return $1;
  9874. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  9875. }, function($ctx1) {$ctx1.fill(self,"superclass:subclass:",{aClass:aClass,className:className},$globals.ClassBuilder)});
  9876. //>>excludeEnd("ctx");
  9877. },
  9878. //>>excludeStart("ide", pragmas.excludeIdeData);
  9879. args: ["aClass", "className"],
  9880. source: "superclass: aClass subclass: className\x0a\x09^ self superclass: aClass subclass: className instanceVariableNames: '' package: nil",
  9881. referencedClasses: [],
  9882. //>>excludeEnd("ide");
  9883. messageSends: ["superclass:subclass:instanceVariableNames:package:"]
  9884. }),
  9885. $globals.ClassBuilder);
  9886. $core.addMethod(
  9887. $core.method({
  9888. selector: "superclass:subclass:instanceVariableNames:package:",
  9889. protocol: 'class definition',
  9890. fn: function (aClass,className,ivarNames,packageName){
  9891. var self=this;
  9892. var newClass;
  9893. function $SystemAnnouncer(){return $globals.SystemAnnouncer||(typeof SystemAnnouncer=="undefined"?nil:SystemAnnouncer)}
  9894. function $ClassAdded(){return $globals.ClassAdded||(typeof ClassAdded=="undefined"?nil:ClassAdded)}
  9895. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  9896. return $core.withContext(function($ctx1) {
  9897. //>>excludeEnd("ctx");
  9898. var $1,$2,$3,$4,$5,$receiver;
  9899. $1=self._instanceVariableNamesFor_(ivarNames);
  9900. if(($receiver = packageName) == null || $receiver.isNil){
  9901. $2="unclassified";
  9902. } else {
  9903. $2=packageName;
  9904. };
  9905. newClass=self._addSubclassOf_named_instanceVariableNames_package_(aClass,className,$1,$2);
  9906. self._setupClass_(newClass);
  9907. $3=$recv($ClassAdded())._new();
  9908. $recv($3)._theClass_(newClass);
  9909. $4=$recv($3)._yourself();
  9910. $recv($recv($SystemAnnouncer())._current())._announce_($4);
  9911. $5=newClass;
  9912. return $5;
  9913. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  9914. }, function($ctx1) {$ctx1.fill(self,"superclass:subclass:instanceVariableNames:package:",{aClass:aClass,className:className,ivarNames:ivarNames,packageName:packageName,newClass:newClass},$globals.ClassBuilder)});
  9915. //>>excludeEnd("ctx");
  9916. },
  9917. //>>excludeStart("ide", pragmas.excludeIdeData);
  9918. args: ["aClass", "className", "ivarNames", "packageName"],
  9919. source: "superclass: aClass subclass: className instanceVariableNames: ivarNames package: packageName\x0a\x09| newClass |\x0a\x09\x0a\x09newClass := self addSubclassOf: aClass\x0a\x09\x09named: className instanceVariableNames: (self instanceVariableNamesFor: ivarNames)\x0a\x09\x09package: (packageName ifNil: [ 'unclassified' ]).\x0a\x09self setupClass: 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",
  9920. referencedClasses: ["SystemAnnouncer", "ClassAdded"],
  9921. //>>excludeEnd("ide");
  9922. messageSends: ["addSubclassOf:named:instanceVariableNames:package:", "instanceVariableNamesFor:", "ifNil:", "setupClass:", "announce:", "current", "theClass:", "new", "yourself"]
  9923. }),
  9924. $globals.ClassBuilder);
  9925. $core.addClass('ClassCategoryReader', $globals.Object, ['class', 'category'], 'Kernel-Classes');
  9926. //>>excludeStart("ide", pragmas.excludeIdeData);
  9927. $globals.ClassCategoryReader.comment="I provide a mechanism for retrieving class descriptions stored on a file in the Smalltalk chunk format.";
  9928. //>>excludeEnd("ide");
  9929. $core.addMethod(
  9930. $core.method({
  9931. selector: "class:category:",
  9932. protocol: 'accessing',
  9933. fn: function (aClass,aString){
  9934. var self=this;
  9935. self["@class"]=aClass;
  9936. self["@category"]=aString;
  9937. return self;
  9938. },
  9939. //>>excludeStart("ide", pragmas.excludeIdeData);
  9940. args: ["aClass", "aString"],
  9941. source: "class: aClass category: aString\x0a\x09class := aClass.\x0a\x09category := aString",
  9942. referencedClasses: [],
  9943. //>>excludeEnd("ide");
  9944. messageSends: []
  9945. }),
  9946. $globals.ClassCategoryReader);
  9947. $core.addMethod(
  9948. $core.method({
  9949. selector: "compileMethod:",
  9950. protocol: 'private',
  9951. fn: function (aString){
  9952. var self=this;
  9953. function $Compiler(){return $globals.Compiler||(typeof Compiler=="undefined"?nil:Compiler)}
  9954. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  9955. return $core.withContext(function($ctx1) {
  9956. //>>excludeEnd("ctx");
  9957. $recv($recv($Compiler())._new())._install_forClass_protocol_(aString,self["@class"],self["@category"]);
  9958. return self;
  9959. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  9960. }, function($ctx1) {$ctx1.fill(self,"compileMethod:",{aString:aString},$globals.ClassCategoryReader)});
  9961. //>>excludeEnd("ctx");
  9962. },
  9963. //>>excludeStart("ide", pragmas.excludeIdeData);
  9964. args: ["aString"],
  9965. source: "compileMethod: aString\x0a\x09Compiler new install: aString forClass: class protocol: category",
  9966. referencedClasses: ["Compiler"],
  9967. //>>excludeEnd("ide");
  9968. messageSends: ["install:forClass:protocol:", "new"]
  9969. }),
  9970. $globals.ClassCategoryReader);
  9971. $core.addMethod(
  9972. $core.method({
  9973. selector: "initialize",
  9974. protocol: 'initialization',
  9975. fn: function (){
  9976. var self=this;
  9977. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  9978. return $core.withContext(function($ctx1) {
  9979. //>>excludeEnd("ctx");
  9980. (
  9981. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  9982. $ctx1.supercall = true,
  9983. //>>excludeEnd("ctx");
  9984. $globals.ClassCategoryReader.superclass.fn.prototype._initialize.apply($recv(self), []));
  9985. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  9986. $ctx1.supercall = false;
  9987. //>>excludeEnd("ctx");;
  9988. return self;
  9989. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  9990. }, function($ctx1) {$ctx1.fill(self,"initialize",{},$globals.ClassCategoryReader)});
  9991. //>>excludeEnd("ctx");
  9992. },
  9993. //>>excludeStart("ide", pragmas.excludeIdeData);
  9994. args: [],
  9995. source: "initialize\x0a\x09super initialize.",
  9996. referencedClasses: [],
  9997. //>>excludeEnd("ide");
  9998. messageSends: ["initialize"]
  9999. }),
  10000. $globals.ClassCategoryReader);
  10001. $core.addMethod(
  10002. $core.method({
  10003. selector: "scanFrom:",
  10004. protocol: 'fileIn',
  10005. fn: function (aChunkParser){
  10006. var self=this;
  10007. var chunk;
  10008. function $ClassBuilder(){return $globals.ClassBuilder||(typeof ClassBuilder=="undefined"?nil:ClassBuilder)}
  10009. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  10010. return $core.withContext(function($ctx1) {
  10011. //>>excludeEnd("ctx");
  10012. $recv((function(){
  10013. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  10014. return $core.withContext(function($ctx2) {
  10015. //>>excludeEnd("ctx");
  10016. chunk=$recv(aChunkParser)._nextChunk();
  10017. chunk;
  10018. return $recv(chunk)._isEmpty();
  10019. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  10020. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  10021. //>>excludeEnd("ctx");
  10022. }))._whileFalse_((function(){
  10023. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  10024. return $core.withContext(function($ctx2) {
  10025. //>>excludeEnd("ctx");
  10026. return self._compileMethod_(chunk);
  10027. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  10028. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
  10029. //>>excludeEnd("ctx");
  10030. }));
  10031. $recv($recv($ClassBuilder())._new())._setupClass_(self["@class"]);
  10032. return self;
  10033. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  10034. }, function($ctx1) {$ctx1.fill(self,"scanFrom:",{aChunkParser:aChunkParser,chunk:chunk},$globals.ClassCategoryReader)});
  10035. //>>excludeEnd("ctx");
  10036. },
  10037. //>>excludeStart("ide", pragmas.excludeIdeData);
  10038. args: ["aChunkParser"],
  10039. source: "scanFrom: aChunkParser\x0a\x09| chunk |\x0a\x09[ chunk := aChunkParser nextChunk.\x0a\x09chunk isEmpty ] whileFalse: [\x0a\x09\x09self compileMethod: chunk ].\x0a\x09ClassBuilder new setupClass: class",
  10040. referencedClasses: ["ClassBuilder"],
  10041. //>>excludeEnd("ide");
  10042. messageSends: ["whileFalse:", "nextChunk", "isEmpty", "compileMethod:", "setupClass:", "new"]
  10043. }),
  10044. $globals.ClassCategoryReader);
  10045. $core.addClass('ClassCommentReader', $globals.Object, ['class'], 'Kernel-Classes');
  10046. //>>excludeStart("ide", pragmas.excludeIdeData);
  10047. $globals.ClassCommentReader.comment="I provide a mechanism for retrieving class comments stored on a file.\x0a\x0aSee also `ClassCategoryReader`.";
  10048. //>>excludeEnd("ide");
  10049. $core.addMethod(
  10050. $core.method({
  10051. selector: "class:",
  10052. protocol: 'accessing',
  10053. fn: function (aClass){
  10054. var self=this;
  10055. self["@class"]=aClass;
  10056. return self;
  10057. },
  10058. //>>excludeStart("ide", pragmas.excludeIdeData);
  10059. args: ["aClass"],
  10060. source: "class: aClass\x0a\x09class := aClass",
  10061. referencedClasses: [],
  10062. //>>excludeEnd("ide");
  10063. messageSends: []
  10064. }),
  10065. $globals.ClassCommentReader);
  10066. $core.addMethod(
  10067. $core.method({
  10068. selector: "initialize",
  10069. protocol: 'initialization',
  10070. fn: function (){
  10071. var self=this;
  10072. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  10073. return $core.withContext(function($ctx1) {
  10074. //>>excludeEnd("ctx");
  10075. (
  10076. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  10077. $ctx1.supercall = true,
  10078. //>>excludeEnd("ctx");
  10079. $globals.ClassCommentReader.superclass.fn.prototype._initialize.apply($recv(self), []));
  10080. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  10081. $ctx1.supercall = false;
  10082. //>>excludeEnd("ctx");;
  10083. return self;
  10084. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  10085. }, function($ctx1) {$ctx1.fill(self,"initialize",{},$globals.ClassCommentReader)});
  10086. //>>excludeEnd("ctx");
  10087. },
  10088. //>>excludeStart("ide", pragmas.excludeIdeData);
  10089. args: [],
  10090. source: "initialize\x0a\x09super initialize.",
  10091. referencedClasses: [],
  10092. //>>excludeEnd("ide");
  10093. messageSends: ["initialize"]
  10094. }),
  10095. $globals.ClassCommentReader);
  10096. $core.addMethod(
  10097. $core.method({
  10098. selector: "scanFrom:",
  10099. protocol: 'fileIn',
  10100. fn: function (aChunkParser){
  10101. var self=this;
  10102. var chunk;
  10103. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  10104. return $core.withContext(function($ctx1) {
  10105. //>>excludeEnd("ctx");
  10106. var $1;
  10107. chunk=$recv(aChunkParser)._nextChunk();
  10108. $1=$recv(chunk)._isEmpty();
  10109. if(!$core.assert($1)){
  10110. self._setComment_(chunk);
  10111. };
  10112. return self;
  10113. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  10114. }, function($ctx1) {$ctx1.fill(self,"scanFrom:",{aChunkParser:aChunkParser,chunk:chunk},$globals.ClassCommentReader)});
  10115. //>>excludeEnd("ctx");
  10116. },
  10117. //>>excludeStart("ide", pragmas.excludeIdeData);
  10118. args: ["aChunkParser"],
  10119. source: "scanFrom: aChunkParser\x0a\x09| chunk |\x0a\x09chunk := aChunkParser nextChunk.\x0a\x09chunk isEmpty ifFalse: [\x0a\x09\x09self setComment: chunk ].",
  10120. referencedClasses: [],
  10121. //>>excludeEnd("ide");
  10122. messageSends: ["nextChunk", "ifFalse:", "isEmpty", "setComment:"]
  10123. }),
  10124. $globals.ClassCommentReader);
  10125. $core.addMethod(
  10126. $core.method({
  10127. selector: "setComment:",
  10128. protocol: 'private',
  10129. fn: function (aString){
  10130. var self=this;
  10131. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  10132. return $core.withContext(function($ctx1) {
  10133. //>>excludeEnd("ctx");
  10134. $recv(self["@class"])._comment_(aString);
  10135. return self;
  10136. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  10137. }, function($ctx1) {$ctx1.fill(self,"setComment:",{aString:aString},$globals.ClassCommentReader)});
  10138. //>>excludeEnd("ctx");
  10139. },
  10140. //>>excludeStart("ide", pragmas.excludeIdeData);
  10141. args: ["aString"],
  10142. source: "setComment: aString\x0a\x09class comment: aString",
  10143. referencedClasses: [],
  10144. //>>excludeEnd("ide");
  10145. messageSends: ["comment:"]
  10146. }),
  10147. $globals.ClassCommentReader);
  10148. $core.addClass('ClassSorterNode', $globals.Object, ['theClass', 'level', 'nodes'], 'Kernel-Classes');
  10149. //>>excludeStart("ide", pragmas.excludeIdeData);
  10150. $globals.ClassSorterNode.comment="I provide an algorithm for sorting classes alphabetically.\x0a\x0aSee [Issue #143](https://github.com/amber-smalltalk/amber/issues/143) on GitHub.";
  10151. //>>excludeEnd("ide");
  10152. $core.addMethod(
  10153. $core.method({
  10154. selector: "getNodesFrom:",
  10155. protocol: 'accessing',
  10156. fn: function (aCollection){
  10157. var self=this;
  10158. var children,others;
  10159. function $ClassSorterNode(){return $globals.ClassSorterNode||(typeof ClassSorterNode=="undefined"?nil:ClassSorterNode)}
  10160. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  10161. return $core.withContext(function($ctx1) {
  10162. //>>excludeEnd("ctx");
  10163. var $1;
  10164. children=[];
  10165. others=[];
  10166. $recv(aCollection)._do_((function(each){
  10167. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  10168. return $core.withContext(function($ctx2) {
  10169. //>>excludeEnd("ctx");
  10170. $1=$recv($recv(each)._superclass()).__eq(self._theClass());
  10171. if($core.assert($1)){
  10172. return $recv(children)._add_(each);
  10173. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  10174. $ctx2.sendIdx["add:"]=1;
  10175. //>>excludeEnd("ctx");
  10176. } else {
  10177. return $recv(others)._add_(each);
  10178. };
  10179. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  10180. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  10181. //>>excludeEnd("ctx");
  10182. }));
  10183. self["@nodes"]=$recv(children)._collect_((function(each){
  10184. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  10185. return $core.withContext(function($ctx2) {
  10186. //>>excludeEnd("ctx");
  10187. return $recv($ClassSorterNode())._on_classes_level_(each,others,$recv(self._level()).__plus((1)));
  10188. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  10189. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,4)});
  10190. //>>excludeEnd("ctx");
  10191. }));
  10192. return self;
  10193. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  10194. }, function($ctx1) {$ctx1.fill(self,"getNodesFrom:",{aCollection:aCollection,children:children,others:others},$globals.ClassSorterNode)});
  10195. //>>excludeEnd("ctx");
  10196. },
  10197. //>>excludeStart("ide", pragmas.excludeIdeData);
  10198. args: ["aCollection"],
  10199. source: "getNodesFrom: aCollection\x0a\x09| children others |\x0a\x09children := #().\x0a\x09others := #().\x0a\x09aCollection do: [ :each |\x0a\x09\x09(each superclass = self theClass)\x0a\x09\x09\x09ifTrue: [ children add: each ]\x0a\x09\x09\x09ifFalse: [ others add: each ]].\x0a\x09nodes:= children collect: [ :each |\x0a\x09\x09ClassSorterNode on: each classes: others level: self level + 1 ]",
  10200. referencedClasses: ["ClassSorterNode"],
  10201. //>>excludeEnd("ide");
  10202. messageSends: ["do:", "ifTrue:ifFalse:", "=", "superclass", "theClass", "add:", "collect:", "on:classes:level:", "+", "level"]
  10203. }),
  10204. $globals.ClassSorterNode);
  10205. $core.addMethod(
  10206. $core.method({
  10207. selector: "level",
  10208. protocol: 'accessing',
  10209. fn: function (){
  10210. var self=this;
  10211. var $1;
  10212. $1=self["@level"];
  10213. return $1;
  10214. },
  10215. //>>excludeStart("ide", pragmas.excludeIdeData);
  10216. args: [],
  10217. source: "level\x0a\x09^ level",
  10218. referencedClasses: [],
  10219. //>>excludeEnd("ide");
  10220. messageSends: []
  10221. }),
  10222. $globals.ClassSorterNode);
  10223. $core.addMethod(
  10224. $core.method({
  10225. selector: "level:",
  10226. protocol: 'accessing',
  10227. fn: function (anInteger){
  10228. var self=this;
  10229. self["@level"]=anInteger;
  10230. return self;
  10231. },
  10232. //>>excludeStart("ide", pragmas.excludeIdeData);
  10233. args: ["anInteger"],
  10234. source: "level: anInteger\x0a\x09level := anInteger",
  10235. referencedClasses: [],
  10236. //>>excludeEnd("ide");
  10237. messageSends: []
  10238. }),
  10239. $globals.ClassSorterNode);
  10240. $core.addMethod(
  10241. $core.method({
  10242. selector: "nodes",
  10243. protocol: 'accessing',
  10244. fn: function (){
  10245. var self=this;
  10246. var $1;
  10247. $1=self["@nodes"];
  10248. return $1;
  10249. },
  10250. //>>excludeStart("ide", pragmas.excludeIdeData);
  10251. args: [],
  10252. source: "nodes\x0a\x09^ nodes",
  10253. referencedClasses: [],
  10254. //>>excludeEnd("ide");
  10255. messageSends: []
  10256. }),
  10257. $globals.ClassSorterNode);
  10258. $core.addMethod(
  10259. $core.method({
  10260. selector: "theClass",
  10261. protocol: 'accessing',
  10262. fn: function (){
  10263. var self=this;
  10264. var $1;
  10265. $1=self["@theClass"];
  10266. return $1;
  10267. },
  10268. //>>excludeStart("ide", pragmas.excludeIdeData);
  10269. args: [],
  10270. source: "theClass\x0a\x09^ theClass",
  10271. referencedClasses: [],
  10272. //>>excludeEnd("ide");
  10273. messageSends: []
  10274. }),
  10275. $globals.ClassSorterNode);
  10276. $core.addMethod(
  10277. $core.method({
  10278. selector: "theClass:",
  10279. protocol: 'accessing',
  10280. fn: function (aClass){
  10281. var self=this;
  10282. self["@theClass"]=aClass;
  10283. return self;
  10284. },
  10285. //>>excludeStart("ide", pragmas.excludeIdeData);
  10286. args: ["aClass"],
  10287. source: "theClass: aClass\x0a\x09theClass := aClass",
  10288. referencedClasses: [],
  10289. //>>excludeEnd("ide");
  10290. messageSends: []
  10291. }),
  10292. $globals.ClassSorterNode);
  10293. $core.addMethod(
  10294. $core.method({
  10295. selector: "traverseClassesWith:",
  10296. protocol: 'visiting',
  10297. fn: function (aCollection){
  10298. var self=this;
  10299. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  10300. return $core.withContext(function($ctx1) {
  10301. //>>excludeEnd("ctx");
  10302. var $1,$3,$2;
  10303. $1=self._theClass();
  10304. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  10305. $ctx1.sendIdx["theClass"]=1;
  10306. //>>excludeEnd("ctx");
  10307. $recv(aCollection)._add_($1);
  10308. $recv($recv(self._nodes())._sorted_((function(a,b){
  10309. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  10310. return $core.withContext(function($ctx2) {
  10311. //>>excludeEnd("ctx");
  10312. $3=$recv(a)._theClass();
  10313. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  10314. $ctx2.sendIdx["theClass"]=2;
  10315. //>>excludeEnd("ctx");
  10316. $2=$recv($3)._name();
  10317. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  10318. $ctx2.sendIdx["name"]=1;
  10319. //>>excludeEnd("ctx");
  10320. return $recv($2).__lt_eq($recv($recv(b)._theClass())._name());
  10321. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  10322. }, function($ctx2) {$ctx2.fillBlock({a:a,b:b},$ctx1,1)});
  10323. //>>excludeEnd("ctx");
  10324. })))._do_((function(aNode){
  10325. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  10326. return $core.withContext(function($ctx2) {
  10327. //>>excludeEnd("ctx");
  10328. return $recv(aNode)._traverseClassesWith_(aCollection);
  10329. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  10330. }, function($ctx2) {$ctx2.fillBlock({aNode:aNode},$ctx1,2)});
  10331. //>>excludeEnd("ctx");
  10332. }));
  10333. return self;
  10334. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  10335. }, function($ctx1) {$ctx1.fill(self,"traverseClassesWith:",{aCollection:aCollection},$globals.ClassSorterNode)});
  10336. //>>excludeEnd("ctx");
  10337. },
  10338. //>>excludeStart("ide", pragmas.excludeIdeData);
  10339. args: ["aCollection"],
  10340. source: "traverseClassesWith: aCollection\x0a\x09\x22sort classes alphabetically Issue #143\x22\x0a\x0a\x09aCollection add: self theClass.\x0a\x09(self nodes sorted: [ :a :b | a theClass name <= b theClass name ]) do: [ :aNode |\x0a\x09\x09aNode traverseClassesWith: aCollection ].",
  10341. referencedClasses: [],
  10342. //>>excludeEnd("ide");
  10343. messageSends: ["add:", "theClass", "do:", "sorted:", "nodes", "<=", "name", "traverseClassesWith:"]
  10344. }),
  10345. $globals.ClassSorterNode);
  10346. $core.addMethod(
  10347. $core.method({
  10348. selector: "on:classes:level:",
  10349. protocol: 'instance creation',
  10350. fn: function (aClass,aCollection,anInteger){
  10351. var self=this;
  10352. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  10353. return $core.withContext(function($ctx1) {
  10354. //>>excludeEnd("ctx");
  10355. var $2,$3,$1;
  10356. $2=self._new();
  10357. $recv($2)._theClass_(aClass);
  10358. $recv($2)._level_(anInteger);
  10359. $recv($2)._getNodesFrom_(aCollection);
  10360. $3=$recv($2)._yourself();
  10361. $1=$3;
  10362. return $1;
  10363. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  10364. }, function($ctx1) {$ctx1.fill(self,"on:classes:level:",{aClass:aClass,aCollection:aCollection,anInteger:anInteger},$globals.ClassSorterNode.klass)});
  10365. //>>excludeEnd("ctx");
  10366. },
  10367. //>>excludeStart("ide", pragmas.excludeIdeData);
  10368. args: ["aClass", "aCollection", "anInteger"],
  10369. source: "on: aClass classes: aCollection level: anInteger\x0a\x09^ self new\x0a\x09\x09theClass: aClass;\x0a\x09\x09level: anInteger;\x0a\x09\x09getNodesFrom: aCollection;\x0a\x09\x09yourself",
  10370. referencedClasses: [],
  10371. //>>excludeEnd("ide");
  10372. messageSends: ["theClass:", "new", "level:", "getNodesFrom:", "yourself"]
  10373. }),
  10374. $globals.ClassSorterNode.klass);
  10375. });
  10376. define("amber_core/Kernel-Methods", ["amber/boot", "amber_core/Kernel-Objects"], function($boot){
  10377. var $core=$boot.api,nil=$boot.nil,$recv=$boot.asReceiver,$globals=$boot.globals;
  10378. var smalltalk=$core,_st=$recv,globals=$globals;
  10379. $core.addPackage('Kernel-Methods');
  10380. $core.packages["Kernel-Methods"].transport = {"type":"amd","amdNamespace":"amber_core"};
  10381. $core.addClass('BlockClosure', $globals.Object, [], 'Kernel-Methods');
  10382. //>>excludeStart("ide", pragmas.excludeIdeData);
  10383. $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 | ... ] `";
  10384. //>>excludeEnd("ide");
  10385. $core.addMethod(
  10386. $core.method({
  10387. selector: "applyTo:arguments:",
  10388. protocol: 'evaluating',
  10389. fn: function (anObject,aCollection){
  10390. var self=this;
  10391. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  10392. return $core.withContext(function($ctx1) {
  10393. //>>excludeEnd("ctx");
  10394. return self.apply(anObject, aCollection);
  10395. return self;
  10396. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  10397. }, function($ctx1) {$ctx1.fill(self,"applyTo:arguments:",{anObject:anObject,aCollection:aCollection},$globals.BlockClosure)});
  10398. //>>excludeEnd("ctx");
  10399. },
  10400. //>>excludeStart("ide", pragmas.excludeIdeData);
  10401. args: ["anObject", "aCollection"],
  10402. source: "applyTo: anObject arguments: aCollection\x0a\x09<return self.apply(anObject, aCollection)>",
  10403. referencedClasses: [],
  10404. //>>excludeEnd("ide");
  10405. messageSends: []
  10406. }),
  10407. $globals.BlockClosure);
  10408. $core.addMethod(
  10409. $core.method({
  10410. selector: "asCompiledMethod:",
  10411. protocol: 'converting',
  10412. fn: function (aString){
  10413. var self=this;
  10414. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  10415. return $core.withContext(function($ctx1) {
  10416. //>>excludeEnd("ctx");
  10417. return $core.method({selector:aString, fn:self});;
  10418. return self;
  10419. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  10420. }, function($ctx1) {$ctx1.fill(self,"asCompiledMethod:",{aString:aString},$globals.BlockClosure)});
  10421. //>>excludeEnd("ctx");
  10422. },
  10423. //>>excludeStart("ide", pragmas.excludeIdeData);
  10424. args: ["aString"],
  10425. source: "asCompiledMethod: aString\x0a\x09<return $core.method({selector:aString, fn:self});>",
  10426. referencedClasses: [],
  10427. //>>excludeEnd("ide");
  10428. messageSends: []
  10429. }),
  10430. $globals.BlockClosure);
  10431. $core.addMethod(
  10432. $core.method({
  10433. selector: "compiledSource",
  10434. protocol: 'accessing',
  10435. fn: function (){
  10436. var self=this;
  10437. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  10438. return $core.withContext(function($ctx1) {
  10439. //>>excludeEnd("ctx");
  10440. return self.toString();
  10441. return self;
  10442. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  10443. }, function($ctx1) {$ctx1.fill(self,"compiledSource",{},$globals.BlockClosure)});
  10444. //>>excludeEnd("ctx");
  10445. },
  10446. //>>excludeStart("ide", pragmas.excludeIdeData);
  10447. args: [],
  10448. source: "compiledSource\x0a\x09<return self.toString()>",
  10449. referencedClasses: [],
  10450. //>>excludeEnd("ide");
  10451. messageSends: []
  10452. }),
  10453. $globals.BlockClosure);
  10454. $core.addMethod(
  10455. $core.method({
  10456. selector: "currySelf",
  10457. protocol: 'converting',
  10458. fn: function (){
  10459. var self=this;
  10460. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  10461. return $core.withContext(function($ctx1) {
  10462. //>>excludeEnd("ctx");
  10463. return function () {
  10464. var args = [ this ];
  10465. args.push.apply(args, arguments);
  10466. return self.apply(null, args);
  10467. }
  10468. ;
  10469. return self;
  10470. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  10471. }, function($ctx1) {$ctx1.fill(self,"currySelf",{},$globals.BlockClosure)});
  10472. //>>excludeEnd("ctx");
  10473. },
  10474. //>>excludeStart("ide", pragmas.excludeIdeData);
  10475. args: [],
  10476. 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<\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>",
  10477. referencedClasses: [],
  10478. //>>excludeEnd("ide");
  10479. messageSends: []
  10480. }),
  10481. $globals.BlockClosure);
  10482. $core.addMethod(
  10483. $core.method({
  10484. selector: "ensure:",
  10485. protocol: 'evaluating',
  10486. fn: function (aBlock){
  10487. var self=this;
  10488. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  10489. return $core.withContext(function($ctx1) {
  10490. //>>excludeEnd("ctx");
  10491. try{return self._value()}finally{aBlock._value()};
  10492. return self;
  10493. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  10494. }, function($ctx1) {$ctx1.fill(self,"ensure:",{aBlock:aBlock},$globals.BlockClosure)});
  10495. //>>excludeEnd("ctx");
  10496. },
  10497. //>>excludeStart("ide", pragmas.excludeIdeData);
  10498. args: ["aBlock"],
  10499. source: "ensure: aBlock\x0a\x09<try{return self._value()}finally{aBlock._value()}>",
  10500. referencedClasses: [],
  10501. //>>excludeEnd("ide");
  10502. messageSends: []
  10503. }),
  10504. $globals.BlockClosure);
  10505. $core.addMethod(
  10506. $core.method({
  10507. selector: "fork",
  10508. protocol: 'timeout/interval',
  10509. fn: function (){
  10510. var self=this;
  10511. function $ForkPool(){return $globals.ForkPool||(typeof ForkPool=="undefined"?nil:ForkPool)}
  10512. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  10513. return $core.withContext(function($ctx1) {
  10514. //>>excludeEnd("ctx");
  10515. $recv($recv($ForkPool())._default())._fork_(self);
  10516. return self;
  10517. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  10518. }, function($ctx1) {$ctx1.fill(self,"fork",{},$globals.BlockClosure)});
  10519. //>>excludeEnd("ctx");
  10520. },
  10521. //>>excludeStart("ide", pragmas.excludeIdeData);
  10522. args: [],
  10523. source: "fork\x0a\x09ForkPool default fork: self",
  10524. referencedClasses: ["ForkPool"],
  10525. //>>excludeEnd("ide");
  10526. messageSends: ["fork:", "default"]
  10527. }),
  10528. $globals.BlockClosure);
  10529. $core.addMethod(
  10530. $core.method({
  10531. selector: "new",
  10532. protocol: 'evaluating',
  10533. fn: function (){
  10534. var self=this;
  10535. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  10536. return $core.withContext(function($ctx1) {
  10537. //>>excludeEnd("ctx");
  10538. return new self();
  10539. return self;
  10540. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  10541. }, function($ctx1) {$ctx1.fill(self,"new",{},$globals.BlockClosure)});
  10542. //>>excludeEnd("ctx");
  10543. },
  10544. //>>excludeStart("ide", pragmas.excludeIdeData);
  10545. args: [],
  10546. 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<return new self()>",
  10547. referencedClasses: [],
  10548. //>>excludeEnd("ide");
  10549. messageSends: []
  10550. }),
  10551. $globals.BlockClosure);
  10552. $core.addMethod(
  10553. $core.method({
  10554. selector: "newValue:",
  10555. protocol: 'evaluating',
  10556. fn: function (anObject){
  10557. var self=this;
  10558. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  10559. return $core.withContext(function($ctx1) {
  10560. //>>excludeEnd("ctx");
  10561. var $1;
  10562. $1=self._newWithValues_([anObject]);
  10563. return $1;
  10564. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  10565. }, function($ctx1) {$ctx1.fill(self,"newValue:",{anObject:anObject},$globals.BlockClosure)});
  10566. //>>excludeEnd("ctx");
  10567. },
  10568. //>>excludeStart("ide", pragmas.excludeIdeData);
  10569. args: ["anObject"],
  10570. source: "newValue: anObject\x0a\x09^ self newWithValues: { anObject }",
  10571. referencedClasses: [],
  10572. //>>excludeEnd("ide");
  10573. messageSends: ["newWithValues:"]
  10574. }),
  10575. $globals.BlockClosure);
  10576. $core.addMethod(
  10577. $core.method({
  10578. selector: "newValue:value:",
  10579. protocol: 'evaluating',
  10580. fn: function (anObject,anObject2){
  10581. var self=this;
  10582. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  10583. return $core.withContext(function($ctx1) {
  10584. //>>excludeEnd("ctx");
  10585. var $1;
  10586. $1=self._newWithValues_([anObject,anObject2]);
  10587. return $1;
  10588. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  10589. }, function($ctx1) {$ctx1.fill(self,"newValue:value:",{anObject:anObject,anObject2:anObject2},$globals.BlockClosure)});
  10590. //>>excludeEnd("ctx");
  10591. },
  10592. //>>excludeStart("ide", pragmas.excludeIdeData);
  10593. args: ["anObject", "anObject2"],
  10594. source: "newValue: anObject value: anObject2\x0a\x09^ self newWithValues: { anObject. anObject2 }.",
  10595. referencedClasses: [],
  10596. //>>excludeEnd("ide");
  10597. messageSends: ["newWithValues:"]
  10598. }),
  10599. $globals.BlockClosure);
  10600. $core.addMethod(
  10601. $core.method({
  10602. selector: "newValue:value:value:",
  10603. protocol: 'evaluating',
  10604. fn: function (anObject,anObject2,anObject3){
  10605. var self=this;
  10606. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  10607. return $core.withContext(function($ctx1) {
  10608. //>>excludeEnd("ctx");
  10609. var $1;
  10610. $1=self._newWithValues_([anObject,anObject2,anObject3]);
  10611. return $1;
  10612. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  10613. }, function($ctx1) {$ctx1.fill(self,"newValue:value:value:",{anObject:anObject,anObject2:anObject2,anObject3:anObject3},$globals.BlockClosure)});
  10614. //>>excludeEnd("ctx");
  10615. },
  10616. //>>excludeStart("ide", pragmas.excludeIdeData);
  10617. args: ["anObject", "anObject2", "anObject3"],
  10618. source: "newValue: anObject value: anObject2 value: anObject3\x0a\x09^ self newWithValues: { anObject. anObject2. anObject3 }.",
  10619. referencedClasses: [],
  10620. //>>excludeEnd("ide");
  10621. messageSends: ["newWithValues:"]
  10622. }),
  10623. $globals.BlockClosure);
  10624. $core.addMethod(
  10625. $core.method({
  10626. selector: "newWithValues:",
  10627. protocol: 'evaluating',
  10628. fn: function (aCollection){
  10629. var self=this;
  10630. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  10631. return $core.withContext(function($ctx1) {
  10632. //>>excludeEnd("ctx");
  10633. var object = Object.create(self.prototype);
  10634. var result = self.apply(object, aCollection);
  10635. return typeof result === "object" ? result : object;
  10636. ;
  10637. return self;
  10638. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  10639. }, function($ctx1) {$ctx1.fill(self,"newWithValues:",{aCollection:aCollection},$globals.BlockClosure)});
  10640. //>>excludeEnd("ctx");
  10641. },
  10642. //>>excludeStart("ide", pragmas.excludeIdeData);
  10643. args: ["aCollection"],
  10644. source: "newWithValues: aCollection\x0a\x09\x22Simulates JS new operator by combination of Object.create and .apply\x22\x0a\x09<\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>",
  10645. referencedClasses: [],
  10646. //>>excludeEnd("ide");
  10647. messageSends: []
  10648. }),
  10649. $globals.BlockClosure);
  10650. $core.addMethod(
  10651. $core.method({
  10652. selector: "numArgs",
  10653. protocol: 'accessing',
  10654. fn: function (){
  10655. var self=this;
  10656. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  10657. return $core.withContext(function($ctx1) {
  10658. //>>excludeEnd("ctx");
  10659. return self.length;
  10660. return self;
  10661. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  10662. }, function($ctx1) {$ctx1.fill(self,"numArgs",{},$globals.BlockClosure)});
  10663. //>>excludeEnd("ctx");
  10664. },
  10665. //>>excludeStart("ide", pragmas.excludeIdeData);
  10666. args: [],
  10667. source: "numArgs\x0a\x09<return self.length>",
  10668. referencedClasses: [],
  10669. //>>excludeEnd("ide");
  10670. messageSends: []
  10671. }),
  10672. $globals.BlockClosure);
  10673. $core.addMethod(
  10674. $core.method({
  10675. selector: "on:do:",
  10676. protocol: 'error handling',
  10677. fn: function (anErrorClass,aBlock){
  10678. var self=this;
  10679. function $Smalltalk(){return $globals.Smalltalk||(typeof Smalltalk=="undefined"?nil:Smalltalk)}
  10680. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  10681. return $core.withContext(function($ctx1) {
  10682. //>>excludeEnd("ctx");
  10683. var $2,$1;
  10684. $1=self._tryCatch_((function(error){
  10685. var smalltalkError;
  10686. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  10687. return $core.withContext(function($ctx2) {
  10688. //>>excludeEnd("ctx");
  10689. smalltalkError=$recv($Smalltalk())._asSmalltalkException_(error);
  10690. smalltalkError;
  10691. $2=$recv(smalltalkError)._isKindOf_(anErrorClass);
  10692. if($core.assert($2)){
  10693. return $recv(aBlock)._value_(smalltalkError);
  10694. } else {
  10695. return $recv(smalltalkError)._resignal();
  10696. };
  10697. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  10698. }, function($ctx2) {$ctx2.fillBlock({error:error,smalltalkError:smalltalkError},$ctx1,1)});
  10699. //>>excludeEnd("ctx");
  10700. }));
  10701. return $1;
  10702. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  10703. }, function($ctx1) {$ctx1.fill(self,"on:do:",{anErrorClass:anErrorClass,aBlock:aBlock},$globals.BlockClosure)});
  10704. //>>excludeEnd("ctx");
  10705. },
  10706. //>>excludeStart("ide", pragmas.excludeIdeData);
  10707. args: ["anErrorClass", "aBlock"],
  10708. source: "on: anErrorClass do: aBlock\x0a\x09\x22All exceptions thrown in the Smalltalk stack are cought.\x0a\x09Convert all JS exceptions to JavaScriptException instances.\x22\x0a\x09\x0a\x09^ self tryCatch: [ :error | | smalltalkError |\x0a\x09\x09smalltalkError := Smalltalk asSmalltalkException: error.\x0a\x09\x09(smalltalkError isKindOf: anErrorClass)\x0a\x09\x09ifTrue: [ aBlock value: smalltalkError ]\x0a\x09\x09ifFalse: [ smalltalkError resignal ] ]",
  10709. referencedClasses: ["Smalltalk"],
  10710. //>>excludeEnd("ide");
  10711. messageSends: ["tryCatch:", "asSmalltalkException:", "ifTrue:ifFalse:", "isKindOf:", "value:", "resignal"]
  10712. }),
  10713. $globals.BlockClosure);
  10714. $core.addMethod(
  10715. $core.method({
  10716. selector: "receiver",
  10717. protocol: 'accessing',
  10718. fn: function (){
  10719. var self=this;
  10720. return nil;
  10721. },
  10722. //>>excludeStart("ide", pragmas.excludeIdeData);
  10723. args: [],
  10724. source: "receiver\x0a\x09^ nil",
  10725. referencedClasses: [],
  10726. //>>excludeEnd("ide");
  10727. messageSends: []
  10728. }),
  10729. $globals.BlockClosure);
  10730. $core.addMethod(
  10731. $core.method({
  10732. selector: "timeToRun",
  10733. protocol: 'evaluating',
  10734. fn: function (){
  10735. var self=this;
  10736. function $Date(){return $globals.Date||(typeof Date=="undefined"?nil:Date)}
  10737. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  10738. return $core.withContext(function($ctx1) {
  10739. //>>excludeEnd("ctx");
  10740. var $1;
  10741. $1=$recv($Date())._millisecondsToRun_(self);
  10742. return $1;
  10743. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  10744. }, function($ctx1) {$ctx1.fill(self,"timeToRun",{},$globals.BlockClosure)});
  10745. //>>excludeEnd("ctx");
  10746. },
  10747. //>>excludeStart("ide", pragmas.excludeIdeData);
  10748. args: [],
  10749. source: "timeToRun\x0a\x09\x22Answer the number of milliseconds taken to execute this block.\x22\x0a\x0a\x09^ Date millisecondsToRun: self",
  10750. referencedClasses: ["Date"],
  10751. //>>excludeEnd("ide");
  10752. messageSends: ["millisecondsToRun:"]
  10753. }),
  10754. $globals.BlockClosure);
  10755. $core.addMethod(
  10756. $core.method({
  10757. selector: "tryCatch:",
  10758. protocol: 'error handling',
  10759. fn: function (aBlock){
  10760. var self=this;
  10761. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  10762. return $core.withContext(function($ctx1) {
  10763. //>>excludeEnd("ctx");
  10764. try {
  10765. return self._value();
  10766. } catch(error) {
  10767. return aBlock._value_(error);
  10768. }
  10769. ;
  10770. return self;
  10771. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  10772. }, function($ctx1) {$ctx1.fill(self,"tryCatch:",{aBlock:aBlock},$globals.BlockClosure)});
  10773. //>>excludeEnd("ctx");
  10774. },
  10775. //>>excludeStart("ide", pragmas.excludeIdeData);
  10776. args: ["aBlock"],
  10777. source: "tryCatch: aBlock\x0a\x09<\x0a\x09\x09try {\x0a\x09\x09\x09return self._value();\x0a\x09\x09} catch(error) {\x0a\x09\x09\x09return aBlock._value_(error);\x0a\x09\x09}\x0a\x09>",
  10778. referencedClasses: [],
  10779. //>>excludeEnd("ide");
  10780. messageSends: []
  10781. }),
  10782. $globals.BlockClosure);
  10783. $core.addMethod(
  10784. $core.method({
  10785. selector: "value",
  10786. protocol: 'evaluating',
  10787. fn: function (){
  10788. var self=this;
  10789. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  10790. return $core.withContext(function($ctx1) {
  10791. //>>excludeEnd("ctx");
  10792. return self();;
  10793. return self;
  10794. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  10795. }, function($ctx1) {$ctx1.fill(self,"value",{},$globals.BlockClosure)});
  10796. //>>excludeEnd("ctx");
  10797. },
  10798. //>>excludeStart("ide", pragmas.excludeIdeData);
  10799. args: [],
  10800. source: "value\x0a\x09<return self();>",
  10801. referencedClasses: [],
  10802. //>>excludeEnd("ide");
  10803. messageSends: []
  10804. }),
  10805. $globals.BlockClosure);
  10806. $core.addMethod(
  10807. $core.method({
  10808. selector: "value:",
  10809. protocol: 'evaluating',
  10810. fn: function (anArg){
  10811. var self=this;
  10812. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  10813. return $core.withContext(function($ctx1) {
  10814. //>>excludeEnd("ctx");
  10815. return self(anArg);;
  10816. return self;
  10817. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  10818. }, function($ctx1) {$ctx1.fill(self,"value:",{anArg:anArg},$globals.BlockClosure)});
  10819. //>>excludeEnd("ctx");
  10820. },
  10821. //>>excludeStart("ide", pragmas.excludeIdeData);
  10822. args: ["anArg"],
  10823. source: "value: anArg\x0a\x09<return self(anArg);>",
  10824. referencedClasses: [],
  10825. //>>excludeEnd("ide");
  10826. messageSends: []
  10827. }),
  10828. $globals.BlockClosure);
  10829. $core.addMethod(
  10830. $core.method({
  10831. selector: "value:value:",
  10832. protocol: 'evaluating',
  10833. fn: function (firstArg,secondArg){
  10834. var self=this;
  10835. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  10836. return $core.withContext(function($ctx1) {
  10837. //>>excludeEnd("ctx");
  10838. return self(firstArg, secondArg);;
  10839. return self;
  10840. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  10841. }, function($ctx1) {$ctx1.fill(self,"value:value:",{firstArg:firstArg,secondArg:secondArg},$globals.BlockClosure)});
  10842. //>>excludeEnd("ctx");
  10843. },
  10844. //>>excludeStart("ide", pragmas.excludeIdeData);
  10845. args: ["firstArg", "secondArg"],
  10846. source: "value: firstArg value: secondArg\x0a\x09<return self(firstArg, secondArg);>",
  10847. referencedClasses: [],
  10848. //>>excludeEnd("ide");
  10849. messageSends: []
  10850. }),
  10851. $globals.BlockClosure);
  10852. $core.addMethod(
  10853. $core.method({
  10854. selector: "value:value:value:",
  10855. protocol: 'evaluating',
  10856. fn: function (firstArg,secondArg,thirdArg){
  10857. var self=this;
  10858. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  10859. return $core.withContext(function($ctx1) {
  10860. //>>excludeEnd("ctx");
  10861. return self(firstArg, secondArg, thirdArg);;
  10862. return self;
  10863. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  10864. }, function($ctx1) {$ctx1.fill(self,"value:value:value:",{firstArg:firstArg,secondArg:secondArg,thirdArg:thirdArg},$globals.BlockClosure)});
  10865. //>>excludeEnd("ctx");
  10866. },
  10867. //>>excludeStart("ide", pragmas.excludeIdeData);
  10868. args: ["firstArg", "secondArg", "thirdArg"],
  10869. source: "value: firstArg value: secondArg value: thirdArg\x0a\x09<return self(firstArg, secondArg, thirdArg);>",
  10870. referencedClasses: [],
  10871. //>>excludeEnd("ide");
  10872. messageSends: []
  10873. }),
  10874. $globals.BlockClosure);
  10875. $core.addMethod(
  10876. $core.method({
  10877. selector: "valueWithInterval:",
  10878. protocol: 'timeout/interval',
  10879. fn: function (aNumber){
  10880. var self=this;
  10881. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  10882. return $core.withContext(function($ctx1) {
  10883. //>>excludeEnd("ctx");
  10884. var interval = setInterval(self, aNumber);
  10885. return $globals.Timeout._on_(interval);
  10886. ;
  10887. return self;
  10888. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  10889. }, function($ctx1) {$ctx1.fill(self,"valueWithInterval:",{aNumber:aNumber},$globals.BlockClosure)});
  10890. //>>excludeEnd("ctx");
  10891. },
  10892. //>>excludeStart("ide", pragmas.excludeIdeData);
  10893. args: ["aNumber"],
  10894. source: "valueWithInterval: aNumber\x0a\x09<\x0a\x09\x09var interval = setInterval(self, aNumber);\x0a\x09\x09return $globals.Timeout._on_(interval);\x0a\x09>",
  10895. referencedClasses: [],
  10896. //>>excludeEnd("ide");
  10897. messageSends: []
  10898. }),
  10899. $globals.BlockClosure);
  10900. $core.addMethod(
  10901. $core.method({
  10902. selector: "valueWithPossibleArguments:",
  10903. protocol: 'evaluating',
  10904. fn: function (aCollection){
  10905. var self=this;
  10906. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  10907. return $core.withContext(function($ctx1) {
  10908. //>>excludeEnd("ctx");
  10909. return self.apply(null, aCollection);;
  10910. return self;
  10911. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  10912. }, function($ctx1) {$ctx1.fill(self,"valueWithPossibleArguments:",{aCollection:aCollection},$globals.BlockClosure)});
  10913. //>>excludeEnd("ctx");
  10914. },
  10915. //>>excludeStart("ide", pragmas.excludeIdeData);
  10916. args: ["aCollection"],
  10917. source: "valueWithPossibleArguments: aCollection\x0a\x09<return self.apply(null, aCollection);>",
  10918. referencedClasses: [],
  10919. //>>excludeEnd("ide");
  10920. messageSends: []
  10921. }),
  10922. $globals.BlockClosure);
  10923. $core.addMethod(
  10924. $core.method({
  10925. selector: "valueWithTimeout:",
  10926. protocol: 'timeout/interval',
  10927. fn: function (aNumber){
  10928. var self=this;
  10929. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  10930. return $core.withContext(function($ctx1) {
  10931. //>>excludeEnd("ctx");
  10932. var timeout = setTimeout(self, aNumber);
  10933. return $globals.Timeout._on_(timeout);
  10934. ;
  10935. return self;
  10936. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  10937. }, function($ctx1) {$ctx1.fill(self,"valueWithTimeout:",{aNumber:aNumber},$globals.BlockClosure)});
  10938. //>>excludeEnd("ctx");
  10939. },
  10940. //>>excludeStart("ide", pragmas.excludeIdeData);
  10941. args: ["aNumber"],
  10942. source: "valueWithTimeout: aNumber\x0a\x09<\x0a\x09\x09var timeout = setTimeout(self, aNumber);\x0a\x09\x09return $globals.Timeout._on_(timeout);\x0a\x09>",
  10943. referencedClasses: [],
  10944. //>>excludeEnd("ide");
  10945. messageSends: []
  10946. }),
  10947. $globals.BlockClosure);
  10948. $core.addMethod(
  10949. $core.method({
  10950. selector: "whileFalse",
  10951. protocol: 'controlling',
  10952. fn: function (){
  10953. var self=this;
  10954. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  10955. return $core.withContext(function($ctx1) {
  10956. //>>excludeEnd("ctx");
  10957. self._whileFalse_((function(){
  10958. }));
  10959. return self;
  10960. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  10961. }, function($ctx1) {$ctx1.fill(self,"whileFalse",{},$globals.BlockClosure)});
  10962. //>>excludeEnd("ctx");
  10963. },
  10964. //>>excludeStart("ide", pragmas.excludeIdeData);
  10965. args: [],
  10966. source: "whileFalse\x0a\x09self whileFalse: []",
  10967. referencedClasses: [],
  10968. //>>excludeEnd("ide");
  10969. messageSends: ["whileFalse:"]
  10970. }),
  10971. $globals.BlockClosure);
  10972. $core.addMethod(
  10973. $core.method({
  10974. selector: "whileFalse:",
  10975. protocol: 'controlling',
  10976. fn: function (aBlock){
  10977. var self=this;
  10978. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  10979. return $core.withContext(function($ctx1) {
  10980. //>>excludeEnd("ctx");
  10981. while(!$core.assert(self._value())) {aBlock._value()};
  10982. return self;
  10983. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  10984. }, function($ctx1) {$ctx1.fill(self,"whileFalse:",{aBlock:aBlock},$globals.BlockClosure)});
  10985. //>>excludeEnd("ctx");
  10986. },
  10987. //>>excludeStart("ide", pragmas.excludeIdeData);
  10988. args: ["aBlock"],
  10989. source: "whileFalse: aBlock\x0a\x09<while(!$core.assert(self._value())) {aBlock._value()}>",
  10990. referencedClasses: [],
  10991. //>>excludeEnd("ide");
  10992. messageSends: []
  10993. }),
  10994. $globals.BlockClosure);
  10995. $core.addMethod(
  10996. $core.method({
  10997. selector: "whileTrue",
  10998. protocol: 'controlling',
  10999. fn: function (){
  11000. var self=this;
  11001. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11002. return $core.withContext(function($ctx1) {
  11003. //>>excludeEnd("ctx");
  11004. self._whileTrue_((function(){
  11005. }));
  11006. return self;
  11007. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11008. }, function($ctx1) {$ctx1.fill(self,"whileTrue",{},$globals.BlockClosure)});
  11009. //>>excludeEnd("ctx");
  11010. },
  11011. //>>excludeStart("ide", pragmas.excludeIdeData);
  11012. args: [],
  11013. source: "whileTrue\x0a\x09self whileTrue: []",
  11014. referencedClasses: [],
  11015. //>>excludeEnd("ide");
  11016. messageSends: ["whileTrue:"]
  11017. }),
  11018. $globals.BlockClosure);
  11019. $core.addMethod(
  11020. $core.method({
  11021. selector: "whileTrue:",
  11022. protocol: 'controlling',
  11023. fn: function (aBlock){
  11024. var self=this;
  11025. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11026. return $core.withContext(function($ctx1) {
  11027. //>>excludeEnd("ctx");
  11028. while($core.assert(self._value())) {aBlock._value()};
  11029. return self;
  11030. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11031. }, function($ctx1) {$ctx1.fill(self,"whileTrue:",{aBlock:aBlock},$globals.BlockClosure)});
  11032. //>>excludeEnd("ctx");
  11033. },
  11034. //>>excludeStart("ide", pragmas.excludeIdeData);
  11035. args: ["aBlock"],
  11036. source: "whileTrue: aBlock\x0a\x09<while($core.assert(self._value())) {aBlock._value()}>",
  11037. referencedClasses: [],
  11038. //>>excludeEnd("ide");
  11039. messageSends: []
  11040. }),
  11041. $globals.BlockClosure);
  11042. $core.addClass('CompiledMethod', $globals.Object, [], 'Kernel-Methods');
  11043. //>>excludeStart("ide", pragmas.excludeIdeData);
  11044. $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";
  11045. //>>excludeEnd("ide");
  11046. $core.addMethod(
  11047. $core.method({
  11048. selector: "arguments",
  11049. protocol: 'accessing',
  11050. fn: function (){
  11051. var self=this;
  11052. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11053. return $core.withContext(function($ctx1) {
  11054. //>>excludeEnd("ctx");
  11055. return self.args || [];
  11056. return self;
  11057. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11058. }, function($ctx1) {$ctx1.fill(self,"arguments",{},$globals.CompiledMethod)});
  11059. //>>excludeEnd("ctx");
  11060. },
  11061. //>>excludeStart("ide", pragmas.excludeIdeData);
  11062. args: [],
  11063. source: "arguments\x0a\x09<return self.args || []>",
  11064. referencedClasses: [],
  11065. //>>excludeEnd("ide");
  11066. messageSends: []
  11067. }),
  11068. $globals.CompiledMethod);
  11069. $core.addMethod(
  11070. $core.method({
  11071. selector: "browse",
  11072. protocol: 'browsing',
  11073. fn: function (){
  11074. var self=this;
  11075. function $Finder(){return $globals.Finder||(typeof Finder=="undefined"?nil:Finder)}
  11076. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11077. return $core.withContext(function($ctx1) {
  11078. //>>excludeEnd("ctx");
  11079. $recv($Finder())._findMethod_(self);
  11080. return self;
  11081. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11082. }, function($ctx1) {$ctx1.fill(self,"browse",{},$globals.CompiledMethod)});
  11083. //>>excludeEnd("ctx");
  11084. },
  11085. //>>excludeStart("ide", pragmas.excludeIdeData);
  11086. args: [],
  11087. source: "browse\x0a\x09Finder findMethod: self",
  11088. referencedClasses: ["Finder"],
  11089. //>>excludeEnd("ide");
  11090. messageSends: ["findMethod:"]
  11091. }),
  11092. $globals.CompiledMethod);
  11093. $core.addMethod(
  11094. $core.method({
  11095. selector: "category",
  11096. protocol: 'accessing',
  11097. fn: function (){
  11098. var self=this;
  11099. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11100. return $core.withContext(function($ctx1) {
  11101. //>>excludeEnd("ctx");
  11102. var $1;
  11103. $1=self._protocol();
  11104. return $1;
  11105. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11106. }, function($ctx1) {$ctx1.fill(self,"category",{},$globals.CompiledMethod)});
  11107. //>>excludeEnd("ctx");
  11108. },
  11109. //>>excludeStart("ide", pragmas.excludeIdeData);
  11110. args: [],
  11111. source: "category\x0a\x09^ self protocol",
  11112. referencedClasses: [],
  11113. //>>excludeEnd("ide");
  11114. messageSends: ["protocol"]
  11115. }),
  11116. $globals.CompiledMethod);
  11117. $core.addMethod(
  11118. $core.method({
  11119. selector: "defaultProtocol",
  11120. protocol: 'defaults',
  11121. fn: function (){
  11122. var self=this;
  11123. return "as yet unclassified";
  11124. },
  11125. //>>excludeStart("ide", pragmas.excludeIdeData);
  11126. args: [],
  11127. source: "defaultProtocol\x0a\x09^ 'as yet unclassified'",
  11128. referencedClasses: [],
  11129. //>>excludeEnd("ide");
  11130. messageSends: []
  11131. }),
  11132. $globals.CompiledMethod);
  11133. $core.addMethod(
  11134. $core.method({
  11135. selector: "fn",
  11136. protocol: 'accessing',
  11137. fn: function (){
  11138. var self=this;
  11139. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11140. return $core.withContext(function($ctx1) {
  11141. //>>excludeEnd("ctx");
  11142. var $1;
  11143. $1=self._basicAt_("fn");
  11144. return $1;
  11145. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11146. }, function($ctx1) {$ctx1.fill(self,"fn",{},$globals.CompiledMethod)});
  11147. //>>excludeEnd("ctx");
  11148. },
  11149. //>>excludeStart("ide", pragmas.excludeIdeData);
  11150. args: [],
  11151. source: "fn\x0a\x09^ self basicAt: 'fn'",
  11152. referencedClasses: [],
  11153. //>>excludeEnd("ide");
  11154. messageSends: ["basicAt:"]
  11155. }),
  11156. $globals.CompiledMethod);
  11157. $core.addMethod(
  11158. $core.method({
  11159. selector: "fn:",
  11160. protocol: 'accessing',
  11161. fn: function (aBlock){
  11162. var self=this;
  11163. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11164. return $core.withContext(function($ctx1) {
  11165. //>>excludeEnd("ctx");
  11166. self._basicAt_put_("fn",aBlock);
  11167. return self;
  11168. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11169. }, function($ctx1) {$ctx1.fill(self,"fn:",{aBlock:aBlock},$globals.CompiledMethod)});
  11170. //>>excludeEnd("ctx");
  11171. },
  11172. //>>excludeStart("ide", pragmas.excludeIdeData);
  11173. args: ["aBlock"],
  11174. source: "fn: aBlock\x0a\x09self basicAt: 'fn' put: aBlock",
  11175. referencedClasses: [],
  11176. //>>excludeEnd("ide");
  11177. messageSends: ["basicAt:put:"]
  11178. }),
  11179. $globals.CompiledMethod);
  11180. $core.addMethod(
  11181. $core.method({
  11182. selector: "isCompiledMethod",
  11183. protocol: 'testing',
  11184. fn: function (){
  11185. var self=this;
  11186. return true;
  11187. },
  11188. //>>excludeStart("ide", pragmas.excludeIdeData);
  11189. args: [],
  11190. source: "isCompiledMethod\x0a\x09^ true",
  11191. referencedClasses: [],
  11192. //>>excludeEnd("ide");
  11193. messageSends: []
  11194. }),
  11195. $globals.CompiledMethod);
  11196. $core.addMethod(
  11197. $core.method({
  11198. selector: "isOverridden",
  11199. protocol: 'testing',
  11200. fn: function (){
  11201. var self=this;
  11202. var selector;
  11203. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11204. return $core.withContext(function($ctx1) {
  11205. //>>excludeEnd("ctx");
  11206. var $1;
  11207. var $early={};
  11208. try {
  11209. selector=self._selector();
  11210. $recv(self._methodClass())._allSubclassesDo_((function(each){
  11211. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11212. return $core.withContext(function($ctx2) {
  11213. //>>excludeEnd("ctx");
  11214. $1=$recv(each)._includesSelector_(selector);
  11215. if($core.assert($1)){
  11216. throw $early=[true];
  11217. };
  11218. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11219. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  11220. //>>excludeEnd("ctx");
  11221. }));
  11222. return false;
  11223. }
  11224. catch(e) {if(e===$early)return e[0]; throw e}
  11225. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11226. }, function($ctx1) {$ctx1.fill(self,"isOverridden",{selector:selector},$globals.CompiledMethod)});
  11227. //>>excludeEnd("ctx");
  11228. },
  11229. //>>excludeStart("ide", pragmas.excludeIdeData);
  11230. args: [],
  11231. source: "isOverridden\x0a\x09| selector |\x0a \x0a selector := self selector.\x0a self methodClass allSubclassesDo: [ :each |\x0a\x09 (each includesSelector: selector)\x0a \x09ifTrue: [ ^ true ] ].\x0a\x09^ false",
  11232. referencedClasses: [],
  11233. //>>excludeEnd("ide");
  11234. messageSends: ["selector", "allSubclassesDo:", "methodClass", "ifTrue:", "includesSelector:"]
  11235. }),
  11236. $globals.CompiledMethod);
  11237. $core.addMethod(
  11238. $core.method({
  11239. selector: "isOverride",
  11240. protocol: 'testing',
  11241. fn: function (){
  11242. var self=this;
  11243. var superclass;
  11244. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11245. return $core.withContext(function($ctx1) {
  11246. //>>excludeEnd("ctx");
  11247. var $1,$2,$3,$receiver;
  11248. $1=self._methodClass();
  11249. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11250. $ctx1.sendIdx["methodClass"]=1;
  11251. //>>excludeEnd("ctx");
  11252. superclass=$recv($1)._superclass();
  11253. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11254. $ctx1.sendIdx["superclass"]=1;
  11255. //>>excludeEnd("ctx");
  11256. $2=superclass;
  11257. if(($receiver = $2) == null || $receiver.isNil){
  11258. return false;
  11259. } else {
  11260. $2;
  11261. };
  11262. $3=$recv($recv($recv(self._methodClass())._superclass())._lookupSelector_(self._selector()))._notNil();
  11263. return $3;
  11264. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11265. }, function($ctx1) {$ctx1.fill(self,"isOverride",{superclass:superclass},$globals.CompiledMethod)});
  11266. //>>excludeEnd("ctx");
  11267. },
  11268. //>>excludeStart("ide", pragmas.excludeIdeData);
  11269. args: [],
  11270. 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",
  11271. referencedClasses: [],
  11272. //>>excludeEnd("ide");
  11273. messageSends: ["superclass", "methodClass", "ifNil:", "notNil", "lookupSelector:", "selector"]
  11274. }),
  11275. $globals.CompiledMethod);
  11276. $core.addMethod(
  11277. $core.method({
  11278. selector: "messageSends",
  11279. protocol: 'accessing',
  11280. fn: function (){
  11281. var self=this;
  11282. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11283. return $core.withContext(function($ctx1) {
  11284. //>>excludeEnd("ctx");
  11285. var $1;
  11286. $1=self._basicAt_("messageSends");
  11287. return $1;
  11288. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11289. }, function($ctx1) {$ctx1.fill(self,"messageSends",{},$globals.CompiledMethod)});
  11290. //>>excludeEnd("ctx");
  11291. },
  11292. //>>excludeStart("ide", pragmas.excludeIdeData);
  11293. args: [],
  11294. source: "messageSends\x0a\x09^ self basicAt: 'messageSends'",
  11295. referencedClasses: [],
  11296. //>>excludeEnd("ide");
  11297. messageSends: ["basicAt:"]
  11298. }),
  11299. $globals.CompiledMethod);
  11300. $core.addMethod(
  11301. $core.method({
  11302. selector: "methodClass",
  11303. protocol: 'accessing',
  11304. fn: function (){
  11305. var self=this;
  11306. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11307. return $core.withContext(function($ctx1) {
  11308. //>>excludeEnd("ctx");
  11309. var $1;
  11310. $1=self._basicAt_("methodClass");
  11311. return $1;
  11312. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11313. }, function($ctx1) {$ctx1.fill(self,"methodClass",{},$globals.CompiledMethod)});
  11314. //>>excludeEnd("ctx");
  11315. },
  11316. //>>excludeStart("ide", pragmas.excludeIdeData);
  11317. args: [],
  11318. source: "methodClass\x0a\x09^ self basicAt: 'methodClass'",
  11319. referencedClasses: [],
  11320. //>>excludeEnd("ide");
  11321. messageSends: ["basicAt:"]
  11322. }),
  11323. $globals.CompiledMethod);
  11324. $core.addMethod(
  11325. $core.method({
  11326. selector: "package",
  11327. protocol: 'accessing',
  11328. fn: function (){
  11329. var self=this;
  11330. function $Package(){return $globals.Package||(typeof Package=="undefined"?nil:Package)}
  11331. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11332. return $core.withContext(function($ctx1) {
  11333. //>>excludeEnd("ctx");
  11334. var $1,$3,$2,$4,$5,$receiver;
  11335. $1=self._methodClass();
  11336. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11337. $ctx1.sendIdx["methodClass"]=1;
  11338. //>>excludeEnd("ctx");
  11339. if(($receiver = $1) == null || $receiver.isNil){
  11340. return nil;
  11341. } else {
  11342. $1;
  11343. };
  11344. $3=self._protocol();
  11345. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11346. $ctx1.sendIdx["protocol"]=1;
  11347. //>>excludeEnd("ctx");
  11348. $2=$recv($3)._beginsWith_("*");
  11349. if(!$core.assert($2)){
  11350. $4=$recv(self._methodClass())._package();
  11351. return $4;
  11352. };
  11353. $5=$recv($Package())._named_ifAbsent_($recv(self._protocol())._allButFirst(),(function(){
  11354. return nil;
  11355. }));
  11356. return $5;
  11357. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11358. }, function($ctx1) {$ctx1.fill(self,"package",{},$globals.CompiledMethod)});
  11359. //>>excludeEnd("ctx");
  11360. },
  11361. //>>excludeStart("ide", pragmas.excludeIdeData);
  11362. args: [],
  11363. 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\x09self methodClass ifNil: [ ^ nil ].\x0a\x09\x0a\x09(self protocol beginsWith: '*') ifFalse: [\x0a\x09\x09^ self methodClass package ].\x0a\x09\x09\x0a\x09^ Package \x0a\x09\x09named: self protocol allButFirst\x0a\x09\x09ifAbsent: [ nil ]",
  11364. referencedClasses: ["Package"],
  11365. //>>excludeEnd("ide");
  11366. messageSends: ["ifNil:", "methodClass", "ifFalse:", "beginsWith:", "protocol", "package", "named:ifAbsent:", "allButFirst"]
  11367. }),
  11368. $globals.CompiledMethod);
  11369. $core.addMethod(
  11370. $core.method({
  11371. selector: "protocol",
  11372. protocol: 'accessing',
  11373. fn: function (){
  11374. var self=this;
  11375. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11376. return $core.withContext(function($ctx1) {
  11377. //>>excludeEnd("ctx");
  11378. var $2,$1,$receiver;
  11379. $2=self._basicAt_("protocol");
  11380. if(($receiver = $2) == null || $receiver.isNil){
  11381. $1=self._defaultProtocol();
  11382. } else {
  11383. $1=$2;
  11384. };
  11385. return $1;
  11386. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11387. }, function($ctx1) {$ctx1.fill(self,"protocol",{},$globals.CompiledMethod)});
  11388. //>>excludeEnd("ctx");
  11389. },
  11390. //>>excludeStart("ide", pragmas.excludeIdeData);
  11391. args: [],
  11392. source: "protocol\x0a\x09^ (self basicAt: 'protocol') ifNil: [ self defaultProtocol ]",
  11393. referencedClasses: [],
  11394. //>>excludeEnd("ide");
  11395. messageSends: ["ifNil:", "basicAt:", "defaultProtocol"]
  11396. }),
  11397. $globals.CompiledMethod);
  11398. $core.addMethod(
  11399. $core.method({
  11400. selector: "protocol:",
  11401. protocol: 'accessing',
  11402. fn: function (aString){
  11403. var self=this;
  11404. var oldProtocol;
  11405. function $SystemAnnouncer(){return $globals.SystemAnnouncer||(typeof SystemAnnouncer=="undefined"?nil:SystemAnnouncer)}
  11406. function $MethodMoved(){return $globals.MethodMoved||(typeof MethodMoved=="undefined"?nil:MethodMoved)}
  11407. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11408. return $core.withContext(function($ctx1) {
  11409. //>>excludeEnd("ctx");
  11410. var $1,$2,$3,$receiver;
  11411. oldProtocol=self._protocol();
  11412. self._basicAt_put_("protocol",aString);
  11413. $1=$recv($MethodMoved())._new();
  11414. $recv($1)._method_(self);
  11415. $recv($1)._oldProtocol_(oldProtocol);
  11416. $2=$recv($1)._yourself();
  11417. $recv($recv($SystemAnnouncer())._current())._announce_($2);
  11418. $3=self._methodClass();
  11419. if(($receiver = $3) == null || $receiver.isNil){
  11420. $3;
  11421. } else {
  11422. var methodClass;
  11423. methodClass=$receiver;
  11424. $recv($recv(methodClass)._organization())._addElement_(aString);
  11425. $recv(methodClass)._removeProtocolIfEmpty_(oldProtocol);
  11426. };
  11427. return self;
  11428. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11429. }, function($ctx1) {$ctx1.fill(self,"protocol:",{aString:aString,oldProtocol:oldProtocol},$globals.CompiledMethod)});
  11430. //>>excludeEnd("ctx");
  11431. },
  11432. //>>excludeStart("ide", pragmas.excludeIdeData);
  11433. args: ["aString"],
  11434. source: "protocol: aString\x0a\x09| oldProtocol |\x0a\x09oldProtocol := self protocol.\x0a\x09self basicAt: 'protocol' put: aString.\x0a\x0a\x09SystemAnnouncer current announce: (MethodMoved new\x0a\x09\x09method: self;\x0a\x09\x09oldProtocol: oldProtocol;\x0a\x09\x09yourself).\x0a\x0a\x09self methodClass ifNotNil: [ :methodClass |\x0a\x09\x09methodClass organization addElement: aString.\x0a\x09\x09methodClass removeProtocolIfEmpty: oldProtocol ]",
  11435. referencedClasses: ["SystemAnnouncer", "MethodMoved"],
  11436. //>>excludeEnd("ide");
  11437. messageSends: ["protocol", "basicAt:put:", "announce:", "current", "method:", "new", "oldProtocol:", "yourself", "ifNotNil:", "methodClass", "addElement:", "organization", "removeProtocolIfEmpty:"]
  11438. }),
  11439. $globals.CompiledMethod);
  11440. $core.addMethod(
  11441. $core.method({
  11442. selector: "referencedClasses",
  11443. protocol: 'accessing',
  11444. fn: function (){
  11445. var self=this;
  11446. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11447. return $core.withContext(function($ctx1) {
  11448. //>>excludeEnd("ctx");
  11449. var $1;
  11450. $1=self._basicAt_("referencedClasses");
  11451. return $1;
  11452. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11453. }, function($ctx1) {$ctx1.fill(self,"referencedClasses",{},$globals.CompiledMethod)});
  11454. //>>excludeEnd("ctx");
  11455. },
  11456. //>>excludeStart("ide", pragmas.excludeIdeData);
  11457. args: [],
  11458. source: "referencedClasses\x0a\x09^ self basicAt: 'referencedClasses'",
  11459. referencedClasses: [],
  11460. //>>excludeEnd("ide");
  11461. messageSends: ["basicAt:"]
  11462. }),
  11463. $globals.CompiledMethod);
  11464. $core.addMethod(
  11465. $core.method({
  11466. selector: "selector",
  11467. protocol: 'accessing',
  11468. fn: function (){
  11469. var self=this;
  11470. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11471. return $core.withContext(function($ctx1) {
  11472. //>>excludeEnd("ctx");
  11473. var $1;
  11474. $1=self._basicAt_("selector");
  11475. return $1;
  11476. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11477. }, function($ctx1) {$ctx1.fill(self,"selector",{},$globals.CompiledMethod)});
  11478. //>>excludeEnd("ctx");
  11479. },
  11480. //>>excludeStart("ide", pragmas.excludeIdeData);
  11481. args: [],
  11482. source: "selector\x0a\x09^ self basicAt: 'selector'",
  11483. referencedClasses: [],
  11484. //>>excludeEnd("ide");
  11485. messageSends: ["basicAt:"]
  11486. }),
  11487. $globals.CompiledMethod);
  11488. $core.addMethod(
  11489. $core.method({
  11490. selector: "selector:",
  11491. protocol: 'accessing',
  11492. fn: function (aString){
  11493. var self=this;
  11494. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11495. return $core.withContext(function($ctx1) {
  11496. //>>excludeEnd("ctx");
  11497. self._basicAt_put_("selector",aString);
  11498. return self;
  11499. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11500. }, function($ctx1) {$ctx1.fill(self,"selector:",{aString:aString},$globals.CompiledMethod)});
  11501. //>>excludeEnd("ctx");
  11502. },
  11503. //>>excludeStart("ide", pragmas.excludeIdeData);
  11504. args: ["aString"],
  11505. source: "selector: aString\x0a\x09self basicAt: 'selector' put: aString",
  11506. referencedClasses: [],
  11507. //>>excludeEnd("ide");
  11508. messageSends: ["basicAt:put:"]
  11509. }),
  11510. $globals.CompiledMethod);
  11511. $core.addMethod(
  11512. $core.method({
  11513. selector: "sendTo:arguments:",
  11514. protocol: 'evaluating',
  11515. fn: function (anObject,aCollection){
  11516. var self=this;
  11517. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11518. return $core.withContext(function($ctx1) {
  11519. //>>excludeEnd("ctx");
  11520. var $1;
  11521. $1=$recv(self._fn())._applyTo_arguments_(anObject,aCollection);
  11522. return $1;
  11523. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11524. }, function($ctx1) {$ctx1.fill(self,"sendTo:arguments:",{anObject:anObject,aCollection:aCollection},$globals.CompiledMethod)});
  11525. //>>excludeEnd("ctx");
  11526. },
  11527. //>>excludeStart("ide", pragmas.excludeIdeData);
  11528. args: ["anObject", "aCollection"],
  11529. source: "sendTo: anObject arguments: aCollection\x0a\x09^ self fn applyTo: anObject arguments: aCollection",
  11530. referencedClasses: [],
  11531. //>>excludeEnd("ide");
  11532. messageSends: ["applyTo:arguments:", "fn"]
  11533. }),
  11534. $globals.CompiledMethod);
  11535. $core.addMethod(
  11536. $core.method({
  11537. selector: "source",
  11538. protocol: 'accessing',
  11539. fn: function (){
  11540. var self=this;
  11541. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11542. return $core.withContext(function($ctx1) {
  11543. //>>excludeEnd("ctx");
  11544. var $2,$1,$receiver;
  11545. $2=self._basicAt_("source");
  11546. if(($receiver = $2) == null || $receiver.isNil){
  11547. $1="";
  11548. } else {
  11549. $1=$2;
  11550. };
  11551. return $1;
  11552. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11553. }, function($ctx1) {$ctx1.fill(self,"source",{},$globals.CompiledMethod)});
  11554. //>>excludeEnd("ctx");
  11555. },
  11556. //>>excludeStart("ide", pragmas.excludeIdeData);
  11557. args: [],
  11558. source: "source\x0a\x09^ (self basicAt: 'source') ifNil: [ '' ]",
  11559. referencedClasses: [],
  11560. //>>excludeEnd("ide");
  11561. messageSends: ["ifNil:", "basicAt:"]
  11562. }),
  11563. $globals.CompiledMethod);
  11564. $core.addMethod(
  11565. $core.method({
  11566. selector: "source:",
  11567. protocol: 'accessing',
  11568. fn: function (aString){
  11569. var self=this;
  11570. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11571. return $core.withContext(function($ctx1) {
  11572. //>>excludeEnd("ctx");
  11573. self._basicAt_put_("source",aString);
  11574. return self;
  11575. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11576. }, function($ctx1) {$ctx1.fill(self,"source:",{aString:aString},$globals.CompiledMethod)});
  11577. //>>excludeEnd("ctx");
  11578. },
  11579. //>>excludeStart("ide", pragmas.excludeIdeData);
  11580. args: ["aString"],
  11581. source: "source: aString\x0a\x09self basicAt: 'source' put: aString",
  11582. referencedClasses: [],
  11583. //>>excludeEnd("ide");
  11584. messageSends: ["basicAt:put:"]
  11585. }),
  11586. $globals.CompiledMethod);
  11587. $core.addClass('ForkPool', $globals.Object, ['poolSize', 'maxPoolSize', 'queue', 'worker'], 'Kernel-Methods');
  11588. //>>excludeStart("ide", pragmas.excludeIdeData);
  11589. $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`";
  11590. //>>excludeEnd("ide");
  11591. $core.addMethod(
  11592. $core.method({
  11593. selector: "addWorker",
  11594. protocol: 'private',
  11595. fn: function (){
  11596. var self=this;
  11597. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11598. return $core.withContext(function($ctx1) {
  11599. //>>excludeEnd("ctx");
  11600. $recv(self["@worker"])._valueWithTimeout_((0));
  11601. self["@poolSize"]=$recv(self["@poolSize"]).__plus((1));
  11602. return self;
  11603. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11604. }, function($ctx1) {$ctx1.fill(self,"addWorker",{},$globals.ForkPool)});
  11605. //>>excludeEnd("ctx");
  11606. },
  11607. //>>excludeStart("ide", pragmas.excludeIdeData);
  11608. args: [],
  11609. source: "addWorker\x0a\x09worker valueWithTimeout: 0.\x0a\x09poolSize := poolSize + 1",
  11610. referencedClasses: [],
  11611. //>>excludeEnd("ide");
  11612. messageSends: ["valueWithTimeout:", "+"]
  11613. }),
  11614. $globals.ForkPool);
  11615. $core.addMethod(
  11616. $core.method({
  11617. selector: "defaultMaxPoolSize",
  11618. protocol: 'defaults',
  11619. fn: function (){
  11620. var self=this;
  11621. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11622. return $core.withContext(function($ctx1) {
  11623. //>>excludeEnd("ctx");
  11624. var $1;
  11625. $1=$recv(self._class())._defaultMaxPoolSize();
  11626. return $1;
  11627. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11628. }, function($ctx1) {$ctx1.fill(self,"defaultMaxPoolSize",{},$globals.ForkPool)});
  11629. //>>excludeEnd("ctx");
  11630. },
  11631. //>>excludeStart("ide", pragmas.excludeIdeData);
  11632. args: [],
  11633. source: "defaultMaxPoolSize\x0a\x09^ self class defaultMaxPoolSize",
  11634. referencedClasses: [],
  11635. //>>excludeEnd("ide");
  11636. messageSends: ["defaultMaxPoolSize", "class"]
  11637. }),
  11638. $globals.ForkPool);
  11639. $core.addMethod(
  11640. $core.method({
  11641. selector: "fork:",
  11642. protocol: 'actions',
  11643. fn: function (aBlock){
  11644. var self=this;
  11645. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11646. return $core.withContext(function($ctx1) {
  11647. //>>excludeEnd("ctx");
  11648. var $1;
  11649. $1=$recv(self["@poolSize"]).__lt(self._maxPoolSize());
  11650. if($core.assert($1)){
  11651. self._addWorker();
  11652. };
  11653. $recv(self["@queue"])._nextPut_(aBlock);
  11654. return self;
  11655. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11656. }, function($ctx1) {$ctx1.fill(self,"fork:",{aBlock:aBlock},$globals.ForkPool)});
  11657. //>>excludeEnd("ctx");
  11658. },
  11659. //>>excludeStart("ide", pragmas.excludeIdeData);
  11660. args: ["aBlock"],
  11661. source: "fork: aBlock\x0a\x09poolSize < self maxPoolSize ifTrue: [ self addWorker ].\x0a\x09queue nextPut: aBlock",
  11662. referencedClasses: [],
  11663. //>>excludeEnd("ide");
  11664. messageSends: ["ifTrue:", "<", "maxPoolSize", "addWorker", "nextPut:"]
  11665. }),
  11666. $globals.ForkPool);
  11667. $core.addMethod(
  11668. $core.method({
  11669. selector: "initialize",
  11670. protocol: 'initialization',
  11671. fn: function (){
  11672. var self=this;
  11673. function $Queue(){return $globals.Queue||(typeof Queue=="undefined"?nil:Queue)}
  11674. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11675. return $core.withContext(function($ctx1) {
  11676. //>>excludeEnd("ctx");
  11677. (
  11678. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11679. $ctx1.supercall = true,
  11680. //>>excludeEnd("ctx");
  11681. $globals.ForkPool.superclass.fn.prototype._initialize.apply($recv(self), []));
  11682. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11683. $ctx1.supercall = false;
  11684. //>>excludeEnd("ctx");;
  11685. self["@poolSize"]=(0);
  11686. self["@queue"]=$recv($Queue())._new();
  11687. self["@worker"]=self._makeWorker();
  11688. return self;
  11689. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11690. }, function($ctx1) {$ctx1.fill(self,"initialize",{},$globals.ForkPool)});
  11691. //>>excludeEnd("ctx");
  11692. },
  11693. //>>excludeStart("ide", pragmas.excludeIdeData);
  11694. args: [],
  11695. source: "initialize\x0a\x09super initialize.\x0a\x09\x0a\x09poolSize := 0.\x0a\x09queue := Queue new.\x0a\x09worker := self makeWorker",
  11696. referencedClasses: ["Queue"],
  11697. //>>excludeEnd("ide");
  11698. messageSends: ["initialize", "new", "makeWorker"]
  11699. }),
  11700. $globals.ForkPool);
  11701. $core.addMethod(
  11702. $core.method({
  11703. selector: "makeWorker",
  11704. protocol: 'initialization',
  11705. fn: function (){
  11706. var self=this;
  11707. var sentinel;
  11708. function $Object(){return $globals.Object||(typeof Object=="undefined"?nil:Object)}
  11709. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11710. return $core.withContext(function($ctx1) {
  11711. //>>excludeEnd("ctx");
  11712. var $2,$1;
  11713. sentinel=$recv($Object())._new();
  11714. $1=(function(){
  11715. var block;
  11716. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11717. return $core.withContext(function($ctx2) {
  11718. //>>excludeEnd("ctx");
  11719. self["@poolSize"]=$recv(self["@poolSize"]).__minus((1));
  11720. self["@poolSize"];
  11721. block=$recv(self["@queue"])._nextIfAbsent_((function(){
  11722. return sentinel;
  11723. }));
  11724. block;
  11725. $2=$recv(block).__eq_eq(sentinel);
  11726. if(!$core.assert($2)){
  11727. return $recv((function(){
  11728. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11729. return $core.withContext(function($ctx3) {
  11730. //>>excludeEnd("ctx");
  11731. return $recv(block)._value();
  11732. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11733. }, function($ctx3) {$ctx3.fillBlock({},$ctx2,4)});
  11734. //>>excludeEnd("ctx");
  11735. }))._ensure_((function(){
  11736. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11737. return $core.withContext(function($ctx3) {
  11738. //>>excludeEnd("ctx");
  11739. return self._addWorker();
  11740. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11741. }, function($ctx3) {$ctx3.fillBlock({},$ctx2,5)});
  11742. //>>excludeEnd("ctx");
  11743. }));
  11744. };
  11745. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11746. }, function($ctx2) {$ctx2.fillBlock({block:block},$ctx1,1)});
  11747. //>>excludeEnd("ctx");
  11748. });
  11749. return $1;
  11750. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11751. }, function($ctx1) {$ctx1.fill(self,"makeWorker",{sentinel:sentinel},$globals.ForkPool)});
  11752. //>>excludeEnd("ctx");
  11753. },
  11754. //>>excludeStart("ide", pragmas.excludeIdeData);
  11755. args: [],
  11756. 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 ] ]]",
  11757. referencedClasses: ["Object"],
  11758. //>>excludeEnd("ide");
  11759. messageSends: ["new", "-", "nextIfAbsent:", "ifFalse:", "==", "ensure:", "value", "addWorker"]
  11760. }),
  11761. $globals.ForkPool);
  11762. $core.addMethod(
  11763. $core.method({
  11764. selector: "maxPoolSize",
  11765. protocol: 'accessing',
  11766. fn: function (){
  11767. var self=this;
  11768. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11769. return $core.withContext(function($ctx1) {
  11770. //>>excludeEnd("ctx");
  11771. var $2,$1,$receiver;
  11772. $2=self["@maxPoolSize"];
  11773. if(($receiver = $2) == null || $receiver.isNil){
  11774. $1=self._defaultMaxPoolSize();
  11775. } else {
  11776. $1=$2;
  11777. };
  11778. return $1;
  11779. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11780. }, function($ctx1) {$ctx1.fill(self,"maxPoolSize",{},$globals.ForkPool)});
  11781. //>>excludeEnd("ctx");
  11782. },
  11783. //>>excludeStart("ide", pragmas.excludeIdeData);
  11784. args: [],
  11785. source: "maxPoolSize\x0a\x09^ maxPoolSize ifNil: [ self defaultMaxPoolSize ]",
  11786. referencedClasses: [],
  11787. //>>excludeEnd("ide");
  11788. messageSends: ["ifNil:", "defaultMaxPoolSize"]
  11789. }),
  11790. $globals.ForkPool);
  11791. $core.addMethod(
  11792. $core.method({
  11793. selector: "maxPoolSize:",
  11794. protocol: 'accessing',
  11795. fn: function (anInteger){
  11796. var self=this;
  11797. self["@maxPoolSize"]=anInteger;
  11798. return self;
  11799. },
  11800. //>>excludeStart("ide", pragmas.excludeIdeData);
  11801. args: ["anInteger"],
  11802. source: "maxPoolSize: anInteger\x0a\x09maxPoolSize := anInteger",
  11803. referencedClasses: [],
  11804. //>>excludeEnd("ide");
  11805. messageSends: []
  11806. }),
  11807. $globals.ForkPool);
  11808. $globals.ForkPool.klass.iVarNames = ['default'];
  11809. $core.addMethod(
  11810. $core.method({
  11811. selector: "default",
  11812. protocol: 'accessing',
  11813. fn: function (){
  11814. var self=this;
  11815. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11816. return $core.withContext(function($ctx1) {
  11817. //>>excludeEnd("ctx");
  11818. var $2,$1,$receiver;
  11819. $2=self["@default"];
  11820. if(($receiver = $2) == null || $receiver.isNil){
  11821. self["@default"]=self._new();
  11822. $1=self["@default"];
  11823. } else {
  11824. $1=$2;
  11825. };
  11826. return $1;
  11827. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11828. }, function($ctx1) {$ctx1.fill(self,"default",{},$globals.ForkPool.klass)});
  11829. //>>excludeEnd("ctx");
  11830. },
  11831. //>>excludeStart("ide", pragmas.excludeIdeData);
  11832. args: [],
  11833. source: "default\x0a\x09^ default ifNil: [ default := self new ]",
  11834. referencedClasses: [],
  11835. //>>excludeEnd("ide");
  11836. messageSends: ["ifNil:", "new"]
  11837. }),
  11838. $globals.ForkPool.klass);
  11839. $core.addMethod(
  11840. $core.method({
  11841. selector: "defaultMaxPoolSize",
  11842. protocol: 'accessing',
  11843. fn: function (){
  11844. var self=this;
  11845. return (100);
  11846. },
  11847. //>>excludeStart("ide", pragmas.excludeIdeData);
  11848. args: [],
  11849. source: "defaultMaxPoolSize\x0a\x09^ 100",
  11850. referencedClasses: [],
  11851. //>>excludeEnd("ide");
  11852. messageSends: []
  11853. }),
  11854. $globals.ForkPool.klass);
  11855. $core.addMethod(
  11856. $core.method({
  11857. selector: "resetDefault",
  11858. protocol: 'accessing',
  11859. fn: function (){
  11860. var self=this;
  11861. self["@default"]=nil;
  11862. return self;
  11863. },
  11864. //>>excludeStart("ide", pragmas.excludeIdeData);
  11865. args: [],
  11866. source: "resetDefault\x0a\x09default := nil",
  11867. referencedClasses: [],
  11868. //>>excludeEnd("ide");
  11869. messageSends: []
  11870. }),
  11871. $globals.ForkPool.klass);
  11872. $core.addClass('Message', $globals.Object, ['selector', 'arguments'], 'Kernel-Methods');
  11873. //>>excludeStart("ide", pragmas.excludeIdeData);
  11874. $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.";
  11875. //>>excludeEnd("ide");
  11876. $core.addMethod(
  11877. $core.method({
  11878. selector: "arguments",
  11879. protocol: 'accessing',
  11880. fn: function (){
  11881. var self=this;
  11882. var $1;
  11883. $1=self["@arguments"];
  11884. return $1;
  11885. },
  11886. //>>excludeStart("ide", pragmas.excludeIdeData);
  11887. args: [],
  11888. source: "arguments\x0a\x09^ arguments",
  11889. referencedClasses: [],
  11890. //>>excludeEnd("ide");
  11891. messageSends: []
  11892. }),
  11893. $globals.Message);
  11894. $core.addMethod(
  11895. $core.method({
  11896. selector: "arguments:",
  11897. protocol: 'accessing',
  11898. fn: function (anArray){
  11899. var self=this;
  11900. self["@arguments"]=anArray;
  11901. return self;
  11902. },
  11903. //>>excludeStart("ide", pragmas.excludeIdeData);
  11904. args: ["anArray"],
  11905. source: "arguments: anArray\x0a\x09arguments := anArray",
  11906. referencedClasses: [],
  11907. //>>excludeEnd("ide");
  11908. messageSends: []
  11909. }),
  11910. $globals.Message);
  11911. $core.addMethod(
  11912. $core.method({
  11913. selector: "printOn:",
  11914. protocol: 'printing',
  11915. fn: function (aStream){
  11916. var self=this;
  11917. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11918. return $core.withContext(function($ctx1) {
  11919. //>>excludeEnd("ctx");
  11920. var $1;
  11921. (
  11922. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11923. $ctx1.supercall = true,
  11924. //>>excludeEnd("ctx");
  11925. $globals.Message.superclass.fn.prototype._printOn_.apply($recv(self), [aStream]));
  11926. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11927. $ctx1.supercall = false;
  11928. //>>excludeEnd("ctx");;
  11929. $recv(aStream)._nextPutAll_("(");
  11930. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11931. $ctx1.sendIdx["nextPutAll:"]=1;
  11932. //>>excludeEnd("ctx");
  11933. $recv(aStream)._nextPutAll_(self._selector());
  11934. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11935. $ctx1.sendIdx["nextPutAll:"]=2;
  11936. //>>excludeEnd("ctx");
  11937. $1=$recv(aStream)._nextPutAll_(")");
  11938. return self;
  11939. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11940. }, function($ctx1) {$ctx1.fill(self,"printOn:",{aStream:aStream},$globals.Message)});
  11941. //>>excludeEnd("ctx");
  11942. },
  11943. //>>excludeStart("ide", pragmas.excludeIdeData);
  11944. args: ["aStream"],
  11945. source: "printOn: aStream\x0a\x09super printOn: aStream.\x0a\x09aStream\x0a\x09\x09nextPutAll: '(';\x0a\x09\x09nextPutAll: self selector;\x0a\x09\x09nextPutAll: ')'",
  11946. referencedClasses: [],
  11947. //>>excludeEnd("ide");
  11948. messageSends: ["printOn:", "nextPutAll:", "selector"]
  11949. }),
  11950. $globals.Message);
  11951. $core.addMethod(
  11952. $core.method({
  11953. selector: "selector",
  11954. protocol: 'accessing',
  11955. fn: function (){
  11956. var self=this;
  11957. var $1;
  11958. $1=self["@selector"];
  11959. return $1;
  11960. },
  11961. //>>excludeStart("ide", pragmas.excludeIdeData);
  11962. args: [],
  11963. source: "selector\x0a\x09^ selector",
  11964. referencedClasses: [],
  11965. //>>excludeEnd("ide");
  11966. messageSends: []
  11967. }),
  11968. $globals.Message);
  11969. $core.addMethod(
  11970. $core.method({
  11971. selector: "selector:",
  11972. protocol: 'accessing',
  11973. fn: function (aString){
  11974. var self=this;
  11975. self["@selector"]=aString;
  11976. return self;
  11977. },
  11978. //>>excludeStart("ide", pragmas.excludeIdeData);
  11979. args: ["aString"],
  11980. source: "selector: aString\x0a\x09selector := aString",
  11981. referencedClasses: [],
  11982. //>>excludeEnd("ide");
  11983. messageSends: []
  11984. }),
  11985. $globals.Message);
  11986. $core.addMethod(
  11987. $core.method({
  11988. selector: "sendTo:",
  11989. protocol: 'actions',
  11990. fn: function (anObject){
  11991. var self=this;
  11992. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11993. return $core.withContext(function($ctx1) {
  11994. //>>excludeEnd("ctx");
  11995. var $1;
  11996. $1=$recv(anObject)._perform_withArguments_(self._selector(),self._arguments());
  11997. return $1;
  11998. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  11999. }, function($ctx1) {$ctx1.fill(self,"sendTo:",{anObject:anObject},$globals.Message)});
  12000. //>>excludeEnd("ctx");
  12001. },
  12002. //>>excludeStart("ide", pragmas.excludeIdeData);
  12003. args: ["anObject"],
  12004. source: "sendTo: anObject\x0a\x09^ anObject perform: self selector withArguments: self arguments",
  12005. referencedClasses: [],
  12006. //>>excludeEnd("ide");
  12007. messageSends: ["perform:withArguments:", "selector", "arguments"]
  12008. }),
  12009. $globals.Message);
  12010. $core.addMethod(
  12011. $core.method({
  12012. selector: "selector:arguments:",
  12013. protocol: 'instance creation',
  12014. fn: function (aString,anArray){
  12015. var self=this;
  12016. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12017. return $core.withContext(function($ctx1) {
  12018. //>>excludeEnd("ctx");
  12019. var $2,$3,$1;
  12020. $2=self._new();
  12021. $recv($2)._selector_(aString);
  12022. $recv($2)._arguments_(anArray);
  12023. $3=$recv($2)._yourself();
  12024. $1=$3;
  12025. return $1;
  12026. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12027. }, function($ctx1) {$ctx1.fill(self,"selector:arguments:",{aString:aString,anArray:anArray},$globals.Message.klass)});
  12028. //>>excludeEnd("ctx");
  12029. },
  12030. //>>excludeStart("ide", pragmas.excludeIdeData);
  12031. args: ["aString", "anArray"],
  12032. source: "selector: aString arguments: anArray\x0a\x09^ self new\x0a\x09\x09selector: aString;\x0a\x09\x09arguments: anArray;\x0a\x09\x09yourself",
  12033. referencedClasses: [],
  12034. //>>excludeEnd("ide");
  12035. messageSends: ["selector:", "new", "arguments:", "yourself"]
  12036. }),
  12037. $globals.Message.klass);
  12038. $core.addClass('MessageSend', $globals.Object, ['receiver', 'message'], 'Kernel-Methods');
  12039. //>>excludeStart("ide", pragmas.excludeIdeData);
  12040. $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.";
  12041. //>>excludeEnd("ide");
  12042. $core.addMethod(
  12043. $core.method({
  12044. selector: "arguments",
  12045. protocol: 'accessing',
  12046. fn: function (){
  12047. var self=this;
  12048. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12049. return $core.withContext(function($ctx1) {
  12050. //>>excludeEnd("ctx");
  12051. var $1;
  12052. $1=$recv(self["@message"])._arguments();
  12053. return $1;
  12054. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12055. }, function($ctx1) {$ctx1.fill(self,"arguments",{},$globals.MessageSend)});
  12056. //>>excludeEnd("ctx");
  12057. },
  12058. //>>excludeStart("ide", pragmas.excludeIdeData);
  12059. args: [],
  12060. source: "arguments\x0a\x09^ message arguments",
  12061. referencedClasses: [],
  12062. //>>excludeEnd("ide");
  12063. messageSends: ["arguments"]
  12064. }),
  12065. $globals.MessageSend);
  12066. $core.addMethod(
  12067. $core.method({
  12068. selector: "arguments:",
  12069. protocol: 'accessing',
  12070. fn: function (aCollection){
  12071. var self=this;
  12072. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12073. return $core.withContext(function($ctx1) {
  12074. //>>excludeEnd("ctx");
  12075. $recv(self["@message"])._arguments_(aCollection);
  12076. return self;
  12077. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12078. }, function($ctx1) {$ctx1.fill(self,"arguments:",{aCollection:aCollection},$globals.MessageSend)});
  12079. //>>excludeEnd("ctx");
  12080. },
  12081. //>>excludeStart("ide", pragmas.excludeIdeData);
  12082. args: ["aCollection"],
  12083. source: "arguments: aCollection\x0a\x09message arguments: aCollection",
  12084. referencedClasses: [],
  12085. //>>excludeEnd("ide");
  12086. messageSends: ["arguments:"]
  12087. }),
  12088. $globals.MessageSend);
  12089. $core.addMethod(
  12090. $core.method({
  12091. selector: "initialize",
  12092. protocol: 'initialization',
  12093. fn: function (){
  12094. var self=this;
  12095. function $Message(){return $globals.Message||(typeof Message=="undefined"?nil:Message)}
  12096. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12097. return $core.withContext(function($ctx1) {
  12098. //>>excludeEnd("ctx");
  12099. (
  12100. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12101. $ctx1.supercall = true,
  12102. //>>excludeEnd("ctx");
  12103. $globals.MessageSend.superclass.fn.prototype._initialize.apply($recv(self), []));
  12104. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12105. $ctx1.supercall = false;
  12106. //>>excludeEnd("ctx");;
  12107. self["@message"]=$recv($Message())._new();
  12108. return self;
  12109. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12110. }, function($ctx1) {$ctx1.fill(self,"initialize",{},$globals.MessageSend)});
  12111. //>>excludeEnd("ctx");
  12112. },
  12113. //>>excludeStart("ide", pragmas.excludeIdeData);
  12114. args: [],
  12115. source: "initialize\x0a\x09super initialize.\x0a\x09message := Message new",
  12116. referencedClasses: ["Message"],
  12117. //>>excludeEnd("ide");
  12118. messageSends: ["initialize", "new"]
  12119. }),
  12120. $globals.MessageSend);
  12121. $core.addMethod(
  12122. $core.method({
  12123. selector: "printOn:",
  12124. protocol: 'printing',
  12125. fn: function (aStream){
  12126. var self=this;
  12127. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12128. return $core.withContext(function($ctx1) {
  12129. //>>excludeEnd("ctx");
  12130. var $1;
  12131. (
  12132. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12133. $ctx1.supercall = true,
  12134. //>>excludeEnd("ctx");
  12135. $globals.MessageSend.superclass.fn.prototype._printOn_.apply($recv(self), [aStream]));
  12136. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12137. $ctx1.supercall = false;
  12138. //>>excludeEnd("ctx");;
  12139. $recv(aStream)._nextPutAll_("(");
  12140. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12141. $ctx1.sendIdx["nextPutAll:"]=1;
  12142. //>>excludeEnd("ctx");
  12143. $recv(aStream)._nextPutAll_(self._receiver());
  12144. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12145. $ctx1.sendIdx["nextPutAll:"]=2;
  12146. //>>excludeEnd("ctx");
  12147. $recv(aStream)._nextPutAll_(" >> ");
  12148. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12149. $ctx1.sendIdx["nextPutAll:"]=3;
  12150. //>>excludeEnd("ctx");
  12151. $recv(aStream)._nextPutAll_(self._selector());
  12152. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12153. $ctx1.sendIdx["nextPutAll:"]=4;
  12154. //>>excludeEnd("ctx");
  12155. $1=$recv(aStream)._nextPutAll_(")");
  12156. return self;
  12157. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12158. }, function($ctx1) {$ctx1.fill(self,"printOn:",{aStream:aStream},$globals.MessageSend)});
  12159. //>>excludeEnd("ctx");
  12160. },
  12161. //>>excludeStart("ide", pragmas.excludeIdeData);
  12162. args: ["aStream"],
  12163. 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: ')'",
  12164. referencedClasses: [],
  12165. //>>excludeEnd("ide");
  12166. messageSends: ["printOn:", "nextPutAll:", "receiver", "selector"]
  12167. }),
  12168. $globals.MessageSend);
  12169. $core.addMethod(
  12170. $core.method({
  12171. selector: "receiver",
  12172. protocol: 'accessing',
  12173. fn: function (){
  12174. var self=this;
  12175. var $1;
  12176. $1=self["@receiver"];
  12177. return $1;
  12178. },
  12179. //>>excludeStart("ide", pragmas.excludeIdeData);
  12180. args: [],
  12181. source: "receiver\x0a\x09^ receiver",
  12182. referencedClasses: [],
  12183. //>>excludeEnd("ide");
  12184. messageSends: []
  12185. }),
  12186. $globals.MessageSend);
  12187. $core.addMethod(
  12188. $core.method({
  12189. selector: "receiver:",
  12190. protocol: 'accessing',
  12191. fn: function (anObject){
  12192. var self=this;
  12193. self["@receiver"]=anObject;
  12194. return self;
  12195. },
  12196. //>>excludeStart("ide", pragmas.excludeIdeData);
  12197. args: ["anObject"],
  12198. source: "receiver: anObject\x0a\x09receiver := anObject",
  12199. referencedClasses: [],
  12200. //>>excludeEnd("ide");
  12201. messageSends: []
  12202. }),
  12203. $globals.MessageSend);
  12204. $core.addMethod(
  12205. $core.method({
  12206. selector: "selector",
  12207. protocol: 'accessing',
  12208. fn: function (){
  12209. var self=this;
  12210. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12211. return $core.withContext(function($ctx1) {
  12212. //>>excludeEnd("ctx");
  12213. var $1;
  12214. $1=$recv(self["@message"])._selector();
  12215. return $1;
  12216. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12217. }, function($ctx1) {$ctx1.fill(self,"selector",{},$globals.MessageSend)});
  12218. //>>excludeEnd("ctx");
  12219. },
  12220. //>>excludeStart("ide", pragmas.excludeIdeData);
  12221. args: [],
  12222. source: "selector\x0a\x09^ message selector",
  12223. referencedClasses: [],
  12224. //>>excludeEnd("ide");
  12225. messageSends: ["selector"]
  12226. }),
  12227. $globals.MessageSend);
  12228. $core.addMethod(
  12229. $core.method({
  12230. selector: "selector:",
  12231. protocol: 'accessing',
  12232. fn: function (aString){
  12233. var self=this;
  12234. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12235. return $core.withContext(function($ctx1) {
  12236. //>>excludeEnd("ctx");
  12237. $recv(self["@message"])._selector_(aString);
  12238. return self;
  12239. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12240. }, function($ctx1) {$ctx1.fill(self,"selector:",{aString:aString},$globals.MessageSend)});
  12241. //>>excludeEnd("ctx");
  12242. },
  12243. //>>excludeStart("ide", pragmas.excludeIdeData);
  12244. args: ["aString"],
  12245. source: "selector: aString\x0a\x09message selector: aString",
  12246. referencedClasses: [],
  12247. //>>excludeEnd("ide");
  12248. messageSends: ["selector:"]
  12249. }),
  12250. $globals.MessageSend);
  12251. $core.addMethod(
  12252. $core.method({
  12253. selector: "value",
  12254. protocol: 'evaluating',
  12255. fn: function (){
  12256. var self=this;
  12257. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12258. return $core.withContext(function($ctx1) {
  12259. //>>excludeEnd("ctx");
  12260. var $1;
  12261. $1=$recv(self["@message"])._sendTo_(self._receiver());
  12262. return $1;
  12263. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12264. }, function($ctx1) {$ctx1.fill(self,"value",{},$globals.MessageSend)});
  12265. //>>excludeEnd("ctx");
  12266. },
  12267. //>>excludeStart("ide", pragmas.excludeIdeData);
  12268. args: [],
  12269. source: "value\x0a\x09^ message sendTo: self receiver",
  12270. referencedClasses: [],
  12271. //>>excludeEnd("ide");
  12272. messageSends: ["sendTo:", "receiver"]
  12273. }),
  12274. $globals.MessageSend);
  12275. $core.addMethod(
  12276. $core.method({
  12277. selector: "value:",
  12278. protocol: 'evaluating',
  12279. fn: function (anObject){
  12280. var self=this;
  12281. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12282. return $core.withContext(function($ctx1) {
  12283. //>>excludeEnd("ctx");
  12284. var $2,$3,$1;
  12285. $2=self["@message"];
  12286. $recv($2)._arguments_([anObject]);
  12287. $3=$recv($2)._sendTo_(self._receiver());
  12288. $1=$3;
  12289. return $1;
  12290. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12291. }, function($ctx1) {$ctx1.fill(self,"value:",{anObject:anObject},$globals.MessageSend)});
  12292. //>>excludeEnd("ctx");
  12293. },
  12294. //>>excludeStart("ide", pragmas.excludeIdeData);
  12295. args: ["anObject"],
  12296. source: "value: anObject\x0a\x09^ message \x0a\x09\x09arguments: { anObject };\x0a\x09\x09sendTo: self receiver",
  12297. referencedClasses: [],
  12298. //>>excludeEnd("ide");
  12299. messageSends: ["arguments:", "sendTo:", "receiver"]
  12300. }),
  12301. $globals.MessageSend);
  12302. $core.addMethod(
  12303. $core.method({
  12304. selector: "value:value:",
  12305. protocol: 'evaluating',
  12306. fn: function (firstArgument,secondArgument){
  12307. var self=this;
  12308. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12309. return $core.withContext(function($ctx1) {
  12310. //>>excludeEnd("ctx");
  12311. var $2,$3,$1;
  12312. $2=self["@message"];
  12313. $recv($2)._arguments_([firstArgument,secondArgument]);
  12314. $3=$recv($2)._sendTo_(self._receiver());
  12315. $1=$3;
  12316. return $1;
  12317. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12318. }, function($ctx1) {$ctx1.fill(self,"value:value:",{firstArgument:firstArgument,secondArgument:secondArgument},$globals.MessageSend)});
  12319. //>>excludeEnd("ctx");
  12320. },
  12321. //>>excludeStart("ide", pragmas.excludeIdeData);
  12322. args: ["firstArgument", "secondArgument"],
  12323. source: "value: firstArgument value: secondArgument\x0a\x09^ message \x0a\x09\x09arguments: { firstArgument. secondArgument };\x0a\x09\x09sendTo: self receiver",
  12324. referencedClasses: [],
  12325. //>>excludeEnd("ide");
  12326. messageSends: ["arguments:", "sendTo:", "receiver"]
  12327. }),
  12328. $globals.MessageSend);
  12329. $core.addMethod(
  12330. $core.method({
  12331. selector: "value:value:value:",
  12332. protocol: 'evaluating',
  12333. fn: function (firstArgument,secondArgument,thirdArgument){
  12334. var self=this;
  12335. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12336. return $core.withContext(function($ctx1) {
  12337. //>>excludeEnd("ctx");
  12338. var $2,$3,$1;
  12339. $2=self["@message"];
  12340. $recv($2)._arguments_([firstArgument,secondArgument,thirdArgument]);
  12341. $3=$recv($2)._sendTo_(self._receiver());
  12342. $1=$3;
  12343. return $1;
  12344. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12345. }, function($ctx1) {$ctx1.fill(self,"value:value:value:",{firstArgument:firstArgument,secondArgument:secondArgument,thirdArgument:thirdArgument},$globals.MessageSend)});
  12346. //>>excludeEnd("ctx");
  12347. },
  12348. //>>excludeStart("ide", pragmas.excludeIdeData);
  12349. args: ["firstArgument", "secondArgument", "thirdArgument"],
  12350. source: "value: firstArgument value: secondArgument value: thirdArgument\x0a\x09^ message \x0a\x09\x09arguments: { firstArgument. secondArgument. thirdArgument };\x0a\x09\x09sendTo: self receiver",
  12351. referencedClasses: [],
  12352. //>>excludeEnd("ide");
  12353. messageSends: ["arguments:", "sendTo:", "receiver"]
  12354. }),
  12355. $globals.MessageSend);
  12356. $core.addMethod(
  12357. $core.method({
  12358. selector: "valueWithPossibleArguments:",
  12359. protocol: 'evaluating',
  12360. fn: function (aCollection){
  12361. var self=this;
  12362. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12363. return $core.withContext(function($ctx1) {
  12364. //>>excludeEnd("ctx");
  12365. var $1;
  12366. self._arguments_(aCollection);
  12367. $1=self._value();
  12368. return $1;
  12369. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12370. }, function($ctx1) {$ctx1.fill(self,"valueWithPossibleArguments:",{aCollection:aCollection},$globals.MessageSend)});
  12371. //>>excludeEnd("ctx");
  12372. },
  12373. //>>excludeStart("ide", pragmas.excludeIdeData);
  12374. args: ["aCollection"],
  12375. source: "valueWithPossibleArguments: aCollection\x0a\x09self arguments: aCollection.\x0a\x09^ self value",
  12376. referencedClasses: [],
  12377. //>>excludeEnd("ide");
  12378. messageSends: ["arguments:", "value"]
  12379. }),
  12380. $globals.MessageSend);
  12381. $core.addClass('MethodContext', $globals.Object, [], 'Kernel-Methods');
  12382. //>>excludeStart("ide", pragmas.excludeIdeData);
  12383. $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`.";
  12384. //>>excludeEnd("ide");
  12385. $core.addMethod(
  12386. $core.method({
  12387. selector: "asString",
  12388. protocol: 'converting',
  12389. fn: function (){
  12390. var self=this;
  12391. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12392. return $core.withContext(function($ctx1) {
  12393. //>>excludeEnd("ctx");
  12394. var $2,$3,$5,$7,$6,$4,$11,$10,$9,$8,$12,$16,$15,$14,$13,$1;
  12395. $2=self._isBlockContext();
  12396. if($core.assert($2)){
  12397. $3="a block (in ".__comma($recv(self._methodContext())._asString());
  12398. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12399. $ctx1.sendIdx[","]=2;
  12400. //>>excludeEnd("ctx");
  12401. $1=$recv($3).__comma(")");
  12402. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12403. $ctx1.sendIdx[","]=1;
  12404. //>>excludeEnd("ctx");
  12405. } else {
  12406. var methodClass;
  12407. methodClass=$recv(self._method())._methodClass();
  12408. methodClass;
  12409. $5=methodClass;
  12410. $7=self._receiver();
  12411. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12412. $ctx1.sendIdx["receiver"]=1;
  12413. //>>excludeEnd("ctx");
  12414. $6=$recv($7)._class();
  12415. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12416. $ctx1.sendIdx["class"]=1;
  12417. //>>excludeEnd("ctx");
  12418. $4=$recv($5).__eq($6);
  12419. if($core.assert($4)){
  12420. $11=self._receiver();
  12421. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12422. $ctx1.sendIdx["receiver"]=2;
  12423. //>>excludeEnd("ctx");
  12424. $10=$recv($11)._class();
  12425. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12426. $ctx1.sendIdx["class"]=2;
  12427. //>>excludeEnd("ctx");
  12428. $9=$recv($10)._name();
  12429. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12430. $ctx1.sendIdx["name"]=1;
  12431. //>>excludeEnd("ctx");
  12432. $8=$recv($9).__comma(" >> ");
  12433. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12434. $ctx1.sendIdx[","]=4;
  12435. //>>excludeEnd("ctx");
  12436. $12=self._selector();
  12437. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12438. $ctx1.sendIdx["selector"]=1;
  12439. //>>excludeEnd("ctx");
  12440. $1=$recv($8).__comma($12);
  12441. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12442. $ctx1.sendIdx[","]=3;
  12443. //>>excludeEnd("ctx");
  12444. } else {
  12445. $16=$recv($recv(self._receiver())._class())._name();
  12446. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12447. $ctx1.sendIdx["name"]=2;
  12448. //>>excludeEnd("ctx");
  12449. $15=$recv($16).__comma("(");
  12450. $14=$recv($15).__comma($recv(methodClass)._name());
  12451. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12452. $ctx1.sendIdx[","]=7;
  12453. //>>excludeEnd("ctx");
  12454. $13=$recv($14).__comma(") >> ");
  12455. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12456. $ctx1.sendIdx[","]=6;
  12457. //>>excludeEnd("ctx");
  12458. $1=$recv($13).__comma(self._selector());
  12459. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12460. $ctx1.sendIdx[","]=5;
  12461. //>>excludeEnd("ctx");
  12462. };
  12463. };
  12464. return $1;
  12465. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12466. }, function($ctx1) {$ctx1.fill(self,"asString",{},$globals.MethodContext)});
  12467. //>>excludeEnd("ctx");
  12468. },
  12469. //>>excludeStart("ide", pragmas.excludeIdeData);
  12470. args: [],
  12471. source: "asString\x0a\x09^ self isBlockContext\x0a\x09\x09ifTrue: [ 'a block (in ', self methodContext asString, ')' ]\x0a\x09\x09ifFalse: [ \x0a\x09\x09\x09| methodClass |\x0a\x09\x09\x09methodClass := self method methodClass.\x0a\x09\x09\x09methodClass = self receiver class \x0a\x09\x09\x09\x09ifTrue: [ self receiver class name, ' >> ', self selector ]\x0a\x09\x09\x09\x09ifFalse: [ self receiver class name, '(', methodClass name, ') >> ', self selector ] ]",
  12472. referencedClasses: [],
  12473. //>>excludeEnd("ide");
  12474. messageSends: ["ifTrue:ifFalse:", "isBlockContext", ",", "asString", "methodContext", "methodClass", "method", "=", "class", "receiver", "name", "selector"]
  12475. }),
  12476. $globals.MethodContext);
  12477. $core.addMethod(
  12478. $core.method({
  12479. selector: "basicReceiver",
  12480. protocol: 'accessing',
  12481. fn: function (){
  12482. var self=this;
  12483. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12484. return $core.withContext(function($ctx1) {
  12485. //>>excludeEnd("ctx");
  12486. return self.receiver;
  12487. return self;
  12488. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12489. }, function($ctx1) {$ctx1.fill(self,"basicReceiver",{},$globals.MethodContext)});
  12490. //>>excludeEnd("ctx");
  12491. },
  12492. //>>excludeStart("ide", pragmas.excludeIdeData);
  12493. args: [],
  12494. source: "basicReceiver\x0a\x09<return self.receiver>",
  12495. referencedClasses: [],
  12496. //>>excludeEnd("ide");
  12497. messageSends: []
  12498. }),
  12499. $globals.MethodContext);
  12500. $core.addMethod(
  12501. $core.method({
  12502. selector: "evaluatedSelector",
  12503. protocol: 'accessing',
  12504. fn: function (){
  12505. var self=this;
  12506. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12507. return $core.withContext(function($ctx1) {
  12508. //>>excludeEnd("ctx");
  12509. return self.evaluatedSelector;
  12510. return self;
  12511. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12512. }, function($ctx1) {$ctx1.fill(self,"evaluatedSelector",{},$globals.MethodContext)});
  12513. //>>excludeEnd("ctx");
  12514. },
  12515. //>>excludeStart("ide", pragmas.excludeIdeData);
  12516. args: [],
  12517. source: "evaluatedSelector\x0a\x09<return self.evaluatedSelector>",
  12518. referencedClasses: [],
  12519. //>>excludeEnd("ide");
  12520. messageSends: []
  12521. }),
  12522. $globals.MethodContext);
  12523. $core.addMethod(
  12524. $core.method({
  12525. selector: "findContextSuchThat:",
  12526. protocol: 'accessing',
  12527. fn: function (testBlock){
  12528. var self=this;
  12529. var context;
  12530. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12531. return $core.withContext(function($ctx1) {
  12532. //>>excludeEnd("ctx");
  12533. var $1,$2;
  12534. var $early={};
  12535. try {
  12536. context=self;
  12537. $recv((function(){
  12538. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12539. return $core.withContext(function($ctx2) {
  12540. //>>excludeEnd("ctx");
  12541. return $recv(context)._isNil();
  12542. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12543. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  12544. //>>excludeEnd("ctx");
  12545. }))._whileFalse_((function(){
  12546. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12547. return $core.withContext(function($ctx2) {
  12548. //>>excludeEnd("ctx");
  12549. $1=$recv(testBlock)._value_(context);
  12550. if($core.assert($1)){
  12551. $2=context;
  12552. throw $early=[$2];
  12553. };
  12554. context=$recv(context)._outerContext();
  12555. return context;
  12556. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12557. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
  12558. //>>excludeEnd("ctx");
  12559. }));
  12560. return nil;
  12561. }
  12562. catch(e) {if(e===$early)return e[0]; throw e}
  12563. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12564. }, function($ctx1) {$ctx1.fill(self,"findContextSuchThat:",{testBlock:testBlock,context:context},$globals.MethodContext)});
  12565. //>>excludeEnd("ctx");
  12566. },
  12567. //>>excludeStart("ide", pragmas.excludeIdeData);
  12568. args: ["testBlock"],
  12569. 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",
  12570. referencedClasses: [],
  12571. //>>excludeEnd("ide");
  12572. messageSends: ["whileFalse:", "isNil", "ifTrue:", "value:", "outerContext"]
  12573. }),
  12574. $globals.MethodContext);
  12575. $core.addMethod(
  12576. $core.method({
  12577. selector: "home",
  12578. protocol: 'accessing',
  12579. fn: function (){
  12580. var self=this;
  12581. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12582. return $core.withContext(function($ctx1) {
  12583. //>>excludeEnd("ctx");
  12584. return self.homeContext;
  12585. return self;
  12586. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12587. }, function($ctx1) {$ctx1.fill(self,"home",{},$globals.MethodContext)});
  12588. //>>excludeEnd("ctx");
  12589. },
  12590. //>>excludeStart("ide", pragmas.excludeIdeData);
  12591. args: [],
  12592. source: "home\x0a\x09<return self.homeContext>",
  12593. referencedClasses: [],
  12594. //>>excludeEnd("ide");
  12595. messageSends: []
  12596. }),
  12597. $globals.MethodContext);
  12598. $core.addMethod(
  12599. $core.method({
  12600. selector: "index",
  12601. protocol: 'accessing',
  12602. fn: function (){
  12603. var self=this;
  12604. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12605. return $core.withContext(function($ctx1) {
  12606. //>>excludeEnd("ctx");
  12607. return self.index || 0;
  12608. return self;
  12609. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12610. }, function($ctx1) {$ctx1.fill(self,"index",{},$globals.MethodContext)});
  12611. //>>excludeEnd("ctx");
  12612. },
  12613. //>>excludeStart("ide", pragmas.excludeIdeData);
  12614. args: [],
  12615. source: "index\x0a\x09<return self.index || 0>",
  12616. referencedClasses: [],
  12617. //>>excludeEnd("ide");
  12618. messageSends: []
  12619. }),
  12620. $globals.MethodContext);
  12621. $core.addMethod(
  12622. $core.method({
  12623. selector: "isBlockContext",
  12624. protocol: 'testing',
  12625. fn: function (){
  12626. var self=this;
  12627. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12628. return $core.withContext(function($ctx1) {
  12629. //>>excludeEnd("ctx");
  12630. var $1;
  12631. $1=$recv(self._selector())._isNil();
  12632. return $1;
  12633. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12634. }, function($ctx1) {$ctx1.fill(self,"isBlockContext",{},$globals.MethodContext)});
  12635. //>>excludeEnd("ctx");
  12636. },
  12637. //>>excludeStart("ide", pragmas.excludeIdeData);
  12638. args: [],
  12639. source: "isBlockContext\x0a\x09\x22Block context do not have selectors.\x22\x0a\x09\x0a\x09^ self selector isNil",
  12640. referencedClasses: [],
  12641. //>>excludeEnd("ide");
  12642. messageSends: ["isNil", "selector"]
  12643. }),
  12644. $globals.MethodContext);
  12645. $core.addMethod(
  12646. $core.method({
  12647. selector: "locals",
  12648. protocol: 'accessing',
  12649. fn: function (){
  12650. var self=this;
  12651. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12652. return $core.withContext(function($ctx1) {
  12653. //>>excludeEnd("ctx");
  12654. return self.locals || {};
  12655. return self;
  12656. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12657. }, function($ctx1) {$ctx1.fill(self,"locals",{},$globals.MethodContext)});
  12658. //>>excludeEnd("ctx");
  12659. },
  12660. //>>excludeStart("ide", pragmas.excludeIdeData);
  12661. args: [],
  12662. source: "locals\x0a\x09<return self.locals || {}>",
  12663. referencedClasses: [],
  12664. //>>excludeEnd("ide");
  12665. messageSends: []
  12666. }),
  12667. $globals.MethodContext);
  12668. $core.addMethod(
  12669. $core.method({
  12670. selector: "method",
  12671. protocol: 'accessing',
  12672. fn: function (){
  12673. var self=this;
  12674. var method,lookupClass,receiverClass,supercall;
  12675. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12676. return $core.withContext(function($ctx1) {
  12677. //>>excludeEnd("ctx");
  12678. var $1,$3,$2,$4,$6,$5,$7,$9,$8,$receiver;
  12679. $1=self._methodContext();
  12680. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12681. $ctx1.sendIdx["methodContext"]=1;
  12682. //>>excludeEnd("ctx");
  12683. if(($receiver = $1) == null || $receiver.isNil){
  12684. return nil;
  12685. } else {
  12686. $1;
  12687. };
  12688. $3=self._methodContext();
  12689. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12690. $ctx1.sendIdx["methodContext"]=2;
  12691. //>>excludeEnd("ctx");
  12692. $2=$recv($3)._receiver();
  12693. receiverClass=$recv($2)._class();
  12694. $4=receiverClass;
  12695. $6=self._methodContext();
  12696. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12697. $ctx1.sendIdx["methodContext"]=3;
  12698. //>>excludeEnd("ctx");
  12699. $5=$recv($6)._selector();
  12700. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12701. $ctx1.sendIdx["selector"]=1;
  12702. //>>excludeEnd("ctx");
  12703. method=$recv($4)._lookupSelector_($5);
  12704. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12705. $ctx1.sendIdx["lookupSelector:"]=1;
  12706. //>>excludeEnd("ctx");
  12707. $7=self._outerContext();
  12708. if(($receiver = $7) == null || $receiver.isNil){
  12709. supercall=false;
  12710. } else {
  12711. var outer;
  12712. outer=$receiver;
  12713. supercall=$recv(outer)._supercall();
  12714. };
  12715. $9=supercall;
  12716. if($core.assert($9)){
  12717. $8=$recv($recv($recv(method)._methodClass())._superclass())._lookupSelector_($recv(self._methodContext())._selector());
  12718. } else {
  12719. $8=method;
  12720. };
  12721. return $8;
  12722. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12723. }, function($ctx1) {$ctx1.fill(self,"method",{method:method,lookupClass:lookupClass,receiverClass:receiverClass,supercall:supercall},$globals.MethodContext)});
  12724. //>>excludeEnd("ctx");
  12725. },
  12726. //>>excludeStart("ide", pragmas.excludeIdeData);
  12727. args: [],
  12728. 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 ]",
  12729. referencedClasses: [],
  12730. //>>excludeEnd("ide");
  12731. messageSends: ["ifNil:", "methodContext", "class", "receiver", "lookupSelector:", "selector", "ifNil:ifNotNil:", "outerContext", "supercall", "ifFalse:ifTrue:", "superclass", "methodClass"]
  12732. }),
  12733. $globals.MethodContext);
  12734. $core.addMethod(
  12735. $core.method({
  12736. selector: "methodContext",
  12737. protocol: 'accessing',
  12738. fn: function (){
  12739. var self=this;
  12740. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12741. return $core.withContext(function($ctx1) {
  12742. //>>excludeEnd("ctx");
  12743. var $1,$3,$2,$receiver;
  12744. $1=self._isBlockContext();
  12745. if(!$core.assert($1)){
  12746. return self;
  12747. };
  12748. $3=self._outerContext();
  12749. if(($receiver = $3) == null || $receiver.isNil){
  12750. $2=$3;
  12751. } else {
  12752. var outer;
  12753. outer=$receiver;
  12754. $2=$recv(outer)._methodContext();
  12755. };
  12756. return $2;
  12757. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12758. }, function($ctx1) {$ctx1.fill(self,"methodContext",{},$globals.MethodContext)});
  12759. //>>excludeEnd("ctx");
  12760. },
  12761. //>>excludeStart("ide", pragmas.excludeIdeData);
  12762. args: [],
  12763. source: "methodContext\x0a\x09self isBlockContext ifFalse: [ ^ self ].\x0a\x09\x0a\x09^ self outerContext ifNotNil: [ :outer |\x0a\x09\x09outer methodContext ]",
  12764. referencedClasses: [],
  12765. //>>excludeEnd("ide");
  12766. messageSends: ["ifFalse:", "isBlockContext", "ifNotNil:", "outerContext", "methodContext"]
  12767. }),
  12768. $globals.MethodContext);
  12769. $core.addMethod(
  12770. $core.method({
  12771. selector: "outerContext",
  12772. protocol: 'accessing',
  12773. fn: function (){
  12774. var self=this;
  12775. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12776. return $core.withContext(function($ctx1) {
  12777. //>>excludeEnd("ctx");
  12778. return self.outerContext || self.homeContext;
  12779. return self;
  12780. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12781. }, function($ctx1) {$ctx1.fill(self,"outerContext",{},$globals.MethodContext)});
  12782. //>>excludeEnd("ctx");
  12783. },
  12784. //>>excludeStart("ide", pragmas.excludeIdeData);
  12785. args: [],
  12786. source: "outerContext\x0a\x09<return self.outerContext || self.homeContext>",
  12787. referencedClasses: [],
  12788. //>>excludeEnd("ide");
  12789. messageSends: []
  12790. }),
  12791. $globals.MethodContext);
  12792. $core.addMethod(
  12793. $core.method({
  12794. selector: "printOn:",
  12795. protocol: 'printing',
  12796. fn: function (aStream){
  12797. var self=this;
  12798. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12799. return $core.withContext(function($ctx1) {
  12800. //>>excludeEnd("ctx");
  12801. var $1;
  12802. (
  12803. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12804. $ctx1.supercall = true,
  12805. //>>excludeEnd("ctx");
  12806. $globals.MethodContext.superclass.fn.prototype._printOn_.apply($recv(self), [aStream]));
  12807. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12808. $ctx1.supercall = false;
  12809. //>>excludeEnd("ctx");;
  12810. $recv(aStream)._nextPutAll_("(");
  12811. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12812. $ctx1.sendIdx["nextPutAll:"]=1;
  12813. //>>excludeEnd("ctx");
  12814. $recv(aStream)._nextPutAll_(self._asString());
  12815. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12816. $ctx1.sendIdx["nextPutAll:"]=2;
  12817. //>>excludeEnd("ctx");
  12818. $1=$recv(aStream)._nextPutAll_(")");
  12819. return self;
  12820. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12821. }, function($ctx1) {$ctx1.fill(self,"printOn:",{aStream:aStream},$globals.MethodContext)});
  12822. //>>excludeEnd("ctx");
  12823. },
  12824. //>>excludeStart("ide", pragmas.excludeIdeData);
  12825. args: ["aStream"],
  12826. source: "printOn: aStream\x0a\x09super printOn: aStream.\x0a\x09aStream \x0a\x09\x09nextPutAll: '(';\x0a\x09\x09nextPutAll: self asString;\x0a\x09\x09nextPutAll: ')'",
  12827. referencedClasses: [],
  12828. //>>excludeEnd("ide");
  12829. messageSends: ["printOn:", "nextPutAll:", "asString"]
  12830. }),
  12831. $globals.MethodContext);
  12832. $core.addMethod(
  12833. $core.method({
  12834. selector: "receiver",
  12835. protocol: 'accessing',
  12836. fn: function (){
  12837. var self=this;
  12838. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12839. return $core.withContext(function($ctx1) {
  12840. //>>excludeEnd("ctx");
  12841. var $3,$2,$1;
  12842. $2=$recv(self._isBlockContext())._and_((function(){
  12843. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12844. return $core.withContext(function($ctx2) {
  12845. //>>excludeEnd("ctx");
  12846. $3=self._outerContext();
  12847. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12848. $ctx2.sendIdx["outerContext"]=1;
  12849. //>>excludeEnd("ctx");
  12850. return $recv($3)._notNil();
  12851. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12852. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  12853. //>>excludeEnd("ctx");
  12854. }));
  12855. if($core.assert($2)){
  12856. $1=$recv(self._outerContext())._receiver();
  12857. } else {
  12858. $1=self._basicReceiver();
  12859. };
  12860. return $1;
  12861. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12862. }, function($ctx1) {$ctx1.fill(self,"receiver",{},$globals.MethodContext)});
  12863. //>>excludeEnd("ctx");
  12864. },
  12865. //>>excludeStart("ide", pragmas.excludeIdeData);
  12866. args: [],
  12867. source: "receiver\x0a\x09^ (self isBlockContext and: [ self outerContext notNil ])\x0a\x09\x09ifTrue: [ self outerContext receiver ]\x0a\x09\x09ifFalse: [ self basicReceiver ]",
  12868. referencedClasses: [],
  12869. //>>excludeEnd("ide");
  12870. messageSends: ["ifTrue:ifFalse:", "and:", "isBlockContext", "notNil", "outerContext", "receiver", "basicReceiver"]
  12871. }),
  12872. $globals.MethodContext);
  12873. $core.addMethod(
  12874. $core.method({
  12875. selector: "selector",
  12876. protocol: 'accessing',
  12877. fn: function (){
  12878. var self=this;
  12879. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12880. return $core.withContext(function($ctx1) {
  12881. //>>excludeEnd("ctx");
  12882. if(self.selector) {
  12883. return $core.js2st(self.selector);
  12884. } else {
  12885. return nil;
  12886. }
  12887. ;
  12888. return self;
  12889. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12890. }, function($ctx1) {$ctx1.fill(self,"selector",{},$globals.MethodContext)});
  12891. //>>excludeEnd("ctx");
  12892. },
  12893. //>>excludeStart("ide", pragmas.excludeIdeData);
  12894. args: [],
  12895. source: "selector\x0a\x09<\x0a\x09\x09if(self.selector) {\x0a\x09\x09\x09return $core.js2st(self.selector);\x0a\x09\x09} else {\x0a\x09\x09\x09return nil;\x0a\x09\x09}\x0a\x09>",
  12896. referencedClasses: [],
  12897. //>>excludeEnd("ide");
  12898. messageSends: []
  12899. }),
  12900. $globals.MethodContext);
  12901. $core.addMethod(
  12902. $core.method({
  12903. selector: "sendIndexAt:",
  12904. protocol: 'accessing',
  12905. fn: function (aSelector){
  12906. var self=this;
  12907. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12908. return $core.withContext(function($ctx1) {
  12909. //>>excludeEnd("ctx");
  12910. return self.sendIdx[aSelector] || 0;
  12911. return self;
  12912. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12913. }, function($ctx1) {$ctx1.fill(self,"sendIndexAt:",{aSelector:aSelector},$globals.MethodContext)});
  12914. //>>excludeEnd("ctx");
  12915. },
  12916. //>>excludeStart("ide", pragmas.excludeIdeData);
  12917. args: ["aSelector"],
  12918. source: "sendIndexAt: aSelector\x0a\x09<return self.sendIdx[aSelector] || 0>",
  12919. referencedClasses: [],
  12920. //>>excludeEnd("ide");
  12921. messageSends: []
  12922. }),
  12923. $globals.MethodContext);
  12924. $core.addMethod(
  12925. $core.method({
  12926. selector: "sendIndexes",
  12927. protocol: 'accessing',
  12928. fn: function (){
  12929. var self=this;
  12930. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12931. return $core.withContext(function($ctx1) {
  12932. //>>excludeEnd("ctx");
  12933. return self.sendIdx;
  12934. return self;
  12935. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12936. }, function($ctx1) {$ctx1.fill(self,"sendIndexes",{},$globals.MethodContext)});
  12937. //>>excludeEnd("ctx");
  12938. },
  12939. //>>excludeStart("ide", pragmas.excludeIdeData);
  12940. args: [],
  12941. source: "sendIndexes\x0a\x09<return self.sendIdx>",
  12942. referencedClasses: [],
  12943. //>>excludeEnd("ide");
  12944. messageSends: []
  12945. }),
  12946. $globals.MethodContext);
  12947. $core.addMethod(
  12948. $core.method({
  12949. selector: "supercall",
  12950. protocol: 'accessing',
  12951. fn: function (){
  12952. var self=this;
  12953. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12954. return $core.withContext(function($ctx1) {
  12955. //>>excludeEnd("ctx");
  12956. return self.supercall == true;
  12957. return self;
  12958. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12959. }, function($ctx1) {$ctx1.fill(self,"supercall",{},$globals.MethodContext)});
  12960. //>>excludeEnd("ctx");
  12961. },
  12962. //>>excludeStart("ide", pragmas.excludeIdeData);
  12963. args: [],
  12964. source: "supercall\x0a\x09<return self.supercall == true>",
  12965. referencedClasses: [],
  12966. //>>excludeEnd("ide");
  12967. messageSends: []
  12968. }),
  12969. $globals.MethodContext);
  12970. $core.addMethod(
  12971. $core.method({
  12972. selector: "temps",
  12973. protocol: 'accessing',
  12974. fn: function (){
  12975. var self=this;
  12976. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12977. return $core.withContext(function($ctx1) {
  12978. //>>excludeEnd("ctx");
  12979. var $1;
  12980. self._deprecatedAPI();
  12981. $1=self._locals();
  12982. return $1;
  12983. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  12984. }, function($ctx1) {$ctx1.fill(self,"temps",{},$globals.MethodContext)});
  12985. //>>excludeEnd("ctx");
  12986. },
  12987. //>>excludeStart("ide", pragmas.excludeIdeData);
  12988. args: [],
  12989. source: "temps\x0a\x09self deprecatedAPI.\x0a\x09\x0a\x09^ self locals",
  12990. referencedClasses: [],
  12991. //>>excludeEnd("ide");
  12992. messageSends: ["deprecatedAPI", "locals"]
  12993. }),
  12994. $globals.MethodContext);
  12995. $core.addClass('NativeFunction', $globals.Object, [], 'Kernel-Methods');
  12996. //>>excludeStart("ide", pragmas.excludeIdeData);
  12997. $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' ]";
  12998. //>>excludeEnd("ide");
  12999. $core.addMethod(
  13000. $core.method({
  13001. selector: "constructor:",
  13002. protocol: 'instance creation',
  13003. fn: function (aString){
  13004. var self=this;
  13005. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13006. return $core.withContext(function($ctx1) {
  13007. //>>excludeEnd("ctx");
  13008. var nativeFunc=eval(aString);
  13009. return new nativeFunc();
  13010. ;
  13011. return self;
  13012. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13013. }, function($ctx1) {$ctx1.fill(self,"constructor:",{aString:aString},$globals.NativeFunction.klass)});
  13014. //>>excludeEnd("ctx");
  13015. },
  13016. //>>excludeStart("ide", pragmas.excludeIdeData);
  13017. args: ["aString"],
  13018. source: "constructor: aString\x0a\x09<\x0a\x09\x09var nativeFunc=eval(aString);\x0a\x09\x09return new nativeFunc();\x0a\x09>",
  13019. referencedClasses: [],
  13020. //>>excludeEnd("ide");
  13021. messageSends: []
  13022. }),
  13023. $globals.NativeFunction.klass);
  13024. $core.addMethod(
  13025. $core.method({
  13026. selector: "constructor:value:",
  13027. protocol: 'instance creation',
  13028. fn: function (aString,anObject){
  13029. var self=this;
  13030. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13031. return $core.withContext(function($ctx1) {
  13032. //>>excludeEnd("ctx");
  13033. var nativeFunc=eval(aString);
  13034. return new nativeFunc(anObject);
  13035. ;
  13036. return self;
  13037. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13038. }, function($ctx1) {$ctx1.fill(self,"constructor:value:",{aString:aString,anObject:anObject},$globals.NativeFunction.klass)});
  13039. //>>excludeEnd("ctx");
  13040. },
  13041. //>>excludeStart("ide", pragmas.excludeIdeData);
  13042. args: ["aString", "anObject"],
  13043. source: "constructor: aString value:anObject\x0a\x09<\x0a\x09\x09var nativeFunc=eval(aString);\x0a\x09\x09return new nativeFunc(anObject);\x0a\x09>",
  13044. referencedClasses: [],
  13045. //>>excludeEnd("ide");
  13046. messageSends: []
  13047. }),
  13048. $globals.NativeFunction.klass);
  13049. $core.addMethod(
  13050. $core.method({
  13051. selector: "constructor:value:value:",
  13052. protocol: 'instance creation',
  13053. fn: function (aString,anObject,anObject2){
  13054. var self=this;
  13055. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13056. return $core.withContext(function($ctx1) {
  13057. //>>excludeEnd("ctx");
  13058. var nativeFunc=eval(aString);
  13059. return new nativeFunc(anObject,anObject2);
  13060. ;
  13061. return self;
  13062. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13063. }, function($ctx1) {$ctx1.fill(self,"constructor:value:value:",{aString:aString,anObject:anObject,anObject2:anObject2},$globals.NativeFunction.klass)});
  13064. //>>excludeEnd("ctx");
  13065. },
  13066. //>>excludeStart("ide", pragmas.excludeIdeData);
  13067. args: ["aString", "anObject", "anObject2"],
  13068. source: "constructor: aString value:anObject value: anObject2\x0a\x09<\x0a\x09\x09var nativeFunc=eval(aString);\x0a\x09\x09return new nativeFunc(anObject,anObject2);\x0a\x09>",
  13069. referencedClasses: [],
  13070. //>>excludeEnd("ide");
  13071. messageSends: []
  13072. }),
  13073. $globals.NativeFunction.klass);
  13074. $core.addMethod(
  13075. $core.method({
  13076. selector: "constructor:value:value:value:",
  13077. protocol: 'instance creation',
  13078. fn: function (aString,anObject,anObject2,anObject3){
  13079. var self=this;
  13080. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13081. return $core.withContext(function($ctx1) {
  13082. //>>excludeEnd("ctx");
  13083. var nativeFunc=eval(aString);
  13084. return new nativeFunc(anObject,anObject2, anObject3);
  13085. ;
  13086. return self;
  13087. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13088. }, function($ctx1) {$ctx1.fill(self,"constructor:value:value:value:",{aString:aString,anObject:anObject,anObject2:anObject2,anObject3:anObject3},$globals.NativeFunction.klass)});
  13089. //>>excludeEnd("ctx");
  13090. },
  13091. //>>excludeStart("ide", pragmas.excludeIdeData);
  13092. args: ["aString", "anObject", "anObject2", "anObject3"],
  13093. source: "constructor: aString value:anObject value: anObject2 value:anObject3\x0a\x09<\x0a\x09\x09var nativeFunc=eval(aString);\x0a\x09\x09return new nativeFunc(anObject,anObject2, anObject3);\x0a\x09>",
  13094. referencedClasses: [],
  13095. //>>excludeEnd("ide");
  13096. messageSends: []
  13097. }),
  13098. $globals.NativeFunction.klass);
  13099. $core.addMethod(
  13100. $core.method({
  13101. selector: "exists:",
  13102. protocol: 'testing',
  13103. fn: function (aString){
  13104. var self=this;
  13105. function $PlatformInterface(){return $globals.PlatformInterface||(typeof PlatformInterface=="undefined"?nil:PlatformInterface)}
  13106. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13107. return $core.withContext(function($ctx1) {
  13108. //>>excludeEnd("ctx");
  13109. var $1;
  13110. $1=$recv($PlatformInterface())._existsGlobal_(aString);
  13111. return $1;
  13112. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13113. }, function($ctx1) {$ctx1.fill(self,"exists:",{aString:aString},$globals.NativeFunction.klass)});
  13114. //>>excludeEnd("ctx");
  13115. },
  13116. //>>excludeStart("ide", pragmas.excludeIdeData);
  13117. args: ["aString"],
  13118. source: "exists: aString\x0a\x09^ PlatformInterface existsGlobal: aString",
  13119. referencedClasses: ["PlatformInterface"],
  13120. //>>excludeEnd("ide");
  13121. messageSends: ["existsGlobal:"]
  13122. }),
  13123. $globals.NativeFunction.klass);
  13124. $core.addClass('Timeout', $globals.Object, ['rawTimeout'], 'Kernel-Methods');
  13125. //>>excludeStart("ide", pragmas.excludeIdeData);
  13126. $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.";
  13127. //>>excludeEnd("ide");
  13128. $core.addMethod(
  13129. $core.method({
  13130. selector: "clearInterval",
  13131. protocol: 'timeout/interval',
  13132. fn: function (){
  13133. var self=this;
  13134. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13135. return $core.withContext(function($ctx1) {
  13136. //>>excludeEnd("ctx");
  13137. var interval = self["@rawTimeout"];
  13138. clearInterval(interval);
  13139. ;
  13140. return self;
  13141. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13142. }, function($ctx1) {$ctx1.fill(self,"clearInterval",{},$globals.Timeout)});
  13143. //>>excludeEnd("ctx");
  13144. },
  13145. //>>excludeStart("ide", pragmas.excludeIdeData);
  13146. args: [],
  13147. source: "clearInterval\x0a\x09<\x0a\x09\x09var interval = self[\x22@rawTimeout\x22];\x0a\x09\x09clearInterval(interval);\x0a\x09>",
  13148. referencedClasses: [],
  13149. //>>excludeEnd("ide");
  13150. messageSends: []
  13151. }),
  13152. $globals.Timeout);
  13153. $core.addMethod(
  13154. $core.method({
  13155. selector: "clearTimeout",
  13156. protocol: 'timeout/interval',
  13157. fn: function (){
  13158. var self=this;
  13159. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13160. return $core.withContext(function($ctx1) {
  13161. //>>excludeEnd("ctx");
  13162. var timeout = self["@rawTimeout"];
  13163. clearTimeout(timeout);
  13164. ;
  13165. return self;
  13166. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13167. }, function($ctx1) {$ctx1.fill(self,"clearTimeout",{},$globals.Timeout)});
  13168. //>>excludeEnd("ctx");
  13169. },
  13170. //>>excludeStart("ide", pragmas.excludeIdeData);
  13171. args: [],
  13172. source: "clearTimeout\x0a\x09<\x0a\x09\x09var timeout = self[\x22@rawTimeout\x22];\x0a\x09\x09clearTimeout(timeout);\x0a\x09>",
  13173. referencedClasses: [],
  13174. //>>excludeEnd("ide");
  13175. messageSends: []
  13176. }),
  13177. $globals.Timeout);
  13178. $core.addMethod(
  13179. $core.method({
  13180. selector: "rawTimeout:",
  13181. protocol: 'accessing',
  13182. fn: function (anObject){
  13183. var self=this;
  13184. self["@rawTimeout"]=anObject;
  13185. return self;
  13186. },
  13187. //>>excludeStart("ide", pragmas.excludeIdeData);
  13188. args: ["anObject"],
  13189. source: "rawTimeout: anObject\x0a\x09rawTimeout := anObject",
  13190. referencedClasses: [],
  13191. //>>excludeEnd("ide");
  13192. messageSends: []
  13193. }),
  13194. $globals.Timeout);
  13195. $core.addMethod(
  13196. $core.method({
  13197. selector: "on:",
  13198. protocol: 'instance creation',
  13199. fn: function (anObject){
  13200. var self=this;
  13201. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13202. return $core.withContext(function($ctx1) {
  13203. //>>excludeEnd("ctx");
  13204. var $2,$3,$1;
  13205. $2=self._new();
  13206. $recv($2)._rawTimeout_(anObject);
  13207. $3=$recv($2)._yourself();
  13208. $1=$3;
  13209. return $1;
  13210. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13211. }, function($ctx1) {$ctx1.fill(self,"on:",{anObject:anObject},$globals.Timeout.klass)});
  13212. //>>excludeEnd("ctx");
  13213. },
  13214. //>>excludeStart("ide", pragmas.excludeIdeData);
  13215. args: ["anObject"],
  13216. source: "on: anObject\x0a\x09^ self new rawTimeout: anObject; yourself",
  13217. referencedClasses: [],
  13218. //>>excludeEnd("ide");
  13219. messageSends: ["rawTimeout:", "new", "yourself"]
  13220. }),
  13221. $globals.Timeout.klass);
  13222. });
  13223. define("amber_core/Kernel-Collections", ["amber/boot", "amber_core/Kernel-Objects"], function($boot){
  13224. var $core=$boot.api,nil=$boot.nil,$recv=$boot.asReceiver,$globals=$boot.globals;
  13225. var smalltalk=$core,_st=$recv,globals=$globals;
  13226. $core.addPackage('Kernel-Collections');
  13227. $core.packages["Kernel-Collections"].transport = {"type":"amd","amdNamespace":"amber_core"};
  13228. $core.addClass('Association', $globals.Object, ['key', 'value'], 'Kernel-Collections');
  13229. //>>excludeStart("ide", pragmas.excludeIdeData);
  13230. $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:`";
  13231. //>>excludeEnd("ide");
  13232. $core.addMethod(
  13233. $core.method({
  13234. selector: "=",
  13235. protocol: 'comparing',
  13236. fn: function (anAssociation){
  13237. var self=this;
  13238. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13239. return $core.withContext(function($ctx1) {
  13240. //>>excludeEnd("ctx");
  13241. var $3,$2,$5,$4,$6,$1;
  13242. $3=self._class();
  13243. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13244. $ctx1.sendIdx["class"]=1;
  13245. //>>excludeEnd("ctx");
  13246. $2=$recv($3).__eq($recv(anAssociation)._class());
  13247. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13248. $ctx1.sendIdx["="]=1;
  13249. //>>excludeEnd("ctx");
  13250. $1=$recv($2)._and_((function(){
  13251. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13252. return $core.withContext(function($ctx2) {
  13253. //>>excludeEnd("ctx");
  13254. $5=self._key();
  13255. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13256. $ctx2.sendIdx["key"]=1;
  13257. //>>excludeEnd("ctx");
  13258. $4=$recv($5).__eq($recv(anAssociation)._key());
  13259. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13260. $ctx2.sendIdx["="]=2;
  13261. //>>excludeEnd("ctx");
  13262. return $recv($4)._and_((function(){
  13263. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13264. return $core.withContext(function($ctx3) {
  13265. //>>excludeEnd("ctx");
  13266. $6=self._value();
  13267. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13268. $ctx3.sendIdx["value"]=1;
  13269. //>>excludeEnd("ctx");
  13270. return $recv($6).__eq($recv(anAssociation)._value());
  13271. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13272. }, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)});
  13273. //>>excludeEnd("ctx");
  13274. }));
  13275. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13276. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  13277. //>>excludeEnd("ctx");
  13278. }));
  13279. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13280. $ctx1.sendIdx["and:"]=1;
  13281. //>>excludeEnd("ctx");
  13282. return $1;
  13283. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13284. }, function($ctx1) {$ctx1.fill(self,"=",{anAssociation:anAssociation},$globals.Association)});
  13285. //>>excludeEnd("ctx");
  13286. },
  13287. //>>excludeStart("ide", pragmas.excludeIdeData);
  13288. args: ["anAssociation"],
  13289. source: "= anAssociation\x0a\x09^ self class = anAssociation class and: [\x0a\x09\x09self key = anAssociation key and: [\x0a\x09\x09self value = anAssociation value ]]",
  13290. referencedClasses: [],
  13291. //>>excludeEnd("ide");
  13292. messageSends: ["and:", "=", "class", "key", "value"]
  13293. }),
  13294. $globals.Association);
  13295. $core.addMethod(
  13296. $core.method({
  13297. selector: "key",
  13298. protocol: 'accessing',
  13299. fn: function (){
  13300. var self=this;
  13301. var $1;
  13302. $1=self["@key"];
  13303. return $1;
  13304. },
  13305. //>>excludeStart("ide", pragmas.excludeIdeData);
  13306. args: [],
  13307. source: "key\x0a\x09^ key",
  13308. referencedClasses: [],
  13309. //>>excludeEnd("ide");
  13310. messageSends: []
  13311. }),
  13312. $globals.Association);
  13313. $core.addMethod(
  13314. $core.method({
  13315. selector: "key:",
  13316. protocol: 'accessing',
  13317. fn: function (aKey){
  13318. var self=this;
  13319. self["@key"]=aKey;
  13320. return self;
  13321. },
  13322. //>>excludeStart("ide", pragmas.excludeIdeData);
  13323. args: ["aKey"],
  13324. source: "key: aKey\x0a\x09key := aKey",
  13325. referencedClasses: [],
  13326. //>>excludeEnd("ide");
  13327. messageSends: []
  13328. }),
  13329. $globals.Association);
  13330. $core.addMethod(
  13331. $core.method({
  13332. selector: "printOn:",
  13333. protocol: 'printing',
  13334. fn: function (aStream){
  13335. var self=this;
  13336. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13337. return $core.withContext(function($ctx1) {
  13338. //>>excludeEnd("ctx");
  13339. $recv(self._key())._printOn_(aStream);
  13340. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13341. $ctx1.sendIdx["printOn:"]=1;
  13342. //>>excludeEnd("ctx");
  13343. $recv(aStream)._nextPutAll_(" -> ");
  13344. $recv(self._value())._printOn_(aStream);
  13345. return self;
  13346. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13347. }, function($ctx1) {$ctx1.fill(self,"printOn:",{aStream:aStream},$globals.Association)});
  13348. //>>excludeEnd("ctx");
  13349. },
  13350. //>>excludeStart("ide", pragmas.excludeIdeData);
  13351. args: ["aStream"],
  13352. source: "printOn: aStream\x0a\x09self key printOn: aStream.\x0a\x09aStream nextPutAll: ' -> '.\x0a\x09self value printOn: aStream",
  13353. referencedClasses: [],
  13354. //>>excludeEnd("ide");
  13355. messageSends: ["printOn:", "key", "nextPutAll:", "value"]
  13356. }),
  13357. $globals.Association);
  13358. $core.addMethod(
  13359. $core.method({
  13360. selector: "value",
  13361. protocol: 'accessing',
  13362. fn: function (){
  13363. var self=this;
  13364. var $1;
  13365. $1=self["@value"];
  13366. return $1;
  13367. },
  13368. //>>excludeStart("ide", pragmas.excludeIdeData);
  13369. args: [],
  13370. source: "value\x0a\x09^ value",
  13371. referencedClasses: [],
  13372. //>>excludeEnd("ide");
  13373. messageSends: []
  13374. }),
  13375. $globals.Association);
  13376. $core.addMethod(
  13377. $core.method({
  13378. selector: "value:",
  13379. protocol: 'accessing',
  13380. fn: function (aValue){
  13381. var self=this;
  13382. self["@value"]=aValue;
  13383. return self;
  13384. },
  13385. //>>excludeStart("ide", pragmas.excludeIdeData);
  13386. args: ["aValue"],
  13387. source: "value: aValue\x0a\x09value := aValue",
  13388. referencedClasses: [],
  13389. //>>excludeEnd("ide");
  13390. messageSends: []
  13391. }),
  13392. $globals.Association);
  13393. $core.addMethod(
  13394. $core.method({
  13395. selector: "key:value:",
  13396. protocol: 'instance creation',
  13397. fn: function (aKey,aValue){
  13398. var self=this;
  13399. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13400. return $core.withContext(function($ctx1) {
  13401. //>>excludeEnd("ctx");
  13402. var $2,$3,$1;
  13403. $2=self._new();
  13404. $recv($2)._key_(aKey);
  13405. $recv($2)._value_(aValue);
  13406. $3=$recv($2)._yourself();
  13407. $1=$3;
  13408. return $1;
  13409. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13410. }, function($ctx1) {$ctx1.fill(self,"key:value:",{aKey:aKey,aValue:aValue},$globals.Association.klass)});
  13411. //>>excludeEnd("ctx");
  13412. },
  13413. //>>excludeStart("ide", pragmas.excludeIdeData);
  13414. args: ["aKey", "aValue"],
  13415. source: "key: aKey value: aValue\x0a\x09\x09^ self new\x0a\x09\x09key: aKey;\x0a\x09\x09value: aValue;\x0a\x09\x09yourself",
  13416. referencedClasses: [],
  13417. //>>excludeEnd("ide");
  13418. messageSends: ["key:", "new", "value:", "yourself"]
  13419. }),
  13420. $globals.Association.klass);
  13421. $core.addClass('BucketStore', $globals.Object, ['buckets', 'hashBlock'], 'Kernel-Collections');
  13422. //>>excludeStart("ide", pragmas.excludeIdeData);
  13423. $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`.";
  13424. //>>excludeEnd("ide");
  13425. $core.addMethod(
  13426. $core.method({
  13427. selector: "bucketOfElement:",
  13428. protocol: 'accessing',
  13429. fn: function (anObject){
  13430. var self=this;
  13431. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13432. return $core.withContext(function($ctx1) {
  13433. //>>excludeEnd("ctx");
  13434. var hash = self['@hashBlock'](anObject);
  13435. if (!hash) return null;
  13436. var buckets = self['@buckets'],
  13437. bucket = buckets[hash];
  13438. if (!bucket) { bucket = buckets[hash] = self._newBucket(); }
  13439. return bucket;
  13440. ;
  13441. return self;
  13442. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13443. }, function($ctx1) {$ctx1.fill(self,"bucketOfElement:",{anObject:anObject},$globals.BucketStore)});
  13444. //>>excludeEnd("ctx");
  13445. },
  13446. //>>excludeStart("ide", pragmas.excludeIdeData);
  13447. args: ["anObject"],
  13448. source: "bucketOfElement: anObject\x0a\x09<\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>",
  13449. referencedClasses: [],
  13450. //>>excludeEnd("ide");
  13451. messageSends: []
  13452. }),
  13453. $globals.BucketStore);
  13454. $core.addMethod(
  13455. $core.method({
  13456. selector: "do:",
  13457. protocol: 'enumerating',
  13458. fn: function (aBlock){
  13459. var self=this;
  13460. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13461. return $core.withContext(function($ctx1) {
  13462. //>>excludeEnd("ctx");
  13463. var buckets = self['@buckets'];
  13464. var keys = Object.keys(buckets);
  13465. for (var i = 0; i < keys.length; ++i) { buckets[keys[i]]._do_(aBlock); }
  13466. ;
  13467. return self;
  13468. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13469. }, function($ctx1) {$ctx1.fill(self,"do:",{aBlock:aBlock},$globals.BucketStore)});
  13470. //>>excludeEnd("ctx");
  13471. },
  13472. //>>excludeStart("ide", pragmas.excludeIdeData);
  13473. args: ["aBlock"],
  13474. source: "do: aBlock\x0a\x09<\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>",
  13475. referencedClasses: [],
  13476. //>>excludeEnd("ide");
  13477. messageSends: []
  13478. }),
  13479. $globals.BucketStore);
  13480. $core.addMethod(
  13481. $core.method({
  13482. selector: "hashBlock:",
  13483. protocol: 'accessing',
  13484. fn: function (aBlock){
  13485. var self=this;
  13486. self["@hashBlock"]=aBlock;
  13487. return self;
  13488. },
  13489. //>>excludeStart("ide", pragmas.excludeIdeData);
  13490. args: ["aBlock"],
  13491. source: "hashBlock: aBlock\x0a\x09hashBlock := aBlock",
  13492. referencedClasses: [],
  13493. //>>excludeEnd("ide");
  13494. messageSends: []
  13495. }),
  13496. $globals.BucketStore);
  13497. $core.addMethod(
  13498. $core.method({
  13499. selector: "initialize",
  13500. protocol: 'initialization',
  13501. fn: function (){
  13502. var self=this;
  13503. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13504. return $core.withContext(function($ctx1) {
  13505. //>>excludeEnd("ctx");
  13506. (
  13507. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13508. $ctx1.supercall = true,
  13509. //>>excludeEnd("ctx");
  13510. $globals.BucketStore.superclass.fn.prototype._initialize.apply($recv(self), []));
  13511. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13512. $ctx1.supercall = false;
  13513. //>>excludeEnd("ctx");;
  13514. self._removeAll();
  13515. return self;
  13516. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13517. }, function($ctx1) {$ctx1.fill(self,"initialize",{},$globals.BucketStore)});
  13518. //>>excludeEnd("ctx");
  13519. },
  13520. //>>excludeStart("ide", pragmas.excludeIdeData);
  13521. args: [],
  13522. source: "initialize\x0a\x09super initialize.\x0a\x09self removeAll",
  13523. referencedClasses: [],
  13524. //>>excludeEnd("ide");
  13525. messageSends: ["initialize", "removeAll"]
  13526. }),
  13527. $globals.BucketStore);
  13528. $core.addMethod(
  13529. $core.method({
  13530. selector: "newBucket",
  13531. protocol: 'private',
  13532. fn: function (){
  13533. var self=this;
  13534. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13535. return $core.withContext(function($ctx1) {
  13536. //>>excludeEnd("ctx");
  13537. self._subclassResponsibility();
  13538. return self;
  13539. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13540. }, function($ctx1) {$ctx1.fill(self,"newBucket",{},$globals.BucketStore)});
  13541. //>>excludeEnd("ctx");
  13542. },
  13543. //>>excludeStart("ide", pragmas.excludeIdeData);
  13544. args: [],
  13545. source: "newBucket\x0a\x09self subclassResponsibility",
  13546. referencedClasses: [],
  13547. //>>excludeEnd("ide");
  13548. messageSends: ["subclassResponsibility"]
  13549. }),
  13550. $globals.BucketStore);
  13551. $core.addMethod(
  13552. $core.method({
  13553. selector: "removeAll",
  13554. protocol: 'adding/removing',
  13555. fn: function (){
  13556. var self=this;
  13557. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13558. return $core.withContext(function($ctx1) {
  13559. //>>excludeEnd("ctx");
  13560. self['@buckets'] = Object.create(null);;
  13561. return self;
  13562. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13563. }, function($ctx1) {$ctx1.fill(self,"removeAll",{},$globals.BucketStore)});
  13564. //>>excludeEnd("ctx");
  13565. },
  13566. //>>excludeStart("ide", pragmas.excludeIdeData);
  13567. args: [],
  13568. source: "removeAll\x0a\x09<self['@buckets'] = Object.create(null);>",
  13569. referencedClasses: [],
  13570. //>>excludeEnd("ide");
  13571. messageSends: []
  13572. }),
  13573. $globals.BucketStore);
  13574. $core.addMethod(
  13575. $core.method({
  13576. selector: "hashBlock:",
  13577. protocol: 'instance creation',
  13578. fn: function (aBlock){
  13579. var self=this;
  13580. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13581. return $core.withContext(function($ctx1) {
  13582. //>>excludeEnd("ctx");
  13583. var $2,$3,$1;
  13584. $2=self._new();
  13585. $recv($2)._hashBlock_(aBlock);
  13586. $3=$recv($2)._yourself();
  13587. $1=$3;
  13588. return $1;
  13589. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13590. }, function($ctx1) {$ctx1.fill(self,"hashBlock:",{aBlock:aBlock},$globals.BucketStore.klass)});
  13591. //>>excludeEnd("ctx");
  13592. },
  13593. //>>excludeStart("ide", pragmas.excludeIdeData);
  13594. args: ["aBlock"],
  13595. source: "hashBlock: aBlock\x0a\x09^ self new\x0a\x09\x09hashBlock: aBlock;\x0a\x09\x09yourself",
  13596. referencedClasses: [],
  13597. //>>excludeEnd("ide");
  13598. messageSends: ["hashBlock:", "new", "yourself"]
  13599. }),
  13600. $globals.BucketStore.klass);
  13601. $core.addClass('ArrayBucketStore', $globals.BucketStore, [], 'Kernel-Collections');
  13602. //>>excludeStart("ide", pragmas.excludeIdeData);
  13603. $globals.ArrayBucketStore.comment="I am a concrete `BucketStore` with buckets being instance of `Array`.";
  13604. //>>excludeEnd("ide");
  13605. $core.addMethod(
  13606. $core.method({
  13607. selector: "newBucket",
  13608. protocol: 'private',
  13609. fn: function (){
  13610. var self=this;
  13611. var $1;
  13612. $1=[];
  13613. return $1;
  13614. },
  13615. //>>excludeStart("ide", pragmas.excludeIdeData);
  13616. args: [],
  13617. source: "newBucket\x0a\x09^ #()",
  13618. referencedClasses: [],
  13619. //>>excludeEnd("ide");
  13620. messageSends: []
  13621. }),
  13622. $globals.ArrayBucketStore);
  13623. $core.addClass('Collection', $globals.Object, [], 'Kernel-Collections');
  13624. //>>excludeStart("ide", pragmas.excludeIdeData);
  13625. $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.";
  13626. //>>excludeEnd("ide");
  13627. $core.addMethod(
  13628. $core.method({
  13629. selector: ",",
  13630. protocol: 'copying',
  13631. fn: function (aCollection){
  13632. var self=this;
  13633. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13634. return $core.withContext(function($ctx1) {
  13635. //>>excludeEnd("ctx");
  13636. var $2,$3,$1;
  13637. $2=self._copy();
  13638. $recv($2)._addAll_(aCollection);
  13639. $3=$recv($2)._yourself();
  13640. $1=$3;
  13641. return $1;
  13642. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13643. }, function($ctx1) {$ctx1.fill(self,",",{aCollection:aCollection},$globals.Collection)});
  13644. //>>excludeEnd("ctx");
  13645. },
  13646. //>>excludeStart("ide", pragmas.excludeIdeData);
  13647. args: ["aCollection"],
  13648. source: ", aCollection\x0a\x09^ self copy\x0a\x09\x09addAll: aCollection;\x0a\x09\x09yourself",
  13649. referencedClasses: [],
  13650. //>>excludeEnd("ide");
  13651. messageSends: ["addAll:", "copy", "yourself"]
  13652. }),
  13653. $globals.Collection);
  13654. $core.addMethod(
  13655. $core.method({
  13656. selector: "add:",
  13657. protocol: 'adding/removing',
  13658. fn: function (anObject){
  13659. var self=this;
  13660. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13661. return $core.withContext(function($ctx1) {
  13662. //>>excludeEnd("ctx");
  13663. self._subclassResponsibility();
  13664. return self;
  13665. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13666. }, function($ctx1) {$ctx1.fill(self,"add:",{anObject:anObject},$globals.Collection)});
  13667. //>>excludeEnd("ctx");
  13668. },
  13669. //>>excludeStart("ide", pragmas.excludeIdeData);
  13670. args: ["anObject"],
  13671. source: "add: anObject\x0a\x09self subclassResponsibility",
  13672. referencedClasses: [],
  13673. //>>excludeEnd("ide");
  13674. messageSends: ["subclassResponsibility"]
  13675. }),
  13676. $globals.Collection);
  13677. $core.addMethod(
  13678. $core.method({
  13679. selector: "addAll:",
  13680. protocol: 'adding/removing',
  13681. fn: function (aCollection){
  13682. var self=this;
  13683. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13684. return $core.withContext(function($ctx1) {
  13685. //>>excludeEnd("ctx");
  13686. $recv(aCollection)._do_((function(each){
  13687. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13688. return $core.withContext(function($ctx2) {
  13689. //>>excludeEnd("ctx");
  13690. return self._add_(each);
  13691. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13692. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  13693. //>>excludeEnd("ctx");
  13694. }));
  13695. return aCollection;
  13696. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13697. }, function($ctx1) {$ctx1.fill(self,"addAll:",{aCollection:aCollection},$globals.Collection)});
  13698. //>>excludeEnd("ctx");
  13699. },
  13700. //>>excludeStart("ide", pragmas.excludeIdeData);
  13701. args: ["aCollection"],
  13702. source: "addAll: aCollection\x0a\x09aCollection do: [ :each |\x0a\x09\x09self add: each ].\x0a\x09^ aCollection",
  13703. referencedClasses: [],
  13704. //>>excludeEnd("ide");
  13705. messageSends: ["do:", "add:"]
  13706. }),
  13707. $globals.Collection);
  13708. $core.addMethod(
  13709. $core.method({
  13710. selector: "allSatisfy:",
  13711. protocol: 'enumerating',
  13712. fn: function (aBlock){
  13713. var self=this;
  13714. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13715. return $core.withContext(function($ctx1) {
  13716. //>>excludeEnd("ctx");
  13717. var $1;
  13718. var $early={};
  13719. try {
  13720. self._do_((function(each){
  13721. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13722. return $core.withContext(function($ctx2) {
  13723. //>>excludeEnd("ctx");
  13724. $1=$recv(aBlock)._value_(each);
  13725. if(!$core.assert($1)){
  13726. throw $early=[false];
  13727. };
  13728. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13729. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  13730. //>>excludeEnd("ctx");
  13731. }));
  13732. return true;
  13733. }
  13734. catch(e) {if(e===$early)return e[0]; throw e}
  13735. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13736. }, function($ctx1) {$ctx1.fill(self,"allSatisfy:",{aBlock:aBlock},$globals.Collection)});
  13737. //>>excludeEnd("ctx");
  13738. },
  13739. //>>excludeStart("ide", pragmas.excludeIdeData);
  13740. args: ["aBlock"],
  13741. 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",
  13742. referencedClasses: [],
  13743. //>>excludeEnd("ide");
  13744. messageSends: ["do:", "ifFalse:", "value:"]
  13745. }),
  13746. $globals.Collection);
  13747. $core.addMethod(
  13748. $core.method({
  13749. selector: "anyOne",
  13750. protocol: 'adding/removing',
  13751. fn: function (){
  13752. var self=this;
  13753. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13754. return $core.withContext(function($ctx1) {
  13755. //>>excludeEnd("ctx");
  13756. var $early={};
  13757. try {
  13758. self._ifEmpty_((function(){
  13759. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13760. return $core.withContext(function($ctx2) {
  13761. //>>excludeEnd("ctx");
  13762. return self._error_("Collection is empty");
  13763. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13764. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  13765. //>>excludeEnd("ctx");
  13766. }));
  13767. self._do_((function(each){
  13768. throw $early=[each];
  13769. }));
  13770. return self;
  13771. }
  13772. catch(e) {if(e===$early)return e[0]; throw e}
  13773. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13774. }, function($ctx1) {$ctx1.fill(self,"anyOne",{},$globals.Collection)});
  13775. //>>excludeEnd("ctx");
  13776. },
  13777. //>>excludeStart("ide", pragmas.excludeIdeData);
  13778. args: [],
  13779. 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 ]",
  13780. referencedClasses: [],
  13781. //>>excludeEnd("ide");
  13782. messageSends: ["ifEmpty:", "error:", "do:"]
  13783. }),
  13784. $globals.Collection);
  13785. $core.addMethod(
  13786. $core.method({
  13787. selector: "anySatisfy:",
  13788. protocol: 'enumerating',
  13789. fn: function (aBlock){
  13790. var self=this;
  13791. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13792. return $core.withContext(function($ctx1) {
  13793. //>>excludeEnd("ctx");
  13794. var $1;
  13795. var $early={};
  13796. try {
  13797. self._do_((function(each){
  13798. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13799. return $core.withContext(function($ctx2) {
  13800. //>>excludeEnd("ctx");
  13801. $1=$recv(aBlock)._value_(each);
  13802. if($core.assert($1)){
  13803. throw $early=[true];
  13804. };
  13805. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13806. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  13807. //>>excludeEnd("ctx");
  13808. }));
  13809. return false;
  13810. }
  13811. catch(e) {if(e===$early)return e[0]; throw e}
  13812. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13813. }, function($ctx1) {$ctx1.fill(self,"anySatisfy:",{aBlock:aBlock},$globals.Collection)});
  13814. //>>excludeEnd("ctx");
  13815. },
  13816. //>>excludeStart("ide", pragmas.excludeIdeData);
  13817. args: ["aBlock"],
  13818. 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",
  13819. referencedClasses: [],
  13820. //>>excludeEnd("ide");
  13821. messageSends: ["do:", "ifTrue:", "value:"]
  13822. }),
  13823. $globals.Collection);
  13824. $core.addMethod(
  13825. $core.method({
  13826. selector: "asArray",
  13827. protocol: 'converting',
  13828. fn: function (){
  13829. var self=this;
  13830. function $Array(){return $globals.Array||(typeof Array=="undefined"?nil:Array)}
  13831. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13832. return $core.withContext(function($ctx1) {
  13833. //>>excludeEnd("ctx");
  13834. var $1;
  13835. $1=$recv($Array())._withAll_(self);
  13836. return $1;
  13837. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13838. }, function($ctx1) {$ctx1.fill(self,"asArray",{},$globals.Collection)});
  13839. //>>excludeEnd("ctx");
  13840. },
  13841. //>>excludeStart("ide", pragmas.excludeIdeData);
  13842. args: [],
  13843. source: "asArray\x0a\x09^ Array withAll: self",
  13844. referencedClasses: ["Array"],
  13845. //>>excludeEnd("ide");
  13846. messageSends: ["withAll:"]
  13847. }),
  13848. $globals.Collection);
  13849. $core.addMethod(
  13850. $core.method({
  13851. selector: "asJSON",
  13852. protocol: 'converting',
  13853. fn: function (){
  13854. var self=this;
  13855. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13856. return $core.withContext(function($ctx1) {
  13857. //>>excludeEnd("ctx");
  13858. var $1;
  13859. $1=$recv(self._asArray())._collect_((function(each){
  13860. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13861. return $core.withContext(function($ctx2) {
  13862. //>>excludeEnd("ctx");
  13863. return $recv(each)._asJSON();
  13864. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13865. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  13866. //>>excludeEnd("ctx");
  13867. }));
  13868. return $1;
  13869. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13870. }, function($ctx1) {$ctx1.fill(self,"asJSON",{},$globals.Collection)});
  13871. //>>excludeEnd("ctx");
  13872. },
  13873. //>>excludeStart("ide", pragmas.excludeIdeData);
  13874. args: [],
  13875. source: "asJSON\x0a\x09^ self asArray collect: [ :each | each asJSON ]",
  13876. referencedClasses: [],
  13877. //>>excludeEnd("ide");
  13878. messageSends: ["collect:", "asArray", "asJSON"]
  13879. }),
  13880. $globals.Collection);
  13881. $core.addMethod(
  13882. $core.method({
  13883. selector: "asOrderedCollection",
  13884. protocol: 'converting',
  13885. fn: function (){
  13886. var self=this;
  13887. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13888. return $core.withContext(function($ctx1) {
  13889. //>>excludeEnd("ctx");
  13890. var $1;
  13891. $1=self._asArray();
  13892. return $1;
  13893. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13894. }, function($ctx1) {$ctx1.fill(self,"asOrderedCollection",{},$globals.Collection)});
  13895. //>>excludeEnd("ctx");
  13896. },
  13897. //>>excludeStart("ide", pragmas.excludeIdeData);
  13898. args: [],
  13899. source: "asOrderedCollection\x0a\x09^ self asArray",
  13900. referencedClasses: [],
  13901. //>>excludeEnd("ide");
  13902. messageSends: ["asArray"]
  13903. }),
  13904. $globals.Collection);
  13905. $core.addMethod(
  13906. $core.method({
  13907. selector: "asSet",
  13908. protocol: 'converting',
  13909. fn: function (){
  13910. var self=this;
  13911. function $Set(){return $globals.Set||(typeof Set=="undefined"?nil:Set)}
  13912. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13913. return $core.withContext(function($ctx1) {
  13914. //>>excludeEnd("ctx");
  13915. var $1;
  13916. $1=$recv($Set())._withAll_(self);
  13917. return $1;
  13918. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13919. }, function($ctx1) {$ctx1.fill(self,"asSet",{},$globals.Collection)});
  13920. //>>excludeEnd("ctx");
  13921. },
  13922. //>>excludeStart("ide", pragmas.excludeIdeData);
  13923. args: [],
  13924. source: "asSet\x0a\x09^ Set withAll: self",
  13925. referencedClasses: ["Set"],
  13926. //>>excludeEnd("ide");
  13927. messageSends: ["withAll:"]
  13928. }),
  13929. $globals.Collection);
  13930. $core.addMethod(
  13931. $core.method({
  13932. selector: "collect:",
  13933. protocol: 'enumerating',
  13934. fn: function (aBlock){
  13935. var self=this;
  13936. var stream;
  13937. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13938. return $core.withContext(function($ctx1) {
  13939. //>>excludeEnd("ctx");
  13940. var $1;
  13941. stream=$recv($recv(self._class())._new())._writeStream();
  13942. self._do_((function(each){
  13943. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13944. return $core.withContext(function($ctx2) {
  13945. //>>excludeEnd("ctx");
  13946. return $recv(stream)._nextPut_($recv(aBlock)._value_(each));
  13947. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13948. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  13949. //>>excludeEnd("ctx");
  13950. }));
  13951. $1=$recv(stream)._contents();
  13952. return $1;
  13953. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13954. }, function($ctx1) {$ctx1.fill(self,"collect:",{aBlock:aBlock,stream:stream},$globals.Collection)});
  13955. //>>excludeEnd("ctx");
  13956. },
  13957. //>>excludeStart("ide", pragmas.excludeIdeData);
  13958. args: ["aBlock"],
  13959. 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",
  13960. referencedClasses: [],
  13961. //>>excludeEnd("ide");
  13962. messageSends: ["writeStream", "new", "class", "do:", "nextPut:", "value:", "contents"]
  13963. }),
  13964. $globals.Collection);
  13965. $core.addMethod(
  13966. $core.method({
  13967. selector: "contains:",
  13968. protocol: 'testing',
  13969. fn: function (aBlock){
  13970. var self=this;
  13971. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13972. return $core.withContext(function($ctx1) {
  13973. //>>excludeEnd("ctx");
  13974. var $1;
  13975. self._deprecatedAPI();
  13976. $1=self._anySatisfy_(aBlock);
  13977. return $1;
  13978. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13979. }, function($ctx1) {$ctx1.fill(self,"contains:",{aBlock:aBlock},$globals.Collection)});
  13980. //>>excludeEnd("ctx");
  13981. },
  13982. //>>excludeStart("ide", pragmas.excludeIdeData);
  13983. args: ["aBlock"],
  13984. source: "contains: aBlock\x0a\x09self deprecatedAPI.\x0a\x0a\x09^ self anySatisfy: aBlock",
  13985. referencedClasses: [],
  13986. //>>excludeEnd("ide");
  13987. messageSends: ["deprecatedAPI", "anySatisfy:"]
  13988. }),
  13989. $globals.Collection);
  13990. $core.addMethod(
  13991. $core.method({
  13992. selector: "copyWith:",
  13993. protocol: 'copying',
  13994. fn: function (anObject){
  13995. var self=this;
  13996. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  13997. return $core.withContext(function($ctx1) {
  13998. //>>excludeEnd("ctx");
  13999. var $2,$3,$1;
  14000. $2=self._copy();
  14001. $recv($2)._add_(anObject);
  14002. $3=$recv($2)._yourself();
  14003. $1=$3;
  14004. return $1;
  14005. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14006. }, function($ctx1) {$ctx1.fill(self,"copyWith:",{anObject:anObject},$globals.Collection)});
  14007. //>>excludeEnd("ctx");
  14008. },
  14009. //>>excludeStart("ide", pragmas.excludeIdeData);
  14010. args: ["anObject"],
  14011. source: "copyWith: anObject\x0a\x09^ self copy add: anObject; yourself",
  14012. referencedClasses: [],
  14013. //>>excludeEnd("ide");
  14014. messageSends: ["add:", "copy", "yourself"]
  14015. }),
  14016. $globals.Collection);
  14017. $core.addMethod(
  14018. $core.method({
  14019. selector: "copyWithAll:",
  14020. protocol: 'copying',
  14021. fn: function (aCollection){
  14022. var self=this;
  14023. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14024. return $core.withContext(function($ctx1) {
  14025. //>>excludeEnd("ctx");
  14026. var $2,$3,$1;
  14027. $2=self._copy();
  14028. $recv($2)._addAll_(aCollection);
  14029. $3=$recv($2)._yourself();
  14030. $1=$3;
  14031. return $1;
  14032. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14033. }, function($ctx1) {$ctx1.fill(self,"copyWithAll:",{aCollection:aCollection},$globals.Collection)});
  14034. //>>excludeEnd("ctx");
  14035. },
  14036. //>>excludeStart("ide", pragmas.excludeIdeData);
  14037. args: ["aCollection"],
  14038. source: "copyWithAll: aCollection\x0a\x09^ self copy addAll: aCollection; yourself",
  14039. referencedClasses: [],
  14040. //>>excludeEnd("ide");
  14041. messageSends: ["addAll:", "copy", "yourself"]
  14042. }),
  14043. $globals.Collection);
  14044. $core.addMethod(
  14045. $core.method({
  14046. selector: "copyWithoutAll:",
  14047. protocol: 'copying',
  14048. fn: function (aCollection){
  14049. var self=this;
  14050. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14051. return $core.withContext(function($ctx1) {
  14052. //>>excludeEnd("ctx");
  14053. var $1;
  14054. $1=self._reject_((function(each){
  14055. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14056. return $core.withContext(function($ctx2) {
  14057. //>>excludeEnd("ctx");
  14058. return $recv(aCollection)._includes_(each);
  14059. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14060. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  14061. //>>excludeEnd("ctx");
  14062. }));
  14063. return $1;
  14064. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14065. }, function($ctx1) {$ctx1.fill(self,"copyWithoutAll:",{aCollection:aCollection},$globals.Collection)});
  14066. //>>excludeEnd("ctx");
  14067. },
  14068. //>>excludeStart("ide", pragmas.excludeIdeData);
  14069. args: ["aCollection"],
  14070. 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 ]",
  14071. referencedClasses: [],
  14072. //>>excludeEnd("ide");
  14073. messageSends: ["reject:", "includes:"]
  14074. }),
  14075. $globals.Collection);
  14076. $core.addMethod(
  14077. $core.method({
  14078. selector: "detect:",
  14079. protocol: 'enumerating',
  14080. fn: function (aBlock){
  14081. var self=this;
  14082. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14083. return $core.withContext(function($ctx1) {
  14084. //>>excludeEnd("ctx");
  14085. var $1;
  14086. $1=self._detect_ifNone_(aBlock,(function(){
  14087. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14088. return $core.withContext(function($ctx2) {
  14089. //>>excludeEnd("ctx");
  14090. return self._errorNotFound();
  14091. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14092. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  14093. //>>excludeEnd("ctx");
  14094. }));
  14095. return $1;
  14096. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14097. }, function($ctx1) {$ctx1.fill(self,"detect:",{aBlock:aBlock},$globals.Collection)});
  14098. //>>excludeEnd("ctx");
  14099. },
  14100. //>>excludeStart("ide", pragmas.excludeIdeData);
  14101. args: ["aBlock"],
  14102. source: "detect: aBlock\x0a\x09^ self detect: aBlock ifNone: [ self errorNotFound ]",
  14103. referencedClasses: [],
  14104. //>>excludeEnd("ide");
  14105. messageSends: ["detect:ifNone:", "errorNotFound"]
  14106. }),
  14107. $globals.Collection);
  14108. $core.addMethod(
  14109. $core.method({
  14110. selector: "detect:ifNone:",
  14111. protocol: 'enumerating',
  14112. fn: function (aBlock,anotherBlock){
  14113. var self=this;
  14114. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14115. return $core.withContext(function($ctx1) {
  14116. //>>excludeEnd("ctx");
  14117. self._subclassResponsibility();
  14118. return self;
  14119. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14120. }, function($ctx1) {$ctx1.fill(self,"detect:ifNone:",{aBlock:aBlock,anotherBlock:anotherBlock},$globals.Collection)});
  14121. //>>excludeEnd("ctx");
  14122. },
  14123. //>>excludeStart("ide", pragmas.excludeIdeData);
  14124. args: ["aBlock", "anotherBlock"],
  14125. source: "detect: aBlock ifNone: anotherBlock\x0a\x09self subclassResponsibility",
  14126. referencedClasses: [],
  14127. //>>excludeEnd("ide");
  14128. messageSends: ["subclassResponsibility"]
  14129. }),
  14130. $globals.Collection);
  14131. $core.addMethod(
  14132. $core.method({
  14133. selector: "do:",
  14134. protocol: 'enumerating',
  14135. fn: function (aBlock){
  14136. var self=this;
  14137. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14138. return $core.withContext(function($ctx1) {
  14139. //>>excludeEnd("ctx");
  14140. self._subclassResponsibility();
  14141. return self;
  14142. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14143. }, function($ctx1) {$ctx1.fill(self,"do:",{aBlock:aBlock},$globals.Collection)});
  14144. //>>excludeEnd("ctx");
  14145. },
  14146. //>>excludeStart("ide", pragmas.excludeIdeData);
  14147. args: ["aBlock"],
  14148. source: "do: aBlock\x0a\x09self subclassResponsibility",
  14149. referencedClasses: [],
  14150. //>>excludeEnd("ide");
  14151. messageSends: ["subclassResponsibility"]
  14152. }),
  14153. $globals.Collection);
  14154. $core.addMethod(
  14155. $core.method({
  14156. selector: "do:separatedBy:",
  14157. protocol: 'enumerating',
  14158. fn: function (aBlock,anotherBlock){
  14159. var self=this;
  14160. var actionBeforeElement;
  14161. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14162. return $core.withContext(function($ctx1) {
  14163. //>>excludeEnd("ctx");
  14164. actionBeforeElement=(function(){
  14165. actionBeforeElement=anotherBlock;
  14166. return actionBeforeElement;
  14167. });
  14168. self._do_((function(each){
  14169. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14170. return $core.withContext(function($ctx2) {
  14171. //>>excludeEnd("ctx");
  14172. $recv(actionBeforeElement)._value();
  14173. return $recv(aBlock)._value_(each);
  14174. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14175. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,2)});
  14176. //>>excludeEnd("ctx");
  14177. }));
  14178. return self;
  14179. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14180. }, function($ctx1) {$ctx1.fill(self,"do:separatedBy:",{aBlock:aBlock,anotherBlock:anotherBlock,actionBeforeElement:actionBeforeElement},$globals.Collection)});
  14181. //>>excludeEnd("ctx");
  14182. },
  14183. //>>excludeStart("ide", pragmas.excludeIdeData);
  14184. args: ["aBlock", "anotherBlock"],
  14185. 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 ]",
  14186. referencedClasses: [],
  14187. //>>excludeEnd("ide");
  14188. messageSends: ["do:", "value", "value:"]
  14189. }),
  14190. $globals.Collection);
  14191. $core.addMethod(
  14192. $core.method({
  14193. selector: "errorNotFound",
  14194. protocol: 'error handling',
  14195. fn: function (){
  14196. var self=this;
  14197. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14198. return $core.withContext(function($ctx1) {
  14199. //>>excludeEnd("ctx");
  14200. self._error_("Object is not in the collection");
  14201. return self;
  14202. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14203. }, function($ctx1) {$ctx1.fill(self,"errorNotFound",{},$globals.Collection)});
  14204. //>>excludeEnd("ctx");
  14205. },
  14206. //>>excludeStart("ide", pragmas.excludeIdeData);
  14207. args: [],
  14208. source: "errorNotFound\x0a\x09self error: 'Object is not in the collection'",
  14209. referencedClasses: [],
  14210. //>>excludeEnd("ide");
  14211. messageSends: ["error:"]
  14212. }),
  14213. $globals.Collection);
  14214. $core.addMethod(
  14215. $core.method({
  14216. selector: "ifEmpty:",
  14217. protocol: 'testing',
  14218. fn: function (aBlock){
  14219. var self=this;
  14220. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14221. return $core.withContext(function($ctx1) {
  14222. //>>excludeEnd("ctx");
  14223. var $2,$1;
  14224. $2=self._isEmpty();
  14225. $1=$recv($2)._ifTrue_ifFalse_(aBlock,(function(){
  14226. return self;
  14227. }));
  14228. return $1;
  14229. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14230. }, function($ctx1) {$ctx1.fill(self,"ifEmpty:",{aBlock:aBlock},$globals.Collection)});
  14231. //>>excludeEnd("ctx");
  14232. },
  14233. //>>excludeStart("ide", pragmas.excludeIdeData);
  14234. args: ["aBlock"],
  14235. 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: aBlock\x0a\x09\x09ifFalse: [ self ]",
  14236. referencedClasses: [],
  14237. //>>excludeEnd("ide");
  14238. messageSends: ["ifTrue:ifFalse:", "isEmpty"]
  14239. }),
  14240. $globals.Collection);
  14241. $core.addMethod(
  14242. $core.method({
  14243. selector: "ifEmpty:ifNotEmpty:",
  14244. protocol: 'testing',
  14245. fn: function (aBlock,anotherBlock){
  14246. var self=this;
  14247. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14248. return $core.withContext(function($ctx1) {
  14249. //>>excludeEnd("ctx");
  14250. var $2,$1;
  14251. $2=self._isEmpty();
  14252. $1=$recv($2)._ifTrue_ifFalse_(aBlock,(function(){
  14253. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14254. return $core.withContext(function($ctx2) {
  14255. //>>excludeEnd("ctx");
  14256. return $recv(anotherBlock)._value_(self);
  14257. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14258. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  14259. //>>excludeEnd("ctx");
  14260. }));
  14261. return $1;
  14262. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14263. }, function($ctx1) {$ctx1.fill(self,"ifEmpty:ifNotEmpty:",{aBlock:aBlock,anotherBlock:anotherBlock},$globals.Collection)});
  14264. //>>excludeEnd("ctx");
  14265. },
  14266. //>>excludeStart("ide", pragmas.excludeIdeData);
  14267. args: ["aBlock", "anotherBlock"],
  14268. source: "ifEmpty: aBlock ifNotEmpty: anotherBlock\x0a\x09^ self isEmpty\x0a\x09\x09ifTrue: aBlock\x0a\x09\x09ifFalse: [ anotherBlock value: self ]",
  14269. referencedClasses: [],
  14270. //>>excludeEnd("ide");
  14271. messageSends: ["ifTrue:ifFalse:", "isEmpty", "value:"]
  14272. }),
  14273. $globals.Collection);
  14274. $core.addMethod(
  14275. $core.method({
  14276. selector: "ifNotEmpty:",
  14277. protocol: 'testing',
  14278. fn: function (aBlock){
  14279. var self=this;
  14280. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14281. return $core.withContext(function($ctx1) {
  14282. //>>excludeEnd("ctx");
  14283. var $2,$1;
  14284. $2=self._notEmpty();
  14285. if($core.assert($2)){
  14286. $1=$recv(aBlock)._value_(self);
  14287. } else {
  14288. $1=self;
  14289. };
  14290. return $1;
  14291. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14292. }, function($ctx1) {$ctx1.fill(self,"ifNotEmpty:",{aBlock:aBlock},$globals.Collection)});
  14293. //>>excludeEnd("ctx");
  14294. },
  14295. //>>excludeStart("ide", pragmas.excludeIdeData);
  14296. args: ["aBlock"],
  14297. source: "ifNotEmpty: aBlock\x0a\x09^ self notEmpty\x0a\x09\x09ifTrue: [ aBlock value: self ]\x0a\x09\x09ifFalse: [ self ]",
  14298. referencedClasses: [],
  14299. //>>excludeEnd("ide");
  14300. messageSends: ["ifTrue:ifFalse:", "notEmpty", "value:"]
  14301. }),
  14302. $globals.Collection);
  14303. $core.addMethod(
  14304. $core.method({
  14305. selector: "ifNotEmpty:ifEmpty:",
  14306. protocol: 'testing',
  14307. fn: function (aBlock,anotherBlock){
  14308. var self=this;
  14309. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14310. return $core.withContext(function($ctx1) {
  14311. //>>excludeEnd("ctx");
  14312. var $2,$1;
  14313. $2=self._notEmpty();
  14314. $1=$recv($2)._ifTrue_ifFalse_((function(){
  14315. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14316. return $core.withContext(function($ctx2) {
  14317. //>>excludeEnd("ctx");
  14318. return $recv(aBlock)._value_(self);
  14319. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14320. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  14321. //>>excludeEnd("ctx");
  14322. }),anotherBlock);
  14323. return $1;
  14324. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14325. }, function($ctx1) {$ctx1.fill(self,"ifNotEmpty:ifEmpty:",{aBlock:aBlock,anotherBlock:anotherBlock},$globals.Collection)});
  14326. //>>excludeEnd("ctx");
  14327. },
  14328. //>>excludeStart("ide", pragmas.excludeIdeData);
  14329. args: ["aBlock", "anotherBlock"],
  14330. source: "ifNotEmpty: aBlock ifEmpty: anotherBlock\x0a\x09^ self notEmpty\x0a\x09\x09ifTrue: [ aBlock value: self ]\x0a\x09\x09ifFalse: anotherBlock",
  14331. referencedClasses: [],
  14332. //>>excludeEnd("ide");
  14333. messageSends: ["ifTrue:ifFalse:", "notEmpty", "value:"]
  14334. }),
  14335. $globals.Collection);
  14336. $core.addMethod(
  14337. $core.method({
  14338. selector: "includes:",
  14339. protocol: 'testing',
  14340. fn: function (anObject){
  14341. var self=this;
  14342. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14343. return $core.withContext(function($ctx1) {
  14344. //>>excludeEnd("ctx");
  14345. var $1;
  14346. $1=self._anySatisfy_((function(each){
  14347. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14348. return $core.withContext(function($ctx2) {
  14349. //>>excludeEnd("ctx");
  14350. return $recv(each).__eq(anObject);
  14351. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14352. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  14353. //>>excludeEnd("ctx");
  14354. }));
  14355. return $1;
  14356. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14357. }, function($ctx1) {$ctx1.fill(self,"includes:",{anObject:anObject},$globals.Collection)});
  14358. //>>excludeEnd("ctx");
  14359. },
  14360. //>>excludeStart("ide", pragmas.excludeIdeData);
  14361. args: ["anObject"],
  14362. source: "includes: anObject\x0a\x09^ self anySatisfy: [ :each | each = anObject ]",
  14363. referencedClasses: [],
  14364. //>>excludeEnd("ide");
  14365. messageSends: ["anySatisfy:", "="]
  14366. }),
  14367. $globals.Collection);
  14368. $core.addMethod(
  14369. $core.method({
  14370. selector: "inject:into:",
  14371. protocol: 'enumerating',
  14372. fn: function (anObject,aBlock){
  14373. var self=this;
  14374. var result;
  14375. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14376. return $core.withContext(function($ctx1) {
  14377. //>>excludeEnd("ctx");
  14378. var $1;
  14379. result=anObject;
  14380. self._do_((function(each){
  14381. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14382. return $core.withContext(function($ctx2) {
  14383. //>>excludeEnd("ctx");
  14384. result=$recv(aBlock)._value_value_(result,each);
  14385. return result;
  14386. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14387. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  14388. //>>excludeEnd("ctx");
  14389. }));
  14390. $1=result;
  14391. return $1;
  14392. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14393. }, function($ctx1) {$ctx1.fill(self,"inject:into:",{anObject:anObject,aBlock:aBlock,result:result},$globals.Collection)});
  14394. //>>excludeEnd("ctx");
  14395. },
  14396. //>>excludeStart("ide", pragmas.excludeIdeData);
  14397. args: ["anObject", "aBlock"],
  14398. 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",
  14399. referencedClasses: [],
  14400. //>>excludeEnd("ide");
  14401. messageSends: ["do:", "value:value:"]
  14402. }),
  14403. $globals.Collection);
  14404. $core.addMethod(
  14405. $core.method({
  14406. selector: "intersection:",
  14407. protocol: 'enumerating',
  14408. fn: function (aCollection){
  14409. var self=this;
  14410. var set,outputSet;
  14411. function $Set(){return $globals.Set||(typeof Set=="undefined"?nil:Set)}
  14412. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14413. return $core.withContext(function($ctx1) {
  14414. //>>excludeEnd("ctx");
  14415. var $2,$1,$3;
  14416. set=self._asSet();
  14417. outputSet=$recv($Set())._new();
  14418. $recv(aCollection)._do_((function(each){
  14419. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14420. return $core.withContext(function($ctx2) {
  14421. //>>excludeEnd("ctx");
  14422. $2=$recv(set)._includes_(each);
  14423. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14424. $ctx2.sendIdx["includes:"]=1;
  14425. //>>excludeEnd("ctx");
  14426. $1=$recv($2)._and_((function(){
  14427. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14428. return $core.withContext(function($ctx3) {
  14429. //>>excludeEnd("ctx");
  14430. return $recv($recv(outputSet)._includes_(each))._not();
  14431. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14432. }, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)});
  14433. //>>excludeEnd("ctx");
  14434. }));
  14435. if($core.assert($1)){
  14436. return $recv(outputSet)._add_(each);
  14437. };
  14438. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14439. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  14440. //>>excludeEnd("ctx");
  14441. }));
  14442. $3=$recv(self._class())._withAll_($recv(outputSet)._asArray());
  14443. return $3;
  14444. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14445. }, function($ctx1) {$ctx1.fill(self,"intersection:",{aCollection:aCollection,set:set,outputSet:outputSet},$globals.Collection)});
  14446. //>>excludeEnd("ctx");
  14447. },
  14448. //>>excludeStart("ide", pragmas.excludeIdeData);
  14449. args: ["aCollection"],
  14450. 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",
  14451. referencedClasses: ["Set"],
  14452. //>>excludeEnd("ide");
  14453. messageSends: ["asSet", "new", "do:", "ifTrue:", "and:", "includes:", "not", "add:", "withAll:", "class", "asArray"]
  14454. }),
  14455. $globals.Collection);
  14456. $core.addMethod(
  14457. $core.method({
  14458. selector: "isEmpty",
  14459. protocol: 'testing',
  14460. fn: function (){
  14461. var self=this;
  14462. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14463. return $core.withContext(function($ctx1) {
  14464. //>>excludeEnd("ctx");
  14465. var $1;
  14466. $1=$recv(self._size()).__eq((0));
  14467. return $1;
  14468. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14469. }, function($ctx1) {$ctx1.fill(self,"isEmpty",{},$globals.Collection)});
  14470. //>>excludeEnd("ctx");
  14471. },
  14472. //>>excludeStart("ide", pragmas.excludeIdeData);
  14473. args: [],
  14474. source: "isEmpty\x0a\x09^ self size = 0",
  14475. referencedClasses: [],
  14476. //>>excludeEnd("ide");
  14477. messageSends: ["=", "size"]
  14478. }),
  14479. $globals.Collection);
  14480. $core.addMethod(
  14481. $core.method({
  14482. selector: "noneSatisfy:",
  14483. protocol: 'enumerating',
  14484. fn: function (aBlock){
  14485. var self=this;
  14486. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14487. return $core.withContext(function($ctx1) {
  14488. //>>excludeEnd("ctx");
  14489. var $1;
  14490. var $early={};
  14491. try {
  14492. self._do_((function(item){
  14493. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14494. return $core.withContext(function($ctx2) {
  14495. //>>excludeEnd("ctx");
  14496. $1=$recv(aBlock)._value_(item);
  14497. if($core.assert($1)){
  14498. throw $early=[false];
  14499. };
  14500. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14501. }, function($ctx2) {$ctx2.fillBlock({item:item},$ctx1,1)});
  14502. //>>excludeEnd("ctx");
  14503. }));
  14504. return true;
  14505. }
  14506. catch(e) {if(e===$early)return e[0]; throw e}
  14507. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14508. }, function($ctx1) {$ctx1.fill(self,"noneSatisfy:",{aBlock:aBlock},$globals.Collection)});
  14509. //>>excludeEnd("ctx");
  14510. },
  14511. //>>excludeStart("ide", pragmas.excludeIdeData);
  14512. args: ["aBlock"],
  14513. 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",
  14514. referencedClasses: [],
  14515. //>>excludeEnd("ide");
  14516. messageSends: ["do:", "ifTrue:", "value:"]
  14517. }),
  14518. $globals.Collection);
  14519. $core.addMethod(
  14520. $core.method({
  14521. selector: "notEmpty",
  14522. protocol: 'testing',
  14523. fn: function (){
  14524. var self=this;
  14525. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14526. return $core.withContext(function($ctx1) {
  14527. //>>excludeEnd("ctx");
  14528. var $1;
  14529. $1=$recv(self._isEmpty())._not();
  14530. return $1;
  14531. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14532. }, function($ctx1) {$ctx1.fill(self,"notEmpty",{},$globals.Collection)});
  14533. //>>excludeEnd("ctx");
  14534. },
  14535. //>>excludeStart("ide", pragmas.excludeIdeData);
  14536. args: [],
  14537. source: "notEmpty\x0a\x09^ self isEmpty not",
  14538. referencedClasses: [],
  14539. //>>excludeEnd("ide");
  14540. messageSends: ["not", "isEmpty"]
  14541. }),
  14542. $globals.Collection);
  14543. $core.addMethod(
  14544. $core.method({
  14545. selector: "occurrencesOf:",
  14546. protocol: 'accessing',
  14547. fn: function (anObject){
  14548. var self=this;
  14549. var tally;
  14550. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14551. return $core.withContext(function($ctx1) {
  14552. //>>excludeEnd("ctx");
  14553. var $1,$2;
  14554. tally=(0);
  14555. self._do_((function(each){
  14556. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14557. return $core.withContext(function($ctx2) {
  14558. //>>excludeEnd("ctx");
  14559. $1=$recv(anObject).__eq(each);
  14560. if($core.assert($1)){
  14561. tally=$recv(tally).__plus((1));
  14562. return tally;
  14563. };
  14564. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14565. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  14566. //>>excludeEnd("ctx");
  14567. }));
  14568. $2=tally;
  14569. return $2;
  14570. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14571. }, function($ctx1) {$ctx1.fill(self,"occurrencesOf:",{anObject:anObject,tally:tally},$globals.Collection)});
  14572. //>>excludeEnd("ctx");
  14573. },
  14574. //>>excludeStart("ide", pragmas.excludeIdeData);
  14575. args: ["anObject"],
  14576. 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",
  14577. referencedClasses: [],
  14578. //>>excludeEnd("ide");
  14579. messageSends: ["do:", "ifTrue:", "=", "+"]
  14580. }),
  14581. $globals.Collection);
  14582. $core.addMethod(
  14583. $core.method({
  14584. selector: "putOn:",
  14585. protocol: 'streaming',
  14586. fn: function (aStream){
  14587. var self=this;
  14588. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14589. return $core.withContext(function($ctx1) {
  14590. //>>excludeEnd("ctx");
  14591. self._do_((function(each){
  14592. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14593. return $core.withContext(function($ctx2) {
  14594. //>>excludeEnd("ctx");
  14595. return $recv(each)._putOn_(aStream);
  14596. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14597. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  14598. //>>excludeEnd("ctx");
  14599. }));
  14600. return self;
  14601. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14602. }, function($ctx1) {$ctx1.fill(self,"putOn:",{aStream:aStream},$globals.Collection)});
  14603. //>>excludeEnd("ctx");
  14604. },
  14605. //>>excludeStart("ide", pragmas.excludeIdeData);
  14606. args: ["aStream"],
  14607. source: "putOn: aStream\x0a\x09self do: [ :each | each putOn: aStream ]",
  14608. referencedClasses: [],
  14609. //>>excludeEnd("ide");
  14610. messageSends: ["do:", "putOn:"]
  14611. }),
  14612. $globals.Collection);
  14613. $core.addMethod(
  14614. $core.method({
  14615. selector: "reject:",
  14616. protocol: 'enumerating',
  14617. fn: function (aBlock){
  14618. var self=this;
  14619. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14620. return $core.withContext(function($ctx1) {
  14621. //>>excludeEnd("ctx");
  14622. var $1;
  14623. $1=self._select_((function(each){
  14624. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14625. return $core.withContext(function($ctx2) {
  14626. //>>excludeEnd("ctx");
  14627. return $recv($recv(aBlock)._value_(each)).__eq(false);
  14628. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14629. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  14630. //>>excludeEnd("ctx");
  14631. }));
  14632. return $1;
  14633. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14634. }, function($ctx1) {$ctx1.fill(self,"reject:",{aBlock:aBlock},$globals.Collection)});
  14635. //>>excludeEnd("ctx");
  14636. },
  14637. //>>excludeStart("ide", pragmas.excludeIdeData);
  14638. args: ["aBlock"],
  14639. source: "reject: aBlock\x0a\x09^ self select: [ :each | (aBlock value: each) = false ]",
  14640. referencedClasses: [],
  14641. //>>excludeEnd("ide");
  14642. messageSends: ["select:", "=", "value:"]
  14643. }),
  14644. $globals.Collection);
  14645. $core.addMethod(
  14646. $core.method({
  14647. selector: "remove:",
  14648. protocol: 'adding/removing',
  14649. fn: function (anObject){
  14650. var self=this;
  14651. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14652. return $core.withContext(function($ctx1) {
  14653. //>>excludeEnd("ctx");
  14654. var $1;
  14655. $1=self._remove_ifAbsent_(anObject,(function(){
  14656. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14657. return $core.withContext(function($ctx2) {
  14658. //>>excludeEnd("ctx");
  14659. return self._errorNotFound();
  14660. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14661. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  14662. //>>excludeEnd("ctx");
  14663. }));
  14664. return $1;
  14665. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14666. }, function($ctx1) {$ctx1.fill(self,"remove:",{anObject:anObject},$globals.Collection)});
  14667. //>>excludeEnd("ctx");
  14668. },
  14669. //>>excludeStart("ide", pragmas.excludeIdeData);
  14670. args: ["anObject"],
  14671. source: "remove: anObject\x0a\x09^ self remove: anObject ifAbsent: [ self errorNotFound ]",
  14672. referencedClasses: [],
  14673. //>>excludeEnd("ide");
  14674. messageSends: ["remove:ifAbsent:", "errorNotFound"]
  14675. }),
  14676. $globals.Collection);
  14677. $core.addMethod(
  14678. $core.method({
  14679. selector: "remove:ifAbsent:",
  14680. protocol: 'adding/removing',
  14681. fn: function (anObject,aBlock){
  14682. var self=this;
  14683. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14684. return $core.withContext(function($ctx1) {
  14685. //>>excludeEnd("ctx");
  14686. self._subclassResponsibility();
  14687. return self;
  14688. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14689. }, function($ctx1) {$ctx1.fill(self,"remove:ifAbsent:",{anObject:anObject,aBlock:aBlock},$globals.Collection)});
  14690. //>>excludeEnd("ctx");
  14691. },
  14692. //>>excludeStart("ide", pragmas.excludeIdeData);
  14693. args: ["anObject", "aBlock"],
  14694. source: "remove: anObject ifAbsent: aBlock\x0a\x09self subclassResponsibility",
  14695. referencedClasses: [],
  14696. //>>excludeEnd("ide");
  14697. messageSends: ["subclassResponsibility"]
  14698. }),
  14699. $globals.Collection);
  14700. $core.addMethod(
  14701. $core.method({
  14702. selector: "removeAll",
  14703. protocol: 'adding/removing',
  14704. fn: function (){
  14705. var self=this;
  14706. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14707. return $core.withContext(function($ctx1) {
  14708. //>>excludeEnd("ctx");
  14709. self._subclassResponsibility();
  14710. return self;
  14711. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14712. }, function($ctx1) {$ctx1.fill(self,"removeAll",{},$globals.Collection)});
  14713. //>>excludeEnd("ctx");
  14714. },
  14715. //>>excludeStart("ide", pragmas.excludeIdeData);
  14716. args: [],
  14717. source: "removeAll\x0a\x09self subclassResponsibility",
  14718. referencedClasses: [],
  14719. //>>excludeEnd("ide");
  14720. messageSends: ["subclassResponsibility"]
  14721. }),
  14722. $globals.Collection);
  14723. $core.addMethod(
  14724. $core.method({
  14725. selector: "select:",
  14726. protocol: 'enumerating',
  14727. fn: function (aBlock){
  14728. var self=this;
  14729. var stream;
  14730. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14731. return $core.withContext(function($ctx1) {
  14732. //>>excludeEnd("ctx");
  14733. var $1,$2;
  14734. stream=$recv($recv(self._class())._new())._writeStream();
  14735. self._do_((function(each){
  14736. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14737. return $core.withContext(function($ctx2) {
  14738. //>>excludeEnd("ctx");
  14739. $1=$recv(aBlock)._value_(each);
  14740. if($core.assert($1)){
  14741. return $recv(stream)._nextPut_(each);
  14742. };
  14743. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14744. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  14745. //>>excludeEnd("ctx");
  14746. }));
  14747. $2=$recv(stream)._contents();
  14748. return $2;
  14749. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14750. }, function($ctx1) {$ctx1.fill(self,"select:",{aBlock:aBlock,stream:stream},$globals.Collection)});
  14751. //>>excludeEnd("ctx");
  14752. },
  14753. //>>excludeStart("ide", pragmas.excludeIdeData);
  14754. args: ["aBlock"],
  14755. 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",
  14756. referencedClasses: [],
  14757. //>>excludeEnd("ide");
  14758. messageSends: ["writeStream", "new", "class", "do:", "ifTrue:", "value:", "nextPut:", "contents"]
  14759. }),
  14760. $globals.Collection);
  14761. $core.addMethod(
  14762. $core.method({
  14763. selector: "select:thenCollect:",
  14764. protocol: 'enumerating',
  14765. fn: function (selectBlock,collectBlock){
  14766. var self=this;
  14767. var stream;
  14768. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14769. return $core.withContext(function($ctx1) {
  14770. //>>excludeEnd("ctx");
  14771. var $1,$2;
  14772. stream=$recv($recv(self._class())._new())._writeStream();
  14773. self._do_((function(each){
  14774. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14775. return $core.withContext(function($ctx2) {
  14776. //>>excludeEnd("ctx");
  14777. $1=$recv(selectBlock)._value_(each);
  14778. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14779. $ctx2.sendIdx["value:"]=1;
  14780. //>>excludeEnd("ctx");
  14781. if($core.assert($1)){
  14782. return $recv(stream)._nextPut_($recv(collectBlock)._value_(each));
  14783. };
  14784. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14785. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  14786. //>>excludeEnd("ctx");
  14787. }));
  14788. $2=$recv(stream)._contents();
  14789. return $2;
  14790. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14791. }, function($ctx1) {$ctx1.fill(self,"select:thenCollect:",{selectBlock:selectBlock,collectBlock:collectBlock,stream:stream},$globals.Collection)});
  14792. //>>excludeEnd("ctx");
  14793. },
  14794. //>>excludeStart("ide", pragmas.excludeIdeData);
  14795. args: ["selectBlock", "collectBlock"],
  14796. 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",
  14797. referencedClasses: [],
  14798. //>>excludeEnd("ide");
  14799. messageSends: ["writeStream", "new", "class", "do:", "ifTrue:", "value:", "nextPut:", "contents"]
  14800. }),
  14801. $globals.Collection);
  14802. $core.addMethod(
  14803. $core.method({
  14804. selector: "size",
  14805. protocol: 'accessing',
  14806. fn: function (){
  14807. var self=this;
  14808. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14809. return $core.withContext(function($ctx1) {
  14810. //>>excludeEnd("ctx");
  14811. self._subclassResponsibility();
  14812. return self;
  14813. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14814. }, function($ctx1) {$ctx1.fill(self,"size",{},$globals.Collection)});
  14815. //>>excludeEnd("ctx");
  14816. },
  14817. //>>excludeStart("ide", pragmas.excludeIdeData);
  14818. args: [],
  14819. source: "size\x0a\x09self subclassResponsibility",
  14820. referencedClasses: [],
  14821. //>>excludeEnd("ide");
  14822. messageSends: ["subclassResponsibility"]
  14823. }),
  14824. $globals.Collection);
  14825. $core.addMethod(
  14826. $core.method({
  14827. selector: "heliosClass",
  14828. protocol: 'helios',
  14829. fn: function (){
  14830. var self=this;
  14831. return "collection";
  14832. },
  14833. //>>excludeStart("ide", pragmas.excludeIdeData);
  14834. args: [],
  14835. source: "heliosClass\x0a\x09^ 'collection'",
  14836. referencedClasses: [],
  14837. //>>excludeEnd("ide");
  14838. messageSends: []
  14839. }),
  14840. $globals.Collection.klass);
  14841. $core.addMethod(
  14842. $core.method({
  14843. selector: "new:",
  14844. protocol: 'instance creation',
  14845. fn: function (anInteger){
  14846. var self=this;
  14847. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14848. return $core.withContext(function($ctx1) {
  14849. //>>excludeEnd("ctx");
  14850. var $1;
  14851. $1=self._new();
  14852. return $1;
  14853. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14854. }, function($ctx1) {$ctx1.fill(self,"new:",{anInteger:anInteger},$globals.Collection.klass)});
  14855. //>>excludeEnd("ctx");
  14856. },
  14857. //>>excludeStart("ide", pragmas.excludeIdeData);
  14858. args: ["anInteger"],
  14859. source: "new: anInteger\x0a\x09^ self new",
  14860. referencedClasses: [],
  14861. //>>excludeEnd("ide");
  14862. messageSends: ["new"]
  14863. }),
  14864. $globals.Collection.klass);
  14865. $core.addMethod(
  14866. $core.method({
  14867. selector: "with:",
  14868. protocol: 'instance creation',
  14869. fn: function (anObject){
  14870. var self=this;
  14871. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14872. return $core.withContext(function($ctx1) {
  14873. //>>excludeEnd("ctx");
  14874. var $2,$3,$1;
  14875. $2=self._new();
  14876. $recv($2)._add_(anObject);
  14877. $3=$recv($2)._yourself();
  14878. $1=$3;
  14879. return $1;
  14880. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14881. }, function($ctx1) {$ctx1.fill(self,"with:",{anObject:anObject},$globals.Collection.klass)});
  14882. //>>excludeEnd("ctx");
  14883. },
  14884. //>>excludeStart("ide", pragmas.excludeIdeData);
  14885. args: ["anObject"],
  14886. source: "with: anObject\x0a\x09\x09^ self new\x0a\x09\x09add: anObject;\x0a\x09\x09yourself",
  14887. referencedClasses: [],
  14888. //>>excludeEnd("ide");
  14889. messageSends: ["add:", "new", "yourself"]
  14890. }),
  14891. $globals.Collection.klass);
  14892. $core.addMethod(
  14893. $core.method({
  14894. selector: "with:with:",
  14895. protocol: 'instance creation',
  14896. fn: function (anObject,anotherObject){
  14897. var self=this;
  14898. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14899. return $core.withContext(function($ctx1) {
  14900. //>>excludeEnd("ctx");
  14901. var $2,$3,$1;
  14902. $2=self._new();
  14903. $recv($2)._add_(anObject);
  14904. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14905. $ctx1.sendIdx["add:"]=1;
  14906. //>>excludeEnd("ctx");
  14907. $recv($2)._add_(anotherObject);
  14908. $3=$recv($2)._yourself();
  14909. $1=$3;
  14910. return $1;
  14911. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14912. }, function($ctx1) {$ctx1.fill(self,"with:with:",{anObject:anObject,anotherObject:anotherObject},$globals.Collection.klass)});
  14913. //>>excludeEnd("ctx");
  14914. },
  14915. //>>excludeStart("ide", pragmas.excludeIdeData);
  14916. args: ["anObject", "anotherObject"],
  14917. source: "with: anObject with: anotherObject\x0a\x09\x09^ self new\x0a\x09\x09add: anObject;\x0a\x09\x09add: anotherObject;\x0a\x09\x09yourself",
  14918. referencedClasses: [],
  14919. //>>excludeEnd("ide");
  14920. messageSends: ["add:", "new", "yourself"]
  14921. }),
  14922. $globals.Collection.klass);
  14923. $core.addMethod(
  14924. $core.method({
  14925. selector: "with:with:with:",
  14926. protocol: 'instance creation',
  14927. fn: function (firstObject,secondObject,thirdObject){
  14928. var self=this;
  14929. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14930. return $core.withContext(function($ctx1) {
  14931. //>>excludeEnd("ctx");
  14932. var $2,$3,$1;
  14933. $2=self._new();
  14934. $recv($2)._add_(firstObject);
  14935. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14936. $ctx1.sendIdx["add:"]=1;
  14937. //>>excludeEnd("ctx");
  14938. $recv($2)._add_(secondObject);
  14939. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14940. $ctx1.sendIdx["add:"]=2;
  14941. //>>excludeEnd("ctx");
  14942. $recv($2)._add_(thirdObject);
  14943. $3=$recv($2)._yourself();
  14944. $1=$3;
  14945. return $1;
  14946. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14947. }, function($ctx1) {$ctx1.fill(self,"with:with:with:",{firstObject:firstObject,secondObject:secondObject,thirdObject:thirdObject},$globals.Collection.klass)});
  14948. //>>excludeEnd("ctx");
  14949. },
  14950. //>>excludeStart("ide", pragmas.excludeIdeData);
  14951. args: ["firstObject", "secondObject", "thirdObject"],
  14952. 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",
  14953. referencedClasses: [],
  14954. //>>excludeEnd("ide");
  14955. messageSends: ["add:", "new", "yourself"]
  14956. }),
  14957. $globals.Collection.klass);
  14958. $core.addMethod(
  14959. $core.method({
  14960. selector: "withAll:",
  14961. protocol: 'instance creation',
  14962. fn: function (aCollection){
  14963. var self=this;
  14964. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14965. return $core.withContext(function($ctx1) {
  14966. //>>excludeEnd("ctx");
  14967. var $2,$3,$1;
  14968. $2=self._new();
  14969. $recv($2)._addAll_(aCollection);
  14970. $3=$recv($2)._yourself();
  14971. $1=$3;
  14972. return $1;
  14973. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14974. }, function($ctx1) {$ctx1.fill(self,"withAll:",{aCollection:aCollection},$globals.Collection.klass)});
  14975. //>>excludeEnd("ctx");
  14976. },
  14977. //>>excludeStart("ide", pragmas.excludeIdeData);
  14978. args: ["aCollection"],
  14979. source: "withAll: aCollection\x0a\x09\x09^ self new\x0a\x09\x09addAll: aCollection;\x0a\x09\x09yourself",
  14980. referencedClasses: [],
  14981. //>>excludeEnd("ide");
  14982. messageSends: ["addAll:", "new", "yourself"]
  14983. }),
  14984. $globals.Collection.klass);
  14985. $core.addClass('IndexableCollection', $globals.Collection, [], 'Kernel-Collections');
  14986. //>>excludeStart("ide", pragmas.excludeIdeData);
  14987. $globals.IndexableCollection.comment="I am a key-value store collection, that is,\x0aI store values under indexes.\x0a\x0aAs a rule of thumb, if a collection has `#at:` and `#at:put:`,\x0ait is an IndexableCollection.";
  14988. //>>excludeEnd("ide");
  14989. $core.addMethod(
  14990. $core.method({
  14991. selector: "at:",
  14992. protocol: 'accessing',
  14993. fn: function (anIndex){
  14994. var self=this;
  14995. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  14996. return $core.withContext(function($ctx1) {
  14997. //>>excludeEnd("ctx");
  14998. var $1;
  14999. $1=self._at_ifAbsent_(anIndex,(function(){
  15000. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15001. return $core.withContext(function($ctx2) {
  15002. //>>excludeEnd("ctx");
  15003. return self._errorNotFound();
  15004. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15005. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  15006. //>>excludeEnd("ctx");
  15007. }));
  15008. return $1;
  15009. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15010. }, function($ctx1) {$ctx1.fill(self,"at:",{anIndex:anIndex},$globals.IndexableCollection)});
  15011. //>>excludeEnd("ctx");
  15012. },
  15013. //>>excludeStart("ide", pragmas.excludeIdeData);
  15014. args: ["anIndex"],
  15015. 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 ]",
  15016. referencedClasses: [],
  15017. //>>excludeEnd("ide");
  15018. messageSends: ["at:ifAbsent:", "errorNotFound"]
  15019. }),
  15020. $globals.IndexableCollection);
  15021. $core.addMethod(
  15022. $core.method({
  15023. selector: "at:ifAbsent:",
  15024. protocol: 'accessing',
  15025. fn: function (anIndex,aBlock){
  15026. var self=this;
  15027. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15028. return $core.withContext(function($ctx1) {
  15029. //>>excludeEnd("ctx");
  15030. self._subclassResponsibility();
  15031. return self;
  15032. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15033. }, function($ctx1) {$ctx1.fill(self,"at:ifAbsent:",{anIndex:anIndex,aBlock:aBlock},$globals.IndexableCollection)});
  15034. //>>excludeEnd("ctx");
  15035. },
  15036. //>>excludeStart("ide", pragmas.excludeIdeData);
  15037. args: ["anIndex", "aBlock"],
  15038. 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",
  15039. referencedClasses: [],
  15040. //>>excludeEnd("ide");
  15041. messageSends: ["subclassResponsibility"]
  15042. }),
  15043. $globals.IndexableCollection);
  15044. $core.addMethod(
  15045. $core.method({
  15046. selector: "at:ifAbsentPut:",
  15047. protocol: 'accessing',
  15048. fn: function (aKey,aBlock){
  15049. var self=this;
  15050. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15051. return $core.withContext(function($ctx1) {
  15052. //>>excludeEnd("ctx");
  15053. var $1;
  15054. $1=self._at_ifAbsent_(aKey,(function(){
  15055. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15056. return $core.withContext(function($ctx2) {
  15057. //>>excludeEnd("ctx");
  15058. return self._at_put_(aKey,$recv(aBlock)._value());
  15059. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15060. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  15061. //>>excludeEnd("ctx");
  15062. }));
  15063. return $1;
  15064. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15065. }, function($ctx1) {$ctx1.fill(self,"at:ifAbsentPut:",{aKey:aKey,aBlock:aBlock},$globals.IndexableCollection)});
  15066. //>>excludeEnd("ctx");
  15067. },
  15068. //>>excludeStart("ide", pragmas.excludeIdeData);
  15069. args: ["aKey", "aBlock"],
  15070. source: "at: aKey ifAbsentPut: aBlock\x0a\x09^ self at: aKey ifAbsent: [\x0a\x09\x09self at: aKey put: aBlock value ]",
  15071. referencedClasses: [],
  15072. //>>excludeEnd("ide");
  15073. messageSends: ["at:ifAbsent:", "at:put:", "value"]
  15074. }),
  15075. $globals.IndexableCollection);
  15076. $core.addMethod(
  15077. $core.method({
  15078. selector: "at:ifPresent:",
  15079. protocol: 'accessing',
  15080. fn: function (anIndex,aBlock){
  15081. var self=this;
  15082. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15083. return $core.withContext(function($ctx1) {
  15084. //>>excludeEnd("ctx");
  15085. var $1;
  15086. $1=self._at_ifPresent_ifAbsent_(anIndex,aBlock,(function(){
  15087. return nil;
  15088. }));
  15089. return $1;
  15090. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15091. }, function($ctx1) {$ctx1.fill(self,"at:ifPresent:",{anIndex:anIndex,aBlock:aBlock},$globals.IndexableCollection)});
  15092. //>>excludeEnd("ctx");
  15093. },
  15094. //>>excludeStart("ide", pragmas.excludeIdeData);
  15095. args: ["anIndex", "aBlock"],
  15096. 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 ]",
  15097. referencedClasses: [],
  15098. //>>excludeEnd("ide");
  15099. messageSends: ["at:ifPresent:ifAbsent:"]
  15100. }),
  15101. $globals.IndexableCollection);
  15102. $core.addMethod(
  15103. $core.method({
  15104. selector: "at:ifPresent:ifAbsent:",
  15105. protocol: 'accessing',
  15106. fn: function (anIndex,aBlock,anotherBlock){
  15107. var self=this;
  15108. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15109. return $core.withContext(function($ctx1) {
  15110. //>>excludeEnd("ctx");
  15111. self._subclassResponsibility();
  15112. return self;
  15113. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15114. }, function($ctx1) {$ctx1.fill(self,"at:ifPresent:ifAbsent:",{anIndex:anIndex,aBlock:aBlock,anotherBlock:anotherBlock},$globals.IndexableCollection)});
  15115. //>>excludeEnd("ctx");
  15116. },
  15117. //>>excludeStart("ide", pragmas.excludeIdeData);
  15118. args: ["anIndex", "aBlock", "anotherBlock"],
  15119. 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",
  15120. referencedClasses: [],
  15121. //>>excludeEnd("ide");
  15122. messageSends: ["subclassResponsibility"]
  15123. }),
  15124. $globals.IndexableCollection);
  15125. $core.addMethod(
  15126. $core.method({
  15127. selector: "at:put:",
  15128. protocol: 'accessing',
  15129. fn: function (anIndex,anObject){
  15130. var self=this;
  15131. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15132. return $core.withContext(function($ctx1) {
  15133. //>>excludeEnd("ctx");
  15134. self._subclassResponsibility();
  15135. return self;
  15136. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15137. }, function($ctx1) {$ctx1.fill(self,"at:put:",{anIndex:anIndex,anObject:anObject},$globals.IndexableCollection)});
  15138. //>>excludeEnd("ctx");
  15139. },
  15140. //>>excludeStart("ide", pragmas.excludeIdeData);
  15141. args: ["anIndex", "anObject"],
  15142. source: "at: anIndex put: anObject\x0a\x09\x22Store anObject under the given index in the receiver.\x22\x0a\x0a\x09self subclassResponsibility",
  15143. referencedClasses: [],
  15144. //>>excludeEnd("ide");
  15145. messageSends: ["subclassResponsibility"]
  15146. }),
  15147. $globals.IndexableCollection);
  15148. $core.addMethod(
  15149. $core.method({
  15150. selector: "indexOf:",
  15151. protocol: 'accessing',
  15152. fn: function (anObject){
  15153. var self=this;
  15154. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15155. return $core.withContext(function($ctx1) {
  15156. //>>excludeEnd("ctx");
  15157. var $1;
  15158. $1=self._indexOf_ifAbsent_(anObject,(function(){
  15159. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15160. return $core.withContext(function($ctx2) {
  15161. //>>excludeEnd("ctx");
  15162. return self._errorNotFound();
  15163. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15164. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  15165. //>>excludeEnd("ctx");
  15166. }));
  15167. return $1;
  15168. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15169. }, function($ctx1) {$ctx1.fill(self,"indexOf:",{anObject:anObject},$globals.IndexableCollection)});
  15170. //>>excludeEnd("ctx");
  15171. },
  15172. //>>excludeStart("ide", pragmas.excludeIdeData);
  15173. args: ["anObject"],
  15174. 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 ]",
  15175. referencedClasses: [],
  15176. //>>excludeEnd("ide");
  15177. messageSends: ["indexOf:ifAbsent:", "errorNotFound"]
  15178. }),
  15179. $globals.IndexableCollection);
  15180. $core.addMethod(
  15181. $core.method({
  15182. selector: "indexOf:ifAbsent:",
  15183. protocol: 'accessing',
  15184. fn: function (anObject,aBlock){
  15185. var self=this;
  15186. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15187. return $core.withContext(function($ctx1) {
  15188. //>>excludeEnd("ctx");
  15189. self._subclassResponsibility();
  15190. return self;
  15191. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15192. }, function($ctx1) {$ctx1.fill(self,"indexOf:ifAbsent:",{anObject:anObject,aBlock:aBlock},$globals.IndexableCollection)});
  15193. //>>excludeEnd("ctx");
  15194. },
  15195. //>>excludeStart("ide", pragmas.excludeIdeData);
  15196. args: ["anObject", "aBlock"],
  15197. 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",
  15198. referencedClasses: [],
  15199. //>>excludeEnd("ide");
  15200. messageSends: ["subclassResponsibility"]
  15201. }),
  15202. $globals.IndexableCollection);
  15203. $core.addMethod(
  15204. $core.method({
  15205. selector: "with:do:",
  15206. protocol: 'enumerating',
  15207. fn: function (anotherCollection,aBlock){
  15208. var self=this;
  15209. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15210. return $core.withContext(function($ctx1) {
  15211. //>>excludeEnd("ctx");
  15212. self._withIndexDo_((function(each,index){
  15213. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15214. return $core.withContext(function($ctx2) {
  15215. //>>excludeEnd("ctx");
  15216. return $recv(aBlock)._value_value_(each,$recv(anotherCollection)._at_(index));
  15217. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15218. }, function($ctx2) {$ctx2.fillBlock({each:each,index:index},$ctx1,1)});
  15219. //>>excludeEnd("ctx");
  15220. }));
  15221. return self;
  15222. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15223. }, function($ctx1) {$ctx1.fill(self,"with:do:",{anotherCollection:anotherCollection,aBlock:aBlock},$globals.IndexableCollection)});
  15224. //>>excludeEnd("ctx");
  15225. },
  15226. //>>excludeStart("ide", pragmas.excludeIdeData);
  15227. args: ["anotherCollection", "aBlock"],
  15228. 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) ]",
  15229. referencedClasses: [],
  15230. //>>excludeEnd("ide");
  15231. messageSends: ["withIndexDo:", "value:value:", "at:"]
  15232. }),
  15233. $globals.IndexableCollection);
  15234. $core.addMethod(
  15235. $core.method({
  15236. selector: "withIndexDo:",
  15237. protocol: 'enumerating',
  15238. fn: function (aBlock){
  15239. var self=this;
  15240. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15241. return $core.withContext(function($ctx1) {
  15242. //>>excludeEnd("ctx");
  15243. self._subclassResponsibility();
  15244. return self;
  15245. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15246. }, function($ctx1) {$ctx1.fill(self,"withIndexDo:",{aBlock:aBlock},$globals.IndexableCollection)});
  15247. //>>excludeEnd("ctx");
  15248. },
  15249. //>>excludeStart("ide", pragmas.excludeIdeData);
  15250. args: ["aBlock"],
  15251. 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",
  15252. referencedClasses: [],
  15253. //>>excludeEnd("ide");
  15254. messageSends: ["subclassResponsibility"]
  15255. }),
  15256. $globals.IndexableCollection);
  15257. $core.addClass('AssociativeCollection', $globals.IndexableCollection, [], 'Kernel-Collections');
  15258. //>>excludeStart("ide", pragmas.excludeIdeData);
  15259. $globals.AssociativeCollection.comment="I am a base class for object-indexed collections (Dictionary et.al.).";
  15260. //>>excludeEnd("ide");
  15261. $core.addMethod(
  15262. $core.method({
  15263. selector: "=",
  15264. protocol: 'comparing',
  15265. fn: function (anAssocitativeCollection){
  15266. var self=this;
  15267. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15268. return $core.withContext(function($ctx1) {
  15269. //>>excludeEnd("ctx");
  15270. var $2,$1,$4,$3,$6,$5;
  15271. $2=self._class();
  15272. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15273. $ctx1.sendIdx["class"]=1;
  15274. //>>excludeEnd("ctx");
  15275. $1=$recv($2).__eq($recv(anAssocitativeCollection)._class());
  15276. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15277. $ctx1.sendIdx["="]=1;
  15278. //>>excludeEnd("ctx");
  15279. if(!$core.assert($1)){
  15280. return false;
  15281. };
  15282. $4=self._size();
  15283. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15284. $ctx1.sendIdx["size"]=1;
  15285. //>>excludeEnd("ctx");
  15286. $3=$recv($4).__eq($recv(anAssocitativeCollection)._size());
  15287. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15288. $ctx1.sendIdx["="]=2;
  15289. //>>excludeEnd("ctx");
  15290. if(!$core.assert($3)){
  15291. return false;
  15292. };
  15293. $6=self._associations();
  15294. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15295. $ctx1.sendIdx["associations"]=1;
  15296. //>>excludeEnd("ctx");
  15297. $5=$recv($6).__eq($recv(anAssocitativeCollection)._associations());
  15298. return $5;
  15299. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15300. }, function($ctx1) {$ctx1.fill(self,"=",{anAssocitativeCollection:anAssocitativeCollection},$globals.AssociativeCollection)});
  15301. //>>excludeEnd("ctx");
  15302. },
  15303. //>>excludeStart("ide", pragmas.excludeIdeData);
  15304. args: ["anAssocitativeCollection"],
  15305. source: "= anAssocitativeCollection\x0a\x09self class = anAssocitativeCollection class ifFalse: [ ^ false ].\x0a\x09self size = anAssocitativeCollection size ifFalse: [ ^ false ].\x0a\x09^ self associations = anAssocitativeCollection associations",
  15306. referencedClasses: [],
  15307. //>>excludeEnd("ide");
  15308. messageSends: ["ifFalse:", "=", "class", "size", "associations"]
  15309. }),
  15310. $globals.AssociativeCollection);
  15311. $core.addMethod(
  15312. $core.method({
  15313. selector: "add:",
  15314. protocol: 'adding/removing',
  15315. fn: function (anAssociation){
  15316. var self=this;
  15317. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15318. return $core.withContext(function($ctx1) {
  15319. //>>excludeEnd("ctx");
  15320. self._at_put_($recv(anAssociation)._key(),$recv(anAssociation)._value());
  15321. return self;
  15322. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15323. }, function($ctx1) {$ctx1.fill(self,"add:",{anAssociation:anAssociation},$globals.AssociativeCollection)});
  15324. //>>excludeEnd("ctx");
  15325. },
  15326. //>>excludeStart("ide", pragmas.excludeIdeData);
  15327. args: ["anAssociation"],
  15328. source: "add: anAssociation\x0a\x09self at: anAssociation key put: anAssociation value",
  15329. referencedClasses: [],
  15330. //>>excludeEnd("ide");
  15331. messageSends: ["at:put:", "key", "value"]
  15332. }),
  15333. $globals.AssociativeCollection);
  15334. $core.addMethod(
  15335. $core.method({
  15336. selector: "addAll:",
  15337. protocol: 'adding/removing',
  15338. fn: function (anAssociativeCollection){
  15339. var self=this;
  15340. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15341. return $core.withContext(function($ctx1) {
  15342. //>>excludeEnd("ctx");
  15343. (
  15344. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15345. $ctx1.supercall = true,
  15346. //>>excludeEnd("ctx");
  15347. $globals.AssociativeCollection.superclass.fn.prototype._addAll_.apply($recv(self), [$recv(anAssociativeCollection)._associations()]));
  15348. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15349. $ctx1.supercall = false;
  15350. //>>excludeEnd("ctx");;
  15351. return anAssociativeCollection;
  15352. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15353. }, function($ctx1) {$ctx1.fill(self,"addAll:",{anAssociativeCollection:anAssociativeCollection},$globals.AssociativeCollection)});
  15354. //>>excludeEnd("ctx");
  15355. },
  15356. //>>excludeStart("ide", pragmas.excludeIdeData);
  15357. args: ["anAssociativeCollection"],
  15358. source: "addAll: anAssociativeCollection\x0a\x09super addAll: anAssociativeCollection associations.\x0a\x09^ anAssociativeCollection",
  15359. referencedClasses: [],
  15360. //>>excludeEnd("ide");
  15361. messageSends: ["addAll:", "associations"]
  15362. }),
  15363. $globals.AssociativeCollection);
  15364. $core.addMethod(
  15365. $core.method({
  15366. selector: "asDictionary",
  15367. protocol: 'converting',
  15368. fn: function (){
  15369. var self=this;
  15370. function $Dictionary(){return $globals.Dictionary||(typeof Dictionary=="undefined"?nil:Dictionary)}
  15371. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15372. return $core.withContext(function($ctx1) {
  15373. //>>excludeEnd("ctx");
  15374. var $1;
  15375. $1=$recv($Dictionary())._from_(self._associations());
  15376. return $1;
  15377. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15378. }, function($ctx1) {$ctx1.fill(self,"asDictionary",{},$globals.AssociativeCollection)});
  15379. //>>excludeEnd("ctx");
  15380. },
  15381. //>>excludeStart("ide", pragmas.excludeIdeData);
  15382. args: [],
  15383. source: "asDictionary\x0a\x09^ Dictionary from: self associations",
  15384. referencedClasses: ["Dictionary"],
  15385. //>>excludeEnd("ide");
  15386. messageSends: ["from:", "associations"]
  15387. }),
  15388. $globals.AssociativeCollection);
  15389. $core.addMethod(
  15390. $core.method({
  15391. selector: "asHashedCollection",
  15392. protocol: 'converting',
  15393. fn: function (){
  15394. var self=this;
  15395. function $HashedCollection(){return $globals.HashedCollection||(typeof HashedCollection=="undefined"?nil:HashedCollection)}
  15396. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15397. return $core.withContext(function($ctx1) {
  15398. //>>excludeEnd("ctx");
  15399. var $1;
  15400. $1=$recv($HashedCollection())._from_(self._associations());
  15401. return $1;
  15402. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15403. }, function($ctx1) {$ctx1.fill(self,"asHashedCollection",{},$globals.AssociativeCollection)});
  15404. //>>excludeEnd("ctx");
  15405. },
  15406. //>>excludeStart("ide", pragmas.excludeIdeData);
  15407. args: [],
  15408. source: "asHashedCollection\x0a\x09^ HashedCollection from: self associations",
  15409. referencedClasses: ["HashedCollection"],
  15410. //>>excludeEnd("ide");
  15411. messageSends: ["from:", "associations"]
  15412. }),
  15413. $globals.AssociativeCollection);
  15414. $core.addMethod(
  15415. $core.method({
  15416. selector: "asJSON",
  15417. protocol: 'converting',
  15418. fn: function (){
  15419. var self=this;
  15420. var hash;
  15421. function $HashedCollection(){return $globals.HashedCollection||(typeof HashedCollection=="undefined"?nil:HashedCollection)}
  15422. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15423. return $core.withContext(function($ctx1) {
  15424. //>>excludeEnd("ctx");
  15425. var $1;
  15426. hash=$recv($HashedCollection())._new();
  15427. self._keysAndValuesDo_((function(key,value){
  15428. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15429. return $core.withContext(function($ctx2) {
  15430. //>>excludeEnd("ctx");
  15431. return $recv(hash)._at_put_(key,$recv(value)._asJSON());
  15432. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15433. }, function($ctx2) {$ctx2.fillBlock({key:key,value:value},$ctx1,1)});
  15434. //>>excludeEnd("ctx");
  15435. }));
  15436. $1=hash;
  15437. return $1;
  15438. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15439. }, function($ctx1) {$ctx1.fill(self,"asJSON",{hash:hash},$globals.AssociativeCollection)});
  15440. //>>excludeEnd("ctx");
  15441. },
  15442. //>>excludeStart("ide", pragmas.excludeIdeData);
  15443. args: [],
  15444. source: "asJSON\x0a\x09| hash |\x0a\x09hash := HashedCollection new.\x0a\x09self keysAndValuesDo: [ :key :value |\x0a\x09\x09hash at: key put: value asJSON ].\x0a\x09^ hash",
  15445. referencedClasses: ["HashedCollection"],
  15446. //>>excludeEnd("ide");
  15447. messageSends: ["new", "keysAndValuesDo:", "at:put:", "asJSON"]
  15448. }),
  15449. $globals.AssociativeCollection);
  15450. $core.addMethod(
  15451. $core.method({
  15452. selector: "associations",
  15453. protocol: 'accessing',
  15454. fn: function (){
  15455. var self=this;
  15456. var associations;
  15457. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15458. return $core.withContext(function($ctx1) {
  15459. //>>excludeEnd("ctx");
  15460. var $1;
  15461. associations=[];
  15462. self._associationsDo_((function(each){
  15463. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15464. return $core.withContext(function($ctx2) {
  15465. //>>excludeEnd("ctx");
  15466. return $recv(associations)._add_(each);
  15467. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15468. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  15469. //>>excludeEnd("ctx");
  15470. }));
  15471. $1=associations;
  15472. return $1;
  15473. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15474. }, function($ctx1) {$ctx1.fill(self,"associations",{associations:associations},$globals.AssociativeCollection)});
  15475. //>>excludeEnd("ctx");
  15476. },
  15477. //>>excludeStart("ide", pragmas.excludeIdeData);
  15478. args: [],
  15479. source: "associations\x0a\x09| associations |\x0a\x09associations := #().\x0a\x09self associationsDo: [ :each | associations add: each ].\x0a\x09^ associations",
  15480. referencedClasses: [],
  15481. //>>excludeEnd("ide");
  15482. messageSends: ["associationsDo:", "add:"]
  15483. }),
  15484. $globals.AssociativeCollection);
  15485. $core.addMethod(
  15486. $core.method({
  15487. selector: "associationsDo:",
  15488. protocol: 'enumerating',
  15489. fn: function (aBlock){
  15490. var self=this;
  15491. function $Association(){return $globals.Association||(typeof Association=="undefined"?nil:Association)}
  15492. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15493. return $core.withContext(function($ctx1) {
  15494. //>>excludeEnd("ctx");
  15495. self._keysAndValuesDo_((function(key,value){
  15496. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15497. return $core.withContext(function($ctx2) {
  15498. //>>excludeEnd("ctx");
  15499. return $recv(aBlock)._value_($recv($Association())._key_value_(key,value));
  15500. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15501. }, function($ctx2) {$ctx2.fillBlock({key:key,value:value},$ctx1,1)});
  15502. //>>excludeEnd("ctx");
  15503. }));
  15504. return self;
  15505. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15506. }, function($ctx1) {$ctx1.fill(self,"associationsDo:",{aBlock:aBlock},$globals.AssociativeCollection)});
  15507. //>>excludeEnd("ctx");
  15508. },
  15509. //>>excludeStart("ide", pragmas.excludeIdeData);
  15510. args: ["aBlock"],
  15511. source: "associationsDo: aBlock\x0a\x09self keysAndValuesDo: [ :key :value |\x0a\x09\x09aBlock value: (Association key: key value: value) ]",
  15512. referencedClasses: ["Association"],
  15513. //>>excludeEnd("ide");
  15514. messageSends: ["keysAndValuesDo:", "value:", "key:value:"]
  15515. }),
  15516. $globals.AssociativeCollection);
  15517. $core.addMethod(
  15518. $core.method({
  15519. selector: "at:ifPresent:ifAbsent:",
  15520. protocol: 'accessing',
  15521. fn: function (aKey,aBlock,anotherBlock){
  15522. var self=this;
  15523. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15524. return $core.withContext(function($ctx1) {
  15525. //>>excludeEnd("ctx");
  15526. var $2,$1;
  15527. $2=self._includesKey_(aKey);
  15528. if($core.assert($2)){
  15529. $1=$recv(aBlock)._value_(self._at_(aKey));
  15530. } else {
  15531. $1=$recv(anotherBlock)._value();
  15532. };
  15533. return $1;
  15534. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15535. }, function($ctx1) {$ctx1.fill(self,"at:ifPresent:ifAbsent:",{aKey:aKey,aBlock:aBlock,anotherBlock:anotherBlock},$globals.AssociativeCollection)});
  15536. //>>excludeEnd("ctx");
  15537. },
  15538. //>>excludeStart("ide", pragmas.excludeIdeData);
  15539. args: ["aKey", "aBlock", "anotherBlock"],
  15540. 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 ]",
  15541. referencedClasses: [],
  15542. //>>excludeEnd("ide");
  15543. messageSends: ["ifTrue:ifFalse:", "includesKey:", "value:", "at:", "value"]
  15544. }),
  15545. $globals.AssociativeCollection);
  15546. $core.addMethod(
  15547. $core.method({
  15548. selector: "collect:",
  15549. protocol: 'enumerating',
  15550. fn: function (aBlock){
  15551. var self=this;
  15552. var newDict;
  15553. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15554. return $core.withContext(function($ctx1) {
  15555. //>>excludeEnd("ctx");
  15556. var $1;
  15557. newDict=$recv(self._class())._new();
  15558. self._keysAndValuesDo_((function(key,value){
  15559. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15560. return $core.withContext(function($ctx2) {
  15561. //>>excludeEnd("ctx");
  15562. return $recv(newDict)._at_put_(key,$recv(aBlock)._value_(value));
  15563. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15564. }, function($ctx2) {$ctx2.fillBlock({key:key,value:value},$ctx1,1)});
  15565. //>>excludeEnd("ctx");
  15566. }));
  15567. $1=newDict;
  15568. return $1;
  15569. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15570. }, function($ctx1) {$ctx1.fill(self,"collect:",{aBlock:aBlock,newDict:newDict},$globals.AssociativeCollection)});
  15571. //>>excludeEnd("ctx");
  15572. },
  15573. //>>excludeStart("ide", pragmas.excludeIdeData);
  15574. args: ["aBlock"],
  15575. 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",
  15576. referencedClasses: [],
  15577. //>>excludeEnd("ide");
  15578. messageSends: ["new", "class", "keysAndValuesDo:", "at:put:", "value:"]
  15579. }),
  15580. $globals.AssociativeCollection);
  15581. $core.addMethod(
  15582. $core.method({
  15583. selector: "deepCopy",
  15584. protocol: 'copying',
  15585. fn: function (){
  15586. var self=this;
  15587. var copy;
  15588. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15589. return $core.withContext(function($ctx1) {
  15590. //>>excludeEnd("ctx");
  15591. var $1;
  15592. copy=$recv(self._class())._new();
  15593. self._keysAndValuesDo_((function(key,value){
  15594. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15595. return $core.withContext(function($ctx2) {
  15596. //>>excludeEnd("ctx");
  15597. return $recv(copy)._at_put_(key,$recv(value)._deepCopy());
  15598. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15599. }, function($ctx2) {$ctx2.fillBlock({key:key,value:value},$ctx1,1)});
  15600. //>>excludeEnd("ctx");
  15601. }));
  15602. $1=copy;
  15603. return $1;
  15604. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15605. }, function($ctx1) {$ctx1.fill(self,"deepCopy",{copy:copy},$globals.AssociativeCollection)});
  15606. //>>excludeEnd("ctx");
  15607. },
  15608. //>>excludeStart("ide", pragmas.excludeIdeData);
  15609. args: [],
  15610. 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",
  15611. referencedClasses: [],
  15612. //>>excludeEnd("ide");
  15613. messageSends: ["new", "class", "keysAndValuesDo:", "at:put:", "deepCopy"]
  15614. }),
  15615. $globals.AssociativeCollection);
  15616. $core.addMethod(
  15617. $core.method({
  15618. selector: "detect:ifNone:",
  15619. protocol: 'enumerating',
  15620. fn: function (aBlock,anotherBlock){
  15621. var self=this;
  15622. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15623. return $core.withContext(function($ctx1) {
  15624. //>>excludeEnd("ctx");
  15625. var $1;
  15626. $1=$recv(self._values())._detect_ifNone_(aBlock,anotherBlock);
  15627. return $1;
  15628. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15629. }, function($ctx1) {$ctx1.fill(self,"detect:ifNone:",{aBlock:aBlock,anotherBlock:anotherBlock},$globals.AssociativeCollection)});
  15630. //>>excludeEnd("ctx");
  15631. },
  15632. //>>excludeStart("ide", pragmas.excludeIdeData);
  15633. args: ["aBlock", "anotherBlock"],
  15634. source: "detect: aBlock ifNone: anotherBlock\x0a\x09^ self values detect: aBlock ifNone: anotherBlock",
  15635. referencedClasses: [],
  15636. //>>excludeEnd("ide");
  15637. messageSends: ["detect:ifNone:", "values"]
  15638. }),
  15639. $globals.AssociativeCollection);
  15640. $core.addMethod(
  15641. $core.method({
  15642. selector: "do:",
  15643. protocol: 'enumerating',
  15644. fn: function (aBlock){
  15645. var self=this;
  15646. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15647. return $core.withContext(function($ctx1) {
  15648. //>>excludeEnd("ctx");
  15649. self._valuesDo_(aBlock);
  15650. return self;
  15651. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15652. }, function($ctx1) {$ctx1.fill(self,"do:",{aBlock:aBlock},$globals.AssociativeCollection)});
  15653. //>>excludeEnd("ctx");
  15654. },
  15655. //>>excludeStart("ide", pragmas.excludeIdeData);
  15656. args: ["aBlock"],
  15657. source: "do: aBlock\x0a\x09self valuesDo: aBlock",
  15658. referencedClasses: [],
  15659. //>>excludeEnd("ide");
  15660. messageSends: ["valuesDo:"]
  15661. }),
  15662. $globals.AssociativeCollection);
  15663. $core.addMethod(
  15664. $core.method({
  15665. selector: "includes:",
  15666. protocol: 'enumerating',
  15667. fn: function (anObject){
  15668. var self=this;
  15669. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15670. return $core.withContext(function($ctx1) {
  15671. //>>excludeEnd("ctx");
  15672. var $1;
  15673. $1=$recv(self._values())._includes_(anObject);
  15674. return $1;
  15675. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15676. }, function($ctx1) {$ctx1.fill(self,"includes:",{anObject:anObject},$globals.AssociativeCollection)});
  15677. //>>excludeEnd("ctx");
  15678. },
  15679. //>>excludeStart("ide", pragmas.excludeIdeData);
  15680. args: ["anObject"],
  15681. source: "includes: anObject\x0a\x09^ self values includes: anObject",
  15682. referencedClasses: [],
  15683. //>>excludeEnd("ide");
  15684. messageSends: ["includes:", "values"]
  15685. }),
  15686. $globals.AssociativeCollection);
  15687. $core.addMethod(
  15688. $core.method({
  15689. selector: "includesKey:",
  15690. protocol: 'testing',
  15691. fn: function (aKey){
  15692. var self=this;
  15693. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15694. return $core.withContext(function($ctx1) {
  15695. //>>excludeEnd("ctx");
  15696. self._subclassResponsibility();
  15697. return self;
  15698. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15699. }, function($ctx1) {$ctx1.fill(self,"includesKey:",{aKey:aKey},$globals.AssociativeCollection)});
  15700. //>>excludeEnd("ctx");
  15701. },
  15702. //>>excludeStart("ide", pragmas.excludeIdeData);
  15703. args: ["aKey"],
  15704. source: "includesKey: aKey\x0a\x09self subclassResponsibility",
  15705. referencedClasses: [],
  15706. //>>excludeEnd("ide");
  15707. messageSends: ["subclassResponsibility"]
  15708. }),
  15709. $globals.AssociativeCollection);
  15710. $core.addMethod(
  15711. $core.method({
  15712. selector: "indexOf:ifAbsent:",
  15713. protocol: 'accessing',
  15714. fn: function (anObject,aBlock){
  15715. var self=this;
  15716. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15717. return $core.withContext(function($ctx1) {
  15718. //>>excludeEnd("ctx");
  15719. var $1;
  15720. $1=$recv(self._keys())._detect_ifNone_((function(each){
  15721. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15722. return $core.withContext(function($ctx2) {
  15723. //>>excludeEnd("ctx");
  15724. return $recv(self._at_(each)).__eq(anObject);
  15725. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15726. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  15727. //>>excludeEnd("ctx");
  15728. }),aBlock);
  15729. return $1;
  15730. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15731. }, function($ctx1) {$ctx1.fill(self,"indexOf:ifAbsent:",{anObject:anObject,aBlock:aBlock},$globals.AssociativeCollection)});
  15732. //>>excludeEnd("ctx");
  15733. },
  15734. //>>excludeStart("ide", pragmas.excludeIdeData);
  15735. args: ["anObject", "aBlock"],
  15736. source: "indexOf: anObject ifAbsent: aBlock\x0a\x09^ self keys \x0a\x09\x09detect: [ :each | (self at: each) = anObject ] \x0a\x09\x09ifNone: aBlock",
  15737. referencedClasses: [],
  15738. //>>excludeEnd("ide");
  15739. messageSends: ["detect:ifNone:", "keys", "=", "at:"]
  15740. }),
  15741. $globals.AssociativeCollection);
  15742. $core.addMethod(
  15743. $core.method({
  15744. selector: "keyAtValue:",
  15745. protocol: 'accessing',
  15746. fn: function (anObject){
  15747. var self=this;
  15748. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15749. return $core.withContext(function($ctx1) {
  15750. //>>excludeEnd("ctx");
  15751. var $1;
  15752. $1=self._keyAtValue_ifAbsent_(anObject,(function(){
  15753. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15754. return $core.withContext(function($ctx2) {
  15755. //>>excludeEnd("ctx");
  15756. return self._errorNotFound();
  15757. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15758. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  15759. //>>excludeEnd("ctx");
  15760. }));
  15761. return $1;
  15762. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15763. }, function($ctx1) {$ctx1.fill(self,"keyAtValue:",{anObject:anObject},$globals.AssociativeCollection)});
  15764. //>>excludeEnd("ctx");
  15765. },
  15766. //>>excludeStart("ide", pragmas.excludeIdeData);
  15767. args: ["anObject"],
  15768. source: "keyAtValue: anObject\x0a\x09^ self keyAtValue: anObject ifAbsent: [ self errorNotFound ]",
  15769. referencedClasses: [],
  15770. //>>excludeEnd("ide");
  15771. messageSends: ["keyAtValue:ifAbsent:", "errorNotFound"]
  15772. }),
  15773. $globals.AssociativeCollection);
  15774. $core.addMethod(
  15775. $core.method({
  15776. selector: "keyAtValue:ifAbsent:",
  15777. protocol: 'accessing',
  15778. fn: function (anObject,aBlock){
  15779. var self=this;
  15780. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15781. return $core.withContext(function($ctx1) {
  15782. //>>excludeEnd("ctx");
  15783. var $1;
  15784. $1=self._indexOf_ifAbsent_(anObject,aBlock);
  15785. return $1;
  15786. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15787. }, function($ctx1) {$ctx1.fill(self,"keyAtValue:ifAbsent:",{anObject:anObject,aBlock:aBlock},$globals.AssociativeCollection)});
  15788. //>>excludeEnd("ctx");
  15789. },
  15790. //>>excludeStart("ide", pragmas.excludeIdeData);
  15791. args: ["anObject", "aBlock"],
  15792. source: "keyAtValue: anObject ifAbsent: aBlock\x0a\x09^ self indexOf: anObject ifAbsent: aBlock",
  15793. referencedClasses: [],
  15794. //>>excludeEnd("ide");
  15795. messageSends: ["indexOf:ifAbsent:"]
  15796. }),
  15797. $globals.AssociativeCollection);
  15798. $core.addMethod(
  15799. $core.method({
  15800. selector: "keys",
  15801. protocol: 'accessing',
  15802. fn: function (){
  15803. var self=this;
  15804. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15805. return $core.withContext(function($ctx1) {
  15806. //>>excludeEnd("ctx");
  15807. self._subclassResponsibility();
  15808. return self;
  15809. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15810. }, function($ctx1) {$ctx1.fill(self,"keys",{},$globals.AssociativeCollection)});
  15811. //>>excludeEnd("ctx");
  15812. },
  15813. //>>excludeStart("ide", pragmas.excludeIdeData);
  15814. args: [],
  15815. source: "keys\x0a\x09self subclassResponsibility",
  15816. referencedClasses: [],
  15817. //>>excludeEnd("ide");
  15818. messageSends: ["subclassResponsibility"]
  15819. }),
  15820. $globals.AssociativeCollection);
  15821. $core.addMethod(
  15822. $core.method({
  15823. selector: "keysAndValuesDo:",
  15824. protocol: 'enumerating',
  15825. fn: function (aBlock){
  15826. var self=this;
  15827. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15828. return $core.withContext(function($ctx1) {
  15829. //>>excludeEnd("ctx");
  15830. self._keysDo_((function(each){
  15831. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15832. return $core.withContext(function($ctx2) {
  15833. //>>excludeEnd("ctx");
  15834. return $recv(aBlock)._value_value_(each,self._at_(each));
  15835. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15836. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  15837. //>>excludeEnd("ctx");
  15838. }));
  15839. return self;
  15840. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15841. }, function($ctx1) {$ctx1.fill(self,"keysAndValuesDo:",{aBlock:aBlock},$globals.AssociativeCollection)});
  15842. //>>excludeEnd("ctx");
  15843. },
  15844. //>>excludeStart("ide", pragmas.excludeIdeData);
  15845. args: ["aBlock"],
  15846. source: "keysAndValuesDo: aBlock\x0a\x09self keysDo: [ :each |\x0a\x09\x09aBlock value: each value: (self at: each) ]",
  15847. referencedClasses: [],
  15848. //>>excludeEnd("ide");
  15849. messageSends: ["keysDo:", "value:value:", "at:"]
  15850. }),
  15851. $globals.AssociativeCollection);
  15852. $core.addMethod(
  15853. $core.method({
  15854. selector: "keysDo:",
  15855. protocol: 'enumerating',
  15856. fn: function (aBlock){
  15857. var self=this;
  15858. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15859. return $core.withContext(function($ctx1) {
  15860. //>>excludeEnd("ctx");
  15861. self._subclassResponsibility();
  15862. return self;
  15863. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15864. }, function($ctx1) {$ctx1.fill(self,"keysDo:",{aBlock:aBlock},$globals.AssociativeCollection)});
  15865. //>>excludeEnd("ctx");
  15866. },
  15867. //>>excludeStart("ide", pragmas.excludeIdeData);
  15868. args: ["aBlock"],
  15869. source: "keysDo: aBlock\x0a\x09self subclassResponsibility",
  15870. referencedClasses: [],
  15871. //>>excludeEnd("ide");
  15872. messageSends: ["subclassResponsibility"]
  15873. }),
  15874. $globals.AssociativeCollection);
  15875. $core.addMethod(
  15876. $core.method({
  15877. selector: "printOn:",
  15878. protocol: 'printing',
  15879. fn: function (aStream){
  15880. var self=this;
  15881. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15882. return $core.withContext(function($ctx1) {
  15883. //>>excludeEnd("ctx");
  15884. (
  15885. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15886. $ctx1.supercall = true,
  15887. //>>excludeEnd("ctx");
  15888. $globals.AssociativeCollection.superclass.fn.prototype._printOn_.apply($recv(self), [aStream]));
  15889. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15890. $ctx1.supercall = false;
  15891. //>>excludeEnd("ctx");;
  15892. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15893. $ctx1.sendIdx["printOn:"]=1;
  15894. //>>excludeEnd("ctx");
  15895. $recv(aStream)._nextPutAll_(" (");
  15896. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15897. $ctx1.sendIdx["nextPutAll:"]=1;
  15898. //>>excludeEnd("ctx");
  15899. $recv(self._associations())._do_separatedBy_((function(each){
  15900. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15901. return $core.withContext(function($ctx2) {
  15902. //>>excludeEnd("ctx");
  15903. return $recv(each)._printOn_(aStream);
  15904. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15905. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  15906. //>>excludeEnd("ctx");
  15907. }),(function(){
  15908. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15909. return $core.withContext(function($ctx2) {
  15910. //>>excludeEnd("ctx");
  15911. return $recv(aStream)._nextPutAll_(" , ");
  15912. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15913. $ctx2.sendIdx["nextPutAll:"]=2;
  15914. //>>excludeEnd("ctx");
  15915. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15916. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
  15917. //>>excludeEnd("ctx");
  15918. }));
  15919. $recv(aStream)._nextPutAll_(")");
  15920. return self;
  15921. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15922. }, function($ctx1) {$ctx1.fill(self,"printOn:",{aStream:aStream},$globals.AssociativeCollection)});
  15923. //>>excludeEnd("ctx");
  15924. },
  15925. //>>excludeStart("ide", pragmas.excludeIdeData);
  15926. args: ["aStream"],
  15927. 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: ')'",
  15928. referencedClasses: [],
  15929. //>>excludeEnd("ide");
  15930. messageSends: ["printOn:", "nextPutAll:", "do:separatedBy:", "associations"]
  15931. }),
  15932. $globals.AssociativeCollection);
  15933. $core.addMethod(
  15934. $core.method({
  15935. selector: "remove:ifAbsent:",
  15936. protocol: 'adding/removing',
  15937. fn: function (aKey,aBlock){
  15938. var self=this;
  15939. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15940. return $core.withContext(function($ctx1) {
  15941. //>>excludeEnd("ctx");
  15942. var $1;
  15943. $1=self._removeKey_ifAbsent_(aKey,aBlock);
  15944. return $1;
  15945. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15946. }, function($ctx1) {$ctx1.fill(self,"remove:ifAbsent:",{aKey:aKey,aBlock:aBlock},$globals.AssociativeCollection)});
  15947. //>>excludeEnd("ctx");
  15948. },
  15949. //>>excludeStart("ide", pragmas.excludeIdeData);
  15950. args: ["aKey", "aBlock"],
  15951. source: "remove: aKey ifAbsent: aBlock\x0a\x09^ self removeKey: aKey ifAbsent: aBlock",
  15952. referencedClasses: [],
  15953. //>>excludeEnd("ide");
  15954. messageSends: ["removeKey:ifAbsent:"]
  15955. }),
  15956. $globals.AssociativeCollection);
  15957. $core.addMethod(
  15958. $core.method({
  15959. selector: "removeAll",
  15960. protocol: 'adding/removing',
  15961. fn: function (){
  15962. var self=this;
  15963. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15964. return $core.withContext(function($ctx1) {
  15965. //>>excludeEnd("ctx");
  15966. var $1;
  15967. $1=$recv(self._keys())._do_((function(each){
  15968. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15969. return $core.withContext(function($ctx2) {
  15970. //>>excludeEnd("ctx");
  15971. return self._removeKey_(each);
  15972. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15973. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  15974. //>>excludeEnd("ctx");
  15975. }));
  15976. return $1;
  15977. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15978. }, function($ctx1) {$ctx1.fill(self,"removeAll",{},$globals.AssociativeCollection)});
  15979. //>>excludeEnd("ctx");
  15980. },
  15981. //>>excludeStart("ide", pragmas.excludeIdeData);
  15982. args: [],
  15983. source: "removeAll\x0a\x09^ self keys do: [ :each | self removeKey: each ]",
  15984. referencedClasses: [],
  15985. //>>excludeEnd("ide");
  15986. messageSends: ["do:", "keys", "removeKey:"]
  15987. }),
  15988. $globals.AssociativeCollection);
  15989. $core.addMethod(
  15990. $core.method({
  15991. selector: "removeKey:",
  15992. protocol: 'adding/removing',
  15993. fn: function (aKey){
  15994. var self=this;
  15995. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  15996. return $core.withContext(function($ctx1) {
  15997. //>>excludeEnd("ctx");
  15998. var $1;
  15999. $1=self._remove_(aKey);
  16000. return $1;
  16001. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16002. }, function($ctx1) {$ctx1.fill(self,"removeKey:",{aKey:aKey},$globals.AssociativeCollection)});
  16003. //>>excludeEnd("ctx");
  16004. },
  16005. //>>excludeStart("ide", pragmas.excludeIdeData);
  16006. args: ["aKey"],
  16007. source: "removeKey: aKey\x0a\x09^ self remove: aKey",
  16008. referencedClasses: [],
  16009. //>>excludeEnd("ide");
  16010. messageSends: ["remove:"]
  16011. }),
  16012. $globals.AssociativeCollection);
  16013. $core.addMethod(
  16014. $core.method({
  16015. selector: "removeKey:ifAbsent:",
  16016. protocol: 'adding/removing',
  16017. fn: function (aKey,aBlock){
  16018. var self=this;
  16019. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16020. return $core.withContext(function($ctx1) {
  16021. //>>excludeEnd("ctx");
  16022. self._subclassResponsibility();
  16023. return self;
  16024. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16025. }, function($ctx1) {$ctx1.fill(self,"removeKey:ifAbsent:",{aKey:aKey,aBlock:aBlock},$globals.AssociativeCollection)});
  16026. //>>excludeEnd("ctx");
  16027. },
  16028. //>>excludeStart("ide", pragmas.excludeIdeData);
  16029. args: ["aKey", "aBlock"],
  16030. source: "removeKey: aKey ifAbsent: aBlock\x0a\x09self subclassResponsibility",
  16031. referencedClasses: [],
  16032. //>>excludeEnd("ide");
  16033. messageSends: ["subclassResponsibility"]
  16034. }),
  16035. $globals.AssociativeCollection);
  16036. $core.addMethod(
  16037. $core.method({
  16038. selector: "select:",
  16039. protocol: 'enumerating',
  16040. fn: function (aBlock){
  16041. var self=this;
  16042. var newDict;
  16043. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16044. return $core.withContext(function($ctx1) {
  16045. //>>excludeEnd("ctx");
  16046. var $1,$2;
  16047. newDict=$recv(self._class())._new();
  16048. self._keysAndValuesDo_((function(key,value){
  16049. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16050. return $core.withContext(function($ctx2) {
  16051. //>>excludeEnd("ctx");
  16052. $1=$recv(aBlock)._value_(value);
  16053. if($core.assert($1)){
  16054. return $recv(newDict)._at_put_(key,value);
  16055. };
  16056. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16057. }, function($ctx2) {$ctx2.fillBlock({key:key,value:value},$ctx1,1)});
  16058. //>>excludeEnd("ctx");
  16059. }));
  16060. $2=newDict;
  16061. return $2;
  16062. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16063. }, function($ctx1) {$ctx1.fill(self,"select:",{aBlock:aBlock,newDict:newDict},$globals.AssociativeCollection)});
  16064. //>>excludeEnd("ctx");
  16065. },
  16066. //>>excludeStart("ide", pragmas.excludeIdeData);
  16067. args: ["aBlock"],
  16068. 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",
  16069. referencedClasses: [],
  16070. //>>excludeEnd("ide");
  16071. messageSends: ["new", "class", "keysAndValuesDo:", "ifTrue:", "value:", "at:put:"]
  16072. }),
  16073. $globals.AssociativeCollection);
  16074. $core.addMethod(
  16075. $core.method({
  16076. selector: "shallowCopy",
  16077. protocol: 'copying',
  16078. fn: function (){
  16079. var self=this;
  16080. var copy;
  16081. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16082. return $core.withContext(function($ctx1) {
  16083. //>>excludeEnd("ctx");
  16084. var $1;
  16085. copy=$recv(self._class())._new();
  16086. self._keysAndValuesDo_((function(key,value){
  16087. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16088. return $core.withContext(function($ctx2) {
  16089. //>>excludeEnd("ctx");
  16090. return $recv(copy)._at_put_(key,value);
  16091. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16092. }, function($ctx2) {$ctx2.fillBlock({key:key,value:value},$ctx1,1)});
  16093. //>>excludeEnd("ctx");
  16094. }));
  16095. $1=copy;
  16096. return $1;
  16097. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16098. }, function($ctx1) {$ctx1.fill(self,"shallowCopy",{copy:copy},$globals.AssociativeCollection)});
  16099. //>>excludeEnd("ctx");
  16100. },
  16101. //>>excludeStart("ide", pragmas.excludeIdeData);
  16102. args: [],
  16103. 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",
  16104. referencedClasses: [],
  16105. //>>excludeEnd("ide");
  16106. messageSends: ["new", "class", "keysAndValuesDo:", "at:put:"]
  16107. }),
  16108. $globals.AssociativeCollection);
  16109. $core.addMethod(
  16110. $core.method({
  16111. selector: "size",
  16112. protocol: 'accessing',
  16113. fn: function (){
  16114. var self=this;
  16115. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16116. return $core.withContext(function($ctx1) {
  16117. //>>excludeEnd("ctx");
  16118. var $1;
  16119. $1=$recv(self._keys())._size();
  16120. return $1;
  16121. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16122. }, function($ctx1) {$ctx1.fill(self,"size",{},$globals.AssociativeCollection)});
  16123. //>>excludeEnd("ctx");
  16124. },
  16125. //>>excludeStart("ide", pragmas.excludeIdeData);
  16126. args: [],
  16127. source: "size\x0a\x09^ self keys size",
  16128. referencedClasses: [],
  16129. //>>excludeEnd("ide");
  16130. messageSends: ["size", "keys"]
  16131. }),
  16132. $globals.AssociativeCollection);
  16133. $core.addMethod(
  16134. $core.method({
  16135. selector: "values",
  16136. protocol: 'accessing',
  16137. fn: function (){
  16138. var self=this;
  16139. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16140. return $core.withContext(function($ctx1) {
  16141. //>>excludeEnd("ctx");
  16142. self._subclassResponsibility();
  16143. return self;
  16144. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16145. }, function($ctx1) {$ctx1.fill(self,"values",{},$globals.AssociativeCollection)});
  16146. //>>excludeEnd("ctx");
  16147. },
  16148. //>>excludeStart("ide", pragmas.excludeIdeData);
  16149. args: [],
  16150. source: "values\x0a\x09self subclassResponsibility",
  16151. referencedClasses: [],
  16152. //>>excludeEnd("ide");
  16153. messageSends: ["subclassResponsibility"]
  16154. }),
  16155. $globals.AssociativeCollection);
  16156. $core.addMethod(
  16157. $core.method({
  16158. selector: "valuesDo:",
  16159. protocol: 'enumerating',
  16160. fn: function (aBlock){
  16161. var self=this;
  16162. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16163. return $core.withContext(function($ctx1) {
  16164. //>>excludeEnd("ctx");
  16165. self._subclassResponsibility();
  16166. return self;
  16167. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16168. }, function($ctx1) {$ctx1.fill(self,"valuesDo:",{aBlock:aBlock},$globals.AssociativeCollection)});
  16169. //>>excludeEnd("ctx");
  16170. },
  16171. //>>excludeStart("ide", pragmas.excludeIdeData);
  16172. args: ["aBlock"],
  16173. source: "valuesDo: aBlock\x0a\x09self subclassResponsibility",
  16174. referencedClasses: [],
  16175. //>>excludeEnd("ide");
  16176. messageSends: ["subclassResponsibility"]
  16177. }),
  16178. $globals.AssociativeCollection);
  16179. $core.addMethod(
  16180. $core.method({
  16181. selector: "withIndexDo:",
  16182. protocol: 'enumerating',
  16183. fn: function (aBlock){
  16184. var self=this;
  16185. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16186. return $core.withContext(function($ctx1) {
  16187. //>>excludeEnd("ctx");
  16188. self._keysAndValuesDo_((function(key,value){
  16189. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16190. return $core.withContext(function($ctx2) {
  16191. //>>excludeEnd("ctx");
  16192. return $recv(aBlock)._value_value_(value,key);
  16193. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16194. }, function($ctx2) {$ctx2.fillBlock({key:key,value:value},$ctx1,1)});
  16195. //>>excludeEnd("ctx");
  16196. }));
  16197. return self;
  16198. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16199. }, function($ctx1) {$ctx1.fill(self,"withIndexDo:",{aBlock:aBlock},$globals.AssociativeCollection)});
  16200. //>>excludeEnd("ctx");
  16201. },
  16202. //>>excludeStart("ide", pragmas.excludeIdeData);
  16203. args: ["aBlock"],
  16204. source: "withIndexDo: aBlock\x0a\x09self keysAndValuesDo: [ :key :value | aBlock value: value value: key ]",
  16205. referencedClasses: [],
  16206. //>>excludeEnd("ide");
  16207. messageSends: ["keysAndValuesDo:", "value:value:"]
  16208. }),
  16209. $globals.AssociativeCollection);
  16210. $core.addMethod(
  16211. $core.method({
  16212. selector: "from:",
  16213. protocol: 'instance creation',
  16214. fn: function (aCollection){
  16215. var self=this;
  16216. var newCollection;
  16217. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16218. return $core.withContext(function($ctx1) {
  16219. //>>excludeEnd("ctx");
  16220. var $1;
  16221. newCollection=self._new();
  16222. $recv(aCollection)._do_((function(each){
  16223. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16224. return $core.withContext(function($ctx2) {
  16225. //>>excludeEnd("ctx");
  16226. return $recv(newCollection)._add_(each);
  16227. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16228. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  16229. //>>excludeEnd("ctx");
  16230. }));
  16231. $1=newCollection;
  16232. return $1;
  16233. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16234. }, function($ctx1) {$ctx1.fill(self,"from:",{aCollection:aCollection,newCollection:newCollection},$globals.AssociativeCollection.klass)});
  16235. //>>excludeEnd("ctx");
  16236. },
  16237. //>>excludeStart("ide", pragmas.excludeIdeData);
  16238. args: ["aCollection"],
  16239. source: "from: aCollection\x0a\x09| newCollection |\x0a\x09newCollection := self new.\x0a\x09aCollection do: [ :each | newCollection add: each ].\x0a\x09^ newCollection",
  16240. referencedClasses: [],
  16241. //>>excludeEnd("ide");
  16242. messageSends: ["new", "do:", "add:"]
  16243. }),
  16244. $globals.AssociativeCollection.klass);
  16245. $core.addMethod(
  16246. $core.method({
  16247. selector: "fromPairs:",
  16248. protocol: 'instance creation',
  16249. fn: function (aCollection){
  16250. var self=this;
  16251. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16252. return $core.withContext(function($ctx1) {
  16253. //>>excludeEnd("ctx");
  16254. var $1;
  16255. $1=self._from_(aCollection);
  16256. return $1;
  16257. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16258. }, function($ctx1) {$ctx1.fill(self,"fromPairs:",{aCollection:aCollection},$globals.AssociativeCollection.klass)});
  16259. //>>excludeEnd("ctx");
  16260. },
  16261. //>>excludeStart("ide", pragmas.excludeIdeData);
  16262. args: ["aCollection"],
  16263. source: "fromPairs: aCollection\x0a\x09\x22This message is poorly named and has been replaced by #from:\x22\x0a\x09^ self from: aCollection",
  16264. referencedClasses: [],
  16265. //>>excludeEnd("ide");
  16266. messageSends: ["from:"]
  16267. }),
  16268. $globals.AssociativeCollection.klass);
  16269. $core.addMethod(
  16270. $core.method({
  16271. selector: "newFromPairs:",
  16272. protocol: 'instance creation',
  16273. fn: function (aCollection){
  16274. var self=this;
  16275. var newCollection;
  16276. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16277. return $core.withContext(function($ctx1) {
  16278. //>>excludeEnd("ctx");
  16279. var $2,$1,$3,$4,$5;
  16280. $2=$recv(aCollection)._size();
  16281. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16282. $ctx1.sendIdx["size"]=1;
  16283. //>>excludeEnd("ctx");
  16284. $1=$recv($2)._even();
  16285. if(!$core.assert($1)){
  16286. self._error_("#newFromPairs only accepts arrays of an even length");
  16287. };
  16288. newCollection=self._new();
  16289. $recv((1)._to_by_($recv(aCollection)._size(),(2)))._do_((function(each){
  16290. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16291. return $core.withContext(function($ctx2) {
  16292. //>>excludeEnd("ctx");
  16293. $3=newCollection;
  16294. $4=$recv(aCollection)._at_(each);
  16295. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16296. $ctx2.sendIdx["at:"]=1;
  16297. //>>excludeEnd("ctx");
  16298. return $recv($3)._at_put_($4,$recv(aCollection)._at_($recv(each).__plus((1))));
  16299. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16300. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,2)});
  16301. //>>excludeEnd("ctx");
  16302. }));
  16303. $5=newCollection;
  16304. return $5;
  16305. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16306. }, function($ctx1) {$ctx1.fill(self,"newFromPairs:",{aCollection:aCollection,newCollection:newCollection},$globals.AssociativeCollection.klass)});
  16307. //>>excludeEnd("ctx");
  16308. },
  16309. //>>excludeStart("ide", pragmas.excludeIdeData);
  16310. args: ["aCollection"],
  16311. 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",
  16312. referencedClasses: [],
  16313. //>>excludeEnd("ide");
  16314. messageSends: ["ifFalse:", "even", "size", "error:", "new", "do:", "to:by:", "at:put:", "at:", "+"]
  16315. }),
  16316. $globals.AssociativeCollection.klass);
  16317. $core.addClass('Dictionary', $globals.AssociativeCollection, ['keys', 'values'], 'Kernel-Collections');
  16318. //>>excludeStart("ide", pragmas.excludeIdeData);
  16319. $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.";
  16320. //>>excludeEnd("ide");
  16321. $core.addMethod(
  16322. $core.method({
  16323. selector: "at:ifAbsent:",
  16324. protocol: 'accessing',
  16325. fn: function (aKey,aBlock){
  16326. var self=this;
  16327. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16328. return $core.withContext(function($ctx1) {
  16329. //>>excludeEnd("ctx");
  16330. var index = self._positionOfKey_(aKey);
  16331. return index >=0 ? self['@values'][index] : aBlock._value();
  16332. ;
  16333. return self;
  16334. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16335. }, function($ctx1) {$ctx1.fill(self,"at:ifAbsent:",{aKey:aKey,aBlock:aBlock},$globals.Dictionary)});
  16336. //>>excludeEnd("ctx");
  16337. },
  16338. //>>excludeStart("ide", pragmas.excludeIdeData);
  16339. args: ["aKey", "aBlock"],
  16340. source: "at: aKey ifAbsent: aBlock\x0a\x09<\x0a\x09\x09var index = self._positionOfKey_(aKey);\x0a\x09\x09return index >>=0 ? self['@values'][index] : aBlock._value();\x0a\x09>",
  16341. referencedClasses: [],
  16342. //>>excludeEnd("ide");
  16343. messageSends: []
  16344. }),
  16345. $globals.Dictionary);
  16346. $core.addMethod(
  16347. $core.method({
  16348. selector: "at:put:",
  16349. protocol: 'accessing',
  16350. fn: function (aKey,aValue){
  16351. var self=this;
  16352. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16353. return $core.withContext(function($ctx1) {
  16354. //>>excludeEnd("ctx");
  16355. var index = self._positionOfKey_(aKey);
  16356. if(index === -1) {
  16357. var keys = self['@keys'];
  16358. index = keys.length;
  16359. keys.push(aKey);
  16360. }
  16361. return self['@values'][index] = aValue;
  16362. ;
  16363. return self;
  16364. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16365. }, function($ctx1) {$ctx1.fill(self,"at:put:",{aKey:aKey,aValue:aValue},$globals.Dictionary)});
  16366. //>>excludeEnd("ctx");
  16367. },
  16368. //>>excludeStart("ide", pragmas.excludeIdeData);
  16369. args: ["aKey", "aValue"],
  16370. source: "at: aKey put: aValue\x0a\x09<\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>",
  16371. referencedClasses: [],
  16372. //>>excludeEnd("ide");
  16373. messageSends: []
  16374. }),
  16375. $globals.Dictionary);
  16376. $core.addMethod(
  16377. $core.method({
  16378. selector: "includesKey:",
  16379. protocol: 'testing',
  16380. fn: function (aKey){
  16381. var self=this;
  16382. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16383. return $core.withContext(function($ctx1) {
  16384. //>>excludeEnd("ctx");
  16385. return self._positionOfKey_(aKey) >= 0; ;
  16386. return self;
  16387. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16388. }, function($ctx1) {$ctx1.fill(self,"includesKey:",{aKey:aKey},$globals.Dictionary)});
  16389. //>>excludeEnd("ctx");
  16390. },
  16391. //>>excludeStart("ide", pragmas.excludeIdeData);
  16392. args: ["aKey"],
  16393. source: "includesKey: aKey\x0a\x09< return self._positionOfKey_(aKey) >>= 0; >",
  16394. referencedClasses: [],
  16395. //>>excludeEnd("ide");
  16396. messageSends: []
  16397. }),
  16398. $globals.Dictionary);
  16399. $core.addMethod(
  16400. $core.method({
  16401. selector: "indexOf:ifAbsent:",
  16402. protocol: 'accessing',
  16403. fn: function (anObject,aBlock){
  16404. var self=this;
  16405. var index;
  16406. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16407. return $core.withContext(function($ctx1) {
  16408. //>>excludeEnd("ctx");
  16409. var $2,$1;
  16410. index=$recv(self["@values"])._indexOf_ifAbsent_(anObject,(function(){
  16411. return (0);
  16412. }));
  16413. $2=$recv(index).__eq((0));
  16414. if($core.assert($2)){
  16415. $1=$recv(aBlock)._value();
  16416. } else {
  16417. $1=$recv(self["@keys"])._at_(index);
  16418. };
  16419. return $1;
  16420. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16421. }, function($ctx1) {$ctx1.fill(self,"indexOf:ifAbsent:",{anObject:anObject,aBlock:aBlock,index:index},$globals.Dictionary)});
  16422. //>>excludeEnd("ctx");
  16423. },
  16424. //>>excludeStart("ide", pragmas.excludeIdeData);
  16425. args: ["anObject", "aBlock"],
  16426. 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 ]",
  16427. referencedClasses: [],
  16428. //>>excludeEnd("ide");
  16429. messageSends: ["indexOf:ifAbsent:", "ifTrue:ifFalse:", "=", "value", "at:"]
  16430. }),
  16431. $globals.Dictionary);
  16432. $core.addMethod(
  16433. $core.method({
  16434. selector: "initialize",
  16435. protocol: 'initialization',
  16436. fn: function (){
  16437. var self=this;
  16438. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16439. return $core.withContext(function($ctx1) {
  16440. //>>excludeEnd("ctx");
  16441. (
  16442. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16443. $ctx1.supercall = true,
  16444. //>>excludeEnd("ctx");
  16445. $globals.Dictionary.superclass.fn.prototype._initialize.apply($recv(self), []));
  16446. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16447. $ctx1.supercall = false;
  16448. //>>excludeEnd("ctx");;
  16449. self["@keys"]=[];
  16450. self["@values"]=[];
  16451. return self;
  16452. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16453. }, function($ctx1) {$ctx1.fill(self,"initialize",{},$globals.Dictionary)});
  16454. //>>excludeEnd("ctx");
  16455. },
  16456. //>>excludeStart("ide", pragmas.excludeIdeData);
  16457. args: [],
  16458. source: "initialize\x0a\x09super initialize.\x0a\x09keys := #().\x0a\x09values := #()",
  16459. referencedClasses: [],
  16460. //>>excludeEnd("ide");
  16461. messageSends: ["initialize"]
  16462. }),
  16463. $globals.Dictionary);
  16464. $core.addMethod(
  16465. $core.method({
  16466. selector: "keys",
  16467. protocol: 'accessing',
  16468. fn: function (){
  16469. var self=this;
  16470. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16471. return $core.withContext(function($ctx1) {
  16472. //>>excludeEnd("ctx");
  16473. var $1;
  16474. $1=$recv(self["@keys"])._copy();
  16475. return $1;
  16476. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16477. }, function($ctx1) {$ctx1.fill(self,"keys",{},$globals.Dictionary)});
  16478. //>>excludeEnd("ctx");
  16479. },
  16480. //>>excludeStart("ide", pragmas.excludeIdeData);
  16481. args: [],
  16482. source: "keys\x0a\x09^ keys copy",
  16483. referencedClasses: [],
  16484. //>>excludeEnd("ide");
  16485. messageSends: ["copy"]
  16486. }),
  16487. $globals.Dictionary);
  16488. $core.addMethod(
  16489. $core.method({
  16490. selector: "keysAndValuesDo:",
  16491. protocol: 'enumerating',
  16492. fn: function (aBlock){
  16493. var self=this;
  16494. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16495. return $core.withContext(function($ctx1) {
  16496. //>>excludeEnd("ctx");
  16497. var $1;
  16498. $1=$recv(self["@keys"])._with_do_(self["@values"],aBlock);
  16499. return $1;
  16500. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16501. }, function($ctx1) {$ctx1.fill(self,"keysAndValuesDo:",{aBlock:aBlock},$globals.Dictionary)});
  16502. //>>excludeEnd("ctx");
  16503. },
  16504. //>>excludeStart("ide", pragmas.excludeIdeData);
  16505. args: ["aBlock"],
  16506. source: "keysAndValuesDo: aBlock\x0a\x09^ keys with: values do: aBlock",
  16507. referencedClasses: [],
  16508. //>>excludeEnd("ide");
  16509. messageSends: ["with:do:"]
  16510. }),
  16511. $globals.Dictionary);
  16512. $core.addMethod(
  16513. $core.method({
  16514. selector: "keysDo:",
  16515. protocol: 'enumerating',
  16516. fn: function (aBlock){
  16517. var self=this;
  16518. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16519. return $core.withContext(function($ctx1) {
  16520. //>>excludeEnd("ctx");
  16521. var $1;
  16522. $1=$recv(self["@keys"])._do_(aBlock);
  16523. return $1;
  16524. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16525. }, function($ctx1) {$ctx1.fill(self,"keysDo:",{aBlock:aBlock},$globals.Dictionary)});
  16526. //>>excludeEnd("ctx");
  16527. },
  16528. //>>excludeStart("ide", pragmas.excludeIdeData);
  16529. args: ["aBlock"],
  16530. source: "keysDo: aBlock\x0a\x09^ keys do: aBlock",
  16531. referencedClasses: [],
  16532. //>>excludeEnd("ide");
  16533. messageSends: ["do:"]
  16534. }),
  16535. $globals.Dictionary);
  16536. $core.addMethod(
  16537. $core.method({
  16538. selector: "positionOfKey:",
  16539. protocol: 'private',
  16540. fn: function (anObject){
  16541. var self=this;
  16542. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16543. return $core.withContext(function($ctx1) {
  16544. //>>excludeEnd("ctx");
  16545. var keys = self['@keys'];
  16546. for(var i=0;i<keys.length;i++){
  16547. if(keys[i].__eq(anObject)) { return i;}
  16548. }
  16549. return -1;
  16550. ;
  16551. return self;
  16552. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16553. }, function($ctx1) {$ctx1.fill(self,"positionOfKey:",{anObject:anObject},$globals.Dictionary)});
  16554. //>>excludeEnd("ctx");
  16555. },
  16556. //>>excludeStart("ide", pragmas.excludeIdeData);
  16557. args: ["anObject"],
  16558. source: "positionOfKey: anObject\x0a\x09<\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>",
  16559. referencedClasses: [],
  16560. //>>excludeEnd("ide");
  16561. messageSends: []
  16562. }),
  16563. $globals.Dictionary);
  16564. $core.addMethod(
  16565. $core.method({
  16566. selector: "removeAll",
  16567. protocol: 'adding/removing',
  16568. fn: function (){
  16569. var self=this;
  16570. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16571. return $core.withContext(function($ctx1) {
  16572. //>>excludeEnd("ctx");
  16573. $recv(self["@keys"])._removeAll();
  16574. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16575. $ctx1.sendIdx["removeAll"]=1;
  16576. //>>excludeEnd("ctx");
  16577. $recv(self["@values"])._removeAll();
  16578. return self;
  16579. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16580. }, function($ctx1) {$ctx1.fill(self,"removeAll",{},$globals.Dictionary)});
  16581. //>>excludeEnd("ctx");
  16582. },
  16583. //>>excludeStart("ide", pragmas.excludeIdeData);
  16584. args: [],
  16585. source: "removeAll\x0a\x09keys removeAll.\x0a\x09values removeAll",
  16586. referencedClasses: [],
  16587. //>>excludeEnd("ide");
  16588. messageSends: ["removeAll"]
  16589. }),
  16590. $globals.Dictionary);
  16591. $core.addMethod(
  16592. $core.method({
  16593. selector: "removeKey:ifAbsent:",
  16594. protocol: 'adding/removing',
  16595. fn: function (aKey,aBlock){
  16596. var self=this;
  16597. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16598. return $core.withContext(function($ctx1) {
  16599. //>>excludeEnd("ctx");
  16600. var index = self._positionOfKey_(aKey);
  16601. if(index === -1) {
  16602. return aBlock._value()
  16603. } else {
  16604. var keys = self['@keys'], values = self['@values'];
  16605. var value = values[index], l = keys.length;
  16606. keys[index] = keys[l-1];
  16607. keys.pop();
  16608. values[index] = values[l-1];
  16609. values.pop();
  16610. return value;
  16611. }
  16612. ;
  16613. return self;
  16614. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16615. }, function($ctx1) {$ctx1.fill(self,"removeKey:ifAbsent:",{aKey:aKey,aBlock:aBlock},$globals.Dictionary)});
  16616. //>>excludeEnd("ctx");
  16617. },
  16618. //>>excludeStart("ide", pragmas.excludeIdeData);
  16619. args: ["aKey", "aBlock"],
  16620. source: "removeKey: aKey ifAbsent: aBlock\x0a\x09<\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>",
  16621. referencedClasses: [],
  16622. //>>excludeEnd("ide");
  16623. messageSends: []
  16624. }),
  16625. $globals.Dictionary);
  16626. $core.addMethod(
  16627. $core.method({
  16628. selector: "values",
  16629. protocol: 'accessing',
  16630. fn: function (){
  16631. var self=this;
  16632. var $1;
  16633. $1=self["@values"];
  16634. return $1;
  16635. },
  16636. //>>excludeStart("ide", pragmas.excludeIdeData);
  16637. args: [],
  16638. source: "values\x0a\x09^ values",
  16639. referencedClasses: [],
  16640. //>>excludeEnd("ide");
  16641. messageSends: []
  16642. }),
  16643. $globals.Dictionary);
  16644. $core.addMethod(
  16645. $core.method({
  16646. selector: "valuesDo:",
  16647. protocol: 'enumerating',
  16648. fn: function (aBlock){
  16649. var self=this;
  16650. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16651. return $core.withContext(function($ctx1) {
  16652. //>>excludeEnd("ctx");
  16653. var $1;
  16654. $1=$recv(self["@values"])._do_(aBlock);
  16655. return $1;
  16656. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16657. }, function($ctx1) {$ctx1.fill(self,"valuesDo:",{aBlock:aBlock},$globals.Dictionary)});
  16658. //>>excludeEnd("ctx");
  16659. },
  16660. //>>excludeStart("ide", pragmas.excludeIdeData);
  16661. args: ["aBlock"],
  16662. source: "valuesDo: aBlock\x0a\x09^ values do: aBlock",
  16663. referencedClasses: [],
  16664. //>>excludeEnd("ide");
  16665. messageSends: ["do:"]
  16666. }),
  16667. $globals.Dictionary);
  16668. $core.addClass('HashedCollection', $globals.AssociativeCollection, [], 'Kernel-Collections');
  16669. //>>excludeStart("ide", pragmas.excludeIdeData);
  16670. $globals.HashedCollection.comment="I am a traditional JavaScript object, or a Smalltalk `Dictionary`.\x0a\x0aUnlike a `Dictionary`, I can only have strings as keys.";
  16671. //>>excludeEnd("ide");
  16672. $core.addMethod(
  16673. $core.method({
  16674. selector: "at:ifAbsent:",
  16675. protocol: 'accessing',
  16676. fn: function (aKey,aBlock){
  16677. var self=this;
  16678. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16679. return $core.withContext(function($ctx1) {
  16680. //>>excludeEnd("ctx");
  16681. var $2,$1;
  16682. $2=self._includesKey_(aKey);
  16683. if($core.assert($2)){
  16684. $1=self._basicAt_(aKey);
  16685. } else {
  16686. $1=$recv(aBlock)._value();
  16687. };
  16688. return $1;
  16689. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16690. }, function($ctx1) {$ctx1.fill(self,"at:ifAbsent:",{aKey:aKey,aBlock:aBlock},$globals.HashedCollection)});
  16691. //>>excludeEnd("ctx");
  16692. },
  16693. //>>excludeStart("ide", pragmas.excludeIdeData);
  16694. args: ["aKey", "aBlock"],
  16695. source: "at: aKey ifAbsent: aBlock\x0a\x09^ (self includesKey: aKey)\x0a\x09\x09ifTrue: [ self basicAt: aKey ]\x0a\x09\x09ifFalse: [ aBlock value ]",
  16696. referencedClasses: [],
  16697. //>>excludeEnd("ide");
  16698. messageSends: ["ifTrue:ifFalse:", "includesKey:", "basicAt:", "value"]
  16699. }),
  16700. $globals.HashedCollection);
  16701. $core.addMethod(
  16702. $core.method({
  16703. selector: "at:put:",
  16704. protocol: 'accessing',
  16705. fn: function (aKey,aValue){
  16706. var self=this;
  16707. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16708. return $core.withContext(function($ctx1) {
  16709. //>>excludeEnd("ctx");
  16710. var $1;
  16711. $1=self._basicAt_put_(aKey,aValue);
  16712. return $1;
  16713. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16714. }, function($ctx1) {$ctx1.fill(self,"at:put:",{aKey:aKey,aValue:aValue},$globals.HashedCollection)});
  16715. //>>excludeEnd("ctx");
  16716. },
  16717. //>>excludeStart("ide", pragmas.excludeIdeData);
  16718. args: ["aKey", "aValue"],
  16719. source: "at: aKey put: aValue\x0a\x09^ self basicAt: aKey put: aValue",
  16720. referencedClasses: [],
  16721. //>>excludeEnd("ide");
  16722. messageSends: ["basicAt:put:"]
  16723. }),
  16724. $globals.HashedCollection);
  16725. $core.addMethod(
  16726. $core.method({
  16727. selector: "includesKey:",
  16728. protocol: 'testing',
  16729. fn: function (aKey){
  16730. var self=this;
  16731. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16732. return $core.withContext(function($ctx1) {
  16733. //>>excludeEnd("ctx");
  16734. return self.hasOwnProperty(aKey);
  16735. return self;
  16736. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16737. }, function($ctx1) {$ctx1.fill(self,"includesKey:",{aKey:aKey},$globals.HashedCollection)});
  16738. //>>excludeEnd("ctx");
  16739. },
  16740. //>>excludeStart("ide", pragmas.excludeIdeData);
  16741. args: ["aKey"],
  16742. source: "includesKey: aKey\x0a\x09<return self.hasOwnProperty(aKey)>",
  16743. referencedClasses: [],
  16744. //>>excludeEnd("ide");
  16745. messageSends: []
  16746. }),
  16747. $globals.HashedCollection);
  16748. $core.addMethod(
  16749. $core.method({
  16750. selector: "keys",
  16751. protocol: 'accessing',
  16752. fn: function (){
  16753. var self=this;
  16754. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16755. return $core.withContext(function($ctx1) {
  16756. //>>excludeEnd("ctx");
  16757. return Object.keys(self);
  16758. return self;
  16759. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16760. }, function($ctx1) {$ctx1.fill(self,"keys",{},$globals.HashedCollection)});
  16761. //>>excludeEnd("ctx");
  16762. },
  16763. //>>excludeStart("ide", pragmas.excludeIdeData);
  16764. args: [],
  16765. source: "keys\x0a\x09<return Object.keys(self)>",
  16766. referencedClasses: [],
  16767. //>>excludeEnd("ide");
  16768. messageSends: []
  16769. }),
  16770. $globals.HashedCollection);
  16771. $core.addMethod(
  16772. $core.method({
  16773. selector: "keysDo:",
  16774. protocol: 'enumerating',
  16775. fn: function (aBlock){
  16776. var self=this;
  16777. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16778. return $core.withContext(function($ctx1) {
  16779. //>>excludeEnd("ctx");
  16780. $recv(self._keys())._do_(aBlock);
  16781. return self;
  16782. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16783. }, function($ctx1) {$ctx1.fill(self,"keysDo:",{aBlock:aBlock},$globals.HashedCollection)});
  16784. //>>excludeEnd("ctx");
  16785. },
  16786. //>>excludeStart("ide", pragmas.excludeIdeData);
  16787. args: ["aBlock"],
  16788. source: "keysDo: aBlock\x0a\x09self keys do: aBlock",
  16789. referencedClasses: [],
  16790. //>>excludeEnd("ide");
  16791. messageSends: ["do:", "keys"]
  16792. }),
  16793. $globals.HashedCollection);
  16794. $core.addMethod(
  16795. $core.method({
  16796. selector: "removeKey:ifAbsent:",
  16797. protocol: 'adding/removing',
  16798. fn: function (aKey,aBlock){
  16799. var self=this;
  16800. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16801. return $core.withContext(function($ctx1) {
  16802. //>>excludeEnd("ctx");
  16803. var $1;
  16804. $1=self._at_ifPresent_ifAbsent_(aKey,(function(removed){
  16805. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16806. return $core.withContext(function($ctx2) {
  16807. //>>excludeEnd("ctx");
  16808. self._basicDelete_(aKey);
  16809. return removed;
  16810. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16811. }, function($ctx2) {$ctx2.fillBlock({removed:removed},$ctx1,1)});
  16812. //>>excludeEnd("ctx");
  16813. }),(function(){
  16814. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16815. return $core.withContext(function($ctx2) {
  16816. //>>excludeEnd("ctx");
  16817. return $recv(aBlock)._value();
  16818. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16819. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
  16820. //>>excludeEnd("ctx");
  16821. }));
  16822. return $1;
  16823. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16824. }, function($ctx1) {$ctx1.fill(self,"removeKey:ifAbsent:",{aKey:aKey,aBlock:aBlock},$globals.HashedCollection)});
  16825. //>>excludeEnd("ctx");
  16826. },
  16827. //>>excludeStart("ide", pragmas.excludeIdeData);
  16828. args: ["aKey", "aBlock"],
  16829. 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 ]",
  16830. referencedClasses: [],
  16831. //>>excludeEnd("ide");
  16832. messageSends: ["at:ifPresent:ifAbsent:", "basicDelete:", "value"]
  16833. }),
  16834. $globals.HashedCollection);
  16835. $core.addMethod(
  16836. $core.method({
  16837. selector: "values",
  16838. protocol: 'accessing',
  16839. fn: function (){
  16840. var self=this;
  16841. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16842. return $core.withContext(function($ctx1) {
  16843. //>>excludeEnd("ctx");
  16844. return self._keys().map(function(key){
  16845. return self._at_(key);
  16846. });
  16847. ;
  16848. return self;
  16849. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16850. }, function($ctx1) {$ctx1.fill(self,"values",{},$globals.HashedCollection)});
  16851. //>>excludeEnd("ctx");
  16852. },
  16853. //>>excludeStart("ide", pragmas.excludeIdeData);
  16854. args: [],
  16855. source: "values\x0a\x09<\x0a\x09\x09return self._keys().map(function(key){\x0a\x09\x09\x09return self._at_(key);\x0a\x09\x09});\x0a\x09>",
  16856. referencedClasses: [],
  16857. //>>excludeEnd("ide");
  16858. messageSends: []
  16859. }),
  16860. $globals.HashedCollection);
  16861. $core.addMethod(
  16862. $core.method({
  16863. selector: "valuesDo:",
  16864. protocol: 'enumerating',
  16865. fn: function (aBlock){
  16866. var self=this;
  16867. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16868. return $core.withContext(function($ctx1) {
  16869. //>>excludeEnd("ctx");
  16870. $recv(self._values())._do_(aBlock);
  16871. return self;
  16872. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16873. }, function($ctx1) {$ctx1.fill(self,"valuesDo:",{aBlock:aBlock},$globals.HashedCollection)});
  16874. //>>excludeEnd("ctx");
  16875. },
  16876. //>>excludeStart("ide", pragmas.excludeIdeData);
  16877. args: ["aBlock"],
  16878. source: "valuesDo: aBlock\x0a\x09self values do: aBlock",
  16879. referencedClasses: [],
  16880. //>>excludeEnd("ide");
  16881. messageSends: ["do:", "values"]
  16882. }),
  16883. $globals.HashedCollection);
  16884. $core.addClass('SequenceableCollection', $globals.IndexableCollection, [], 'Kernel-Collections');
  16885. //>>excludeStart("ide", pragmas.excludeIdeData);
  16886. $globals.SequenceableCollection.comment="I am an IndexableCollection\x0awith numeric indexes starting with 1.";
  16887. //>>excludeEnd("ide");
  16888. $core.addMethod(
  16889. $core.method({
  16890. selector: "=",
  16891. protocol: 'comparing',
  16892. fn: function (aCollection){
  16893. var self=this;
  16894. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16895. return $core.withContext(function($ctx1) {
  16896. //>>excludeEnd("ctx");
  16897. var $3,$2,$4,$1,$5;
  16898. var $early={};
  16899. try {
  16900. $3=self._class();
  16901. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16902. $ctx1.sendIdx["class"]=1;
  16903. //>>excludeEnd("ctx");
  16904. $2=$recv($3).__eq($recv(aCollection)._class());
  16905. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16906. $ctx1.sendIdx["="]=1;
  16907. //>>excludeEnd("ctx");
  16908. $1=$recv($2)._and_((function(){
  16909. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16910. return $core.withContext(function($ctx2) {
  16911. //>>excludeEnd("ctx");
  16912. $4=self._size();
  16913. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16914. $ctx2.sendIdx["size"]=1;
  16915. //>>excludeEnd("ctx");
  16916. return $recv($4).__eq($recv(aCollection)._size());
  16917. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16918. $ctx2.sendIdx["="]=2;
  16919. //>>excludeEnd("ctx");
  16920. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16921. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  16922. //>>excludeEnd("ctx");
  16923. }));
  16924. if(!$core.assert($1)){
  16925. return false;
  16926. };
  16927. self._withIndexDo_((function(each,i){
  16928. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16929. return $core.withContext(function($ctx2) {
  16930. //>>excludeEnd("ctx");
  16931. $5=$recv($recv(aCollection)._at_(i)).__eq(each);
  16932. if(!$core.assert($5)){
  16933. throw $early=[false];
  16934. };
  16935. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16936. }, function($ctx2) {$ctx2.fillBlock({each:each,i:i},$ctx1,3)});
  16937. //>>excludeEnd("ctx");
  16938. }));
  16939. return true;
  16940. }
  16941. catch(e) {if(e===$early)return e[0]; throw e}
  16942. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16943. }, function($ctx1) {$ctx1.fill(self,"=",{aCollection:aCollection},$globals.SequenceableCollection)});
  16944. //>>excludeEnd("ctx");
  16945. },
  16946. //>>excludeStart("ide", pragmas.excludeIdeData);
  16947. args: ["aCollection"],
  16948. 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",
  16949. referencedClasses: [],
  16950. //>>excludeEnd("ide");
  16951. messageSends: ["ifFalse:", "and:", "=", "class", "size", "withIndexDo:", "at:"]
  16952. }),
  16953. $globals.SequenceableCollection);
  16954. $core.addMethod(
  16955. $core.method({
  16956. selector: "addLast:",
  16957. protocol: 'adding/removing',
  16958. fn: function (anObject){
  16959. var self=this;
  16960. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16961. return $core.withContext(function($ctx1) {
  16962. //>>excludeEnd("ctx");
  16963. self._add_(anObject);
  16964. return self;
  16965. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16966. }, function($ctx1) {$ctx1.fill(self,"addLast:",{anObject:anObject},$globals.SequenceableCollection)});
  16967. //>>excludeEnd("ctx");
  16968. },
  16969. //>>excludeStart("ide", pragmas.excludeIdeData);
  16970. args: ["anObject"],
  16971. source: "addLast: anObject\x0a\x09self add: anObject",
  16972. referencedClasses: [],
  16973. //>>excludeEnd("ide");
  16974. messageSends: ["add:"]
  16975. }),
  16976. $globals.SequenceableCollection);
  16977. $core.addMethod(
  16978. $core.method({
  16979. selector: "allButFirst",
  16980. protocol: 'accessing',
  16981. fn: function (){
  16982. var self=this;
  16983. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16984. return $core.withContext(function($ctx1) {
  16985. //>>excludeEnd("ctx");
  16986. var $1;
  16987. $1=self._copyFrom_to_((2),self._size());
  16988. return $1;
  16989. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  16990. }, function($ctx1) {$ctx1.fill(self,"allButFirst",{},$globals.SequenceableCollection)});
  16991. //>>excludeEnd("ctx");
  16992. },
  16993. //>>excludeStart("ide", pragmas.excludeIdeData);
  16994. args: [],
  16995. source: "allButFirst\x0a\x09^ self copyFrom: 2 to: self size",
  16996. referencedClasses: [],
  16997. //>>excludeEnd("ide");
  16998. messageSends: ["copyFrom:to:", "size"]
  16999. }),
  17000. $globals.SequenceableCollection);
  17001. $core.addMethod(
  17002. $core.method({
  17003. selector: "allButLast",
  17004. protocol: 'accessing',
  17005. fn: function (){
  17006. var self=this;
  17007. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17008. return $core.withContext(function($ctx1) {
  17009. //>>excludeEnd("ctx");
  17010. var $1;
  17011. $1=self._copyFrom_to_((1),$recv(self._size()).__minus((1)));
  17012. return $1;
  17013. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17014. }, function($ctx1) {$ctx1.fill(self,"allButLast",{},$globals.SequenceableCollection)});
  17015. //>>excludeEnd("ctx");
  17016. },
  17017. //>>excludeStart("ide", pragmas.excludeIdeData);
  17018. args: [],
  17019. source: "allButLast\x0a\x09^ self copyFrom: 1 to: self size - 1",
  17020. referencedClasses: [],
  17021. //>>excludeEnd("ide");
  17022. messageSends: ["copyFrom:to:", "-", "size"]
  17023. }),
  17024. $globals.SequenceableCollection);
  17025. $core.addMethod(
  17026. $core.method({
  17027. selector: "atRandom",
  17028. protocol: 'accessing',
  17029. fn: function (){
  17030. var self=this;
  17031. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17032. return $core.withContext(function($ctx1) {
  17033. //>>excludeEnd("ctx");
  17034. var $1;
  17035. $1=self._at_($recv(self._size())._atRandom());
  17036. return $1;
  17037. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17038. }, function($ctx1) {$ctx1.fill(self,"atRandom",{},$globals.SequenceableCollection)});
  17039. //>>excludeEnd("ctx");
  17040. },
  17041. //>>excludeStart("ide", pragmas.excludeIdeData);
  17042. args: [],
  17043. source: "atRandom\x0a\x09^ self at: self size atRandom",
  17044. referencedClasses: [],
  17045. //>>excludeEnd("ide");
  17046. messageSends: ["at:", "atRandom", "size"]
  17047. }),
  17048. $globals.SequenceableCollection);
  17049. $core.addMethod(
  17050. $core.method({
  17051. selector: "beginsWith:",
  17052. protocol: 'testing',
  17053. fn: function (prefix){
  17054. var self=this;
  17055. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17056. return $core.withContext(function($ctx1) {
  17057. //>>excludeEnd("ctx");
  17058. var $2,$3,$1,$4;
  17059. $2=self._size();
  17060. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17061. $ctx1.sendIdx["size"]=1;
  17062. //>>excludeEnd("ctx");
  17063. $3=$recv(prefix)._size();
  17064. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17065. $ctx1.sendIdx["size"]=2;
  17066. //>>excludeEnd("ctx");
  17067. $1=$recv($2).__lt($3);
  17068. if($core.assert($1)){
  17069. return false;
  17070. };
  17071. $4=$recv(self._first_($recv(prefix)._size())).__eq(prefix);
  17072. return $4;
  17073. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17074. }, function($ctx1) {$ctx1.fill(self,"beginsWith:",{prefix:prefix},$globals.SequenceableCollection)});
  17075. //>>excludeEnd("ctx");
  17076. },
  17077. //>>excludeStart("ide", pragmas.excludeIdeData);
  17078. args: ["prefix"],
  17079. source: "beginsWith: prefix\x0a\x09self size < prefix size ifTrue: [ ^ false ].\x0a\x09^ (self first: prefix size) = prefix",
  17080. referencedClasses: [],
  17081. //>>excludeEnd("ide");
  17082. messageSends: ["ifTrue:", "<", "size", "=", "first:"]
  17083. }),
  17084. $globals.SequenceableCollection);
  17085. $core.addMethod(
  17086. $core.method({
  17087. selector: "copyFrom:to:",
  17088. protocol: 'copying',
  17089. fn: function (anIndex,anotherIndex){
  17090. var self=this;
  17091. var range,newCollection;
  17092. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17093. return $core.withContext(function($ctx1) {
  17094. //>>excludeEnd("ctx");
  17095. var $1;
  17096. range=$recv(anIndex)._to_(anotherIndex);
  17097. newCollection=$recv(self._class())._new_($recv(range)._size());
  17098. $recv(range)._withIndexDo_((function(each,i){
  17099. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17100. return $core.withContext(function($ctx2) {
  17101. //>>excludeEnd("ctx");
  17102. return $recv(newCollection)._at_put_(i,self._at_(each));
  17103. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17104. }, function($ctx2) {$ctx2.fillBlock({each:each,i:i},$ctx1,1)});
  17105. //>>excludeEnd("ctx");
  17106. }));
  17107. $1=newCollection;
  17108. return $1;
  17109. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17110. }, function($ctx1) {$ctx1.fill(self,"copyFrom:to:",{anIndex:anIndex,anotherIndex:anotherIndex,range:range,newCollection:newCollection},$globals.SequenceableCollection)});
  17111. //>>excludeEnd("ctx");
  17112. },
  17113. //>>excludeStart("ide", pragmas.excludeIdeData);
  17114. args: ["anIndex", "anotherIndex"],
  17115. source: "copyFrom: anIndex to: anotherIndex\x0a\x09| range newCollection |\x0a\x09range := anIndex to: anotherIndex.\x0a\x09newCollection := self class new: range size.\x0a\x09range withIndexDo: [ :each :i |\x0a\x09\x09newCollection at: i put: (self at: each) ].\x0a\x09^ newCollection",
  17116. referencedClasses: [],
  17117. //>>excludeEnd("ide");
  17118. messageSends: ["to:", "new:", "class", "size", "withIndexDo:", "at:put:", "at:"]
  17119. }),
  17120. $globals.SequenceableCollection);
  17121. $core.addMethod(
  17122. $core.method({
  17123. selector: "deepCopy",
  17124. protocol: 'copying',
  17125. fn: function (){
  17126. var self=this;
  17127. var newCollection;
  17128. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17129. return $core.withContext(function($ctx1) {
  17130. //>>excludeEnd("ctx");
  17131. var $1;
  17132. newCollection=$recv(self._class())._new_(self._size());
  17133. self._withIndexDo_((function(each,index){
  17134. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17135. return $core.withContext(function($ctx2) {
  17136. //>>excludeEnd("ctx");
  17137. return $recv(newCollection)._at_put_(index,$recv(each)._deepCopy());
  17138. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17139. }, function($ctx2) {$ctx2.fillBlock({each:each,index:index},$ctx1,1)});
  17140. //>>excludeEnd("ctx");
  17141. }));
  17142. $1=newCollection;
  17143. return $1;
  17144. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17145. }, function($ctx1) {$ctx1.fill(self,"deepCopy",{newCollection:newCollection},$globals.SequenceableCollection)});
  17146. //>>excludeEnd("ctx");
  17147. },
  17148. //>>excludeStart("ide", pragmas.excludeIdeData);
  17149. args: [],
  17150. source: "deepCopy\x0a\x09| newCollection |\x0a\x09newCollection := self class new: self size.\x0a\x09self withIndexDo: [ :each :index |\x0a\x09\x09newCollection at: index put: each deepCopy ].\x0a\x09^ newCollection",
  17151. referencedClasses: [],
  17152. //>>excludeEnd("ide");
  17153. messageSends: ["new:", "class", "size", "withIndexDo:", "at:put:", "deepCopy"]
  17154. }),
  17155. $globals.SequenceableCollection);
  17156. $core.addMethod(
  17157. $core.method({
  17158. selector: "detect:ifNone:",
  17159. protocol: 'enumerating',
  17160. fn: function (aBlock,anotherBlock){
  17161. var self=this;
  17162. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17163. return $core.withContext(function($ctx1) {
  17164. //>>excludeEnd("ctx");
  17165. self = self._numericallyIndexable();
  17166. for(var i = 0; i < self.length; i++)
  17167. if(aBlock._value_(self[i]))
  17168. return self[i];
  17169. return anotherBlock._value();
  17170. ;
  17171. return self;
  17172. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17173. }, function($ctx1) {$ctx1.fill(self,"detect:ifNone:",{aBlock:aBlock,anotherBlock:anotherBlock},$globals.SequenceableCollection)});
  17174. //>>excludeEnd("ctx");
  17175. },
  17176. //>>excludeStart("ide", pragmas.excludeIdeData);
  17177. args: ["aBlock", "anotherBlock"],
  17178. source: "detect: aBlock ifNone: anotherBlock\x0a\x09<\x0a\x09\x09self = self._numericallyIndexable();\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>",
  17179. referencedClasses: [],
  17180. //>>excludeEnd("ide");
  17181. messageSends: []
  17182. }),
  17183. $globals.SequenceableCollection);
  17184. $core.addMethod(
  17185. $core.method({
  17186. selector: "do:",
  17187. protocol: 'enumerating',
  17188. fn: function (aBlock){
  17189. var self=this;
  17190. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17191. return $core.withContext(function($ctx1) {
  17192. //>>excludeEnd("ctx");
  17193. self = self._numericallyIndexable();
  17194. for(var i=0; i < self.length; i++) {
  17195. aBlock._value_(self[i]);
  17196. }
  17197. ;
  17198. return self;
  17199. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17200. }, function($ctx1) {$ctx1.fill(self,"do:",{aBlock:aBlock},$globals.SequenceableCollection)});
  17201. //>>excludeEnd("ctx");
  17202. },
  17203. //>>excludeStart("ide", pragmas.excludeIdeData);
  17204. args: ["aBlock"],
  17205. source: "do: aBlock\x0a\x09<\x0a\x09\x09self = self._numericallyIndexable();\x0a\x09\x09for(var i=0; i < self.length; i++) {\x0a\x09\x09\x09aBlock._value_(self[i]);\x0a\x09\x09}\x0a\x09>",
  17206. referencedClasses: [],
  17207. //>>excludeEnd("ide");
  17208. messageSends: []
  17209. }),
  17210. $globals.SequenceableCollection);
  17211. $core.addMethod(
  17212. $core.method({
  17213. selector: "endsWith:",
  17214. protocol: 'testing',
  17215. fn: function (suffix){
  17216. var self=this;
  17217. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17218. return $core.withContext(function($ctx1) {
  17219. //>>excludeEnd("ctx");
  17220. var $2,$3,$1,$4;
  17221. $2=self._size();
  17222. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17223. $ctx1.sendIdx["size"]=1;
  17224. //>>excludeEnd("ctx");
  17225. $3=$recv(suffix)._size();
  17226. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17227. $ctx1.sendIdx["size"]=2;
  17228. //>>excludeEnd("ctx");
  17229. $1=$recv($2).__lt($3);
  17230. if($core.assert($1)){
  17231. return false;
  17232. };
  17233. $4=$recv(self._last_($recv(suffix)._size())).__eq(suffix);
  17234. return $4;
  17235. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17236. }, function($ctx1) {$ctx1.fill(self,"endsWith:",{suffix:suffix},$globals.SequenceableCollection)});
  17237. //>>excludeEnd("ctx");
  17238. },
  17239. //>>excludeStart("ide", pragmas.excludeIdeData);
  17240. args: ["suffix"],
  17241. source: "endsWith: suffix\x0a\x09self size < suffix size ifTrue: [ ^ false ].\x0a\x09^ (self last: suffix size) = suffix",
  17242. referencedClasses: [],
  17243. //>>excludeEnd("ide");
  17244. messageSends: ["ifTrue:", "<", "size", "=", "last:"]
  17245. }),
  17246. $globals.SequenceableCollection);
  17247. $core.addMethod(
  17248. $core.method({
  17249. selector: "first",
  17250. protocol: 'accessing',
  17251. fn: function (){
  17252. var self=this;
  17253. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17254. return $core.withContext(function($ctx1) {
  17255. //>>excludeEnd("ctx");
  17256. var $1;
  17257. $1=self._at_((1));
  17258. return $1;
  17259. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17260. }, function($ctx1) {$ctx1.fill(self,"first",{},$globals.SequenceableCollection)});
  17261. //>>excludeEnd("ctx");
  17262. },
  17263. //>>excludeStart("ide", pragmas.excludeIdeData);
  17264. args: [],
  17265. source: "first\x0a\x09^ self at: 1",
  17266. referencedClasses: [],
  17267. //>>excludeEnd("ide");
  17268. messageSends: ["at:"]
  17269. }),
  17270. $globals.SequenceableCollection);
  17271. $core.addMethod(
  17272. $core.method({
  17273. selector: "first:",
  17274. protocol: 'accessing',
  17275. fn: function (aNumber){
  17276. var self=this;
  17277. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17278. return $core.withContext(function($ctx1) {
  17279. //>>excludeEnd("ctx");
  17280. var $1,$2;
  17281. $1=$recv(self._size()).__lt(aNumber);
  17282. if($core.assert($1)){
  17283. self._error_("Invalid number of elements");
  17284. };
  17285. $2=self._copyFrom_to_((1),aNumber);
  17286. return $2;
  17287. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17288. }, function($ctx1) {$ctx1.fill(self,"first:",{aNumber:aNumber},$globals.SequenceableCollection)});
  17289. //>>excludeEnd("ctx");
  17290. },
  17291. //>>excludeStart("ide", pragmas.excludeIdeData);
  17292. args: ["aNumber"],
  17293. 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",
  17294. referencedClasses: [],
  17295. //>>excludeEnd("ide");
  17296. messageSends: ["ifTrue:", "<", "size", "error:", "copyFrom:to:"]
  17297. }),
  17298. $globals.SequenceableCollection);
  17299. $core.addMethod(
  17300. $core.method({
  17301. selector: "fourth",
  17302. protocol: 'accessing',
  17303. fn: function (){
  17304. var self=this;
  17305. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17306. return $core.withContext(function($ctx1) {
  17307. //>>excludeEnd("ctx");
  17308. var $1;
  17309. $1=self._at_((4));
  17310. return $1;
  17311. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17312. }, function($ctx1) {$ctx1.fill(self,"fourth",{},$globals.SequenceableCollection)});
  17313. //>>excludeEnd("ctx");
  17314. },
  17315. //>>excludeStart("ide", pragmas.excludeIdeData);
  17316. args: [],
  17317. source: "fourth\x0a\x09^ self at: 4",
  17318. referencedClasses: [],
  17319. //>>excludeEnd("ide");
  17320. messageSends: ["at:"]
  17321. }),
  17322. $globals.SequenceableCollection);
  17323. $core.addMethod(
  17324. $core.method({
  17325. selector: "includes:",
  17326. protocol: 'testing',
  17327. fn: function (anObject){
  17328. var self=this;
  17329. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17330. return $core.withContext(function($ctx1) {
  17331. //>>excludeEnd("ctx");
  17332. var $1;
  17333. $1=$recv(self._indexOf_ifAbsent_(anObject,(function(){
  17334. return nil;
  17335. })))._notNil();
  17336. return $1;
  17337. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17338. }, function($ctx1) {$ctx1.fill(self,"includes:",{anObject:anObject},$globals.SequenceableCollection)});
  17339. //>>excludeEnd("ctx");
  17340. },
  17341. //>>excludeStart("ide", pragmas.excludeIdeData);
  17342. args: ["anObject"],
  17343. source: "includes: anObject\x0a\x09^ (self indexOf: anObject ifAbsent: [ nil ]) notNil",
  17344. referencedClasses: [],
  17345. //>>excludeEnd("ide");
  17346. messageSends: ["notNil", "indexOf:ifAbsent:"]
  17347. }),
  17348. $globals.SequenceableCollection);
  17349. $core.addMethod(
  17350. $core.method({
  17351. selector: "indexOf:ifAbsent:",
  17352. protocol: 'accessing',
  17353. fn: function (anObject,aBlock){
  17354. var self=this;
  17355. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17356. return $core.withContext(function($ctx1) {
  17357. //>>excludeEnd("ctx");
  17358. self = self._numericallyIndexable();
  17359. for(var i=0; i < self.length; i++) {
  17360. if($recv(self[i]).__eq(anObject)) {return i+1}
  17361. };
  17362. return aBlock._value();
  17363. ;
  17364. return self;
  17365. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17366. }, function($ctx1) {$ctx1.fill(self,"indexOf:ifAbsent:",{anObject:anObject,aBlock:aBlock},$globals.SequenceableCollection)});
  17367. //>>excludeEnd("ctx");
  17368. },
  17369. //>>excludeStart("ide", pragmas.excludeIdeData);
  17370. args: ["anObject", "aBlock"],
  17371. source: "indexOf: anObject ifAbsent: aBlock\x0a\x09<\x0a\x09\x09self = self._numericallyIndexable();\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>",
  17372. referencedClasses: [],
  17373. //>>excludeEnd("ide");
  17374. messageSends: []
  17375. }),
  17376. $globals.SequenceableCollection);
  17377. $core.addMethod(
  17378. $core.method({
  17379. selector: "indexOf:startingAt:",
  17380. protocol: 'accessing',
  17381. fn: function (anObject,start){
  17382. var self=this;
  17383. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17384. return $core.withContext(function($ctx1) {
  17385. //>>excludeEnd("ctx");
  17386. var $1;
  17387. $1=self._indexOf_startingAt_ifAbsent_(anObject,start,(function(){
  17388. return (0);
  17389. }));
  17390. return $1;
  17391. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17392. }, function($ctx1) {$ctx1.fill(self,"indexOf:startingAt:",{anObject:anObject,start:start},$globals.SequenceableCollection)});
  17393. //>>excludeEnd("ctx");
  17394. },
  17395. //>>excludeStart("ide", pragmas.excludeIdeData);
  17396. args: ["anObject", "start"],
  17397. 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 ]",
  17398. referencedClasses: [],
  17399. //>>excludeEnd("ide");
  17400. messageSends: ["indexOf:startingAt:ifAbsent:"]
  17401. }),
  17402. $globals.SequenceableCollection);
  17403. $core.addMethod(
  17404. $core.method({
  17405. selector: "indexOf:startingAt:ifAbsent:",
  17406. protocol: 'accessing',
  17407. fn: function (anObject,start,aBlock){
  17408. var self=this;
  17409. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17410. return $core.withContext(function($ctx1) {
  17411. //>>excludeEnd("ctx");
  17412. self = self._numericallyIndexable();
  17413. for(var i=start - 1; i < self.length; i++){
  17414. if($recv(self[i]).__eq(anObject)) {return i+1}
  17415. }
  17416. return aBlock._value();
  17417. ;
  17418. return self;
  17419. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17420. }, function($ctx1) {$ctx1.fill(self,"indexOf:startingAt:ifAbsent:",{anObject:anObject,start:start,aBlock:aBlock},$globals.SequenceableCollection)});
  17421. //>>excludeEnd("ctx");
  17422. },
  17423. //>>excludeStart("ide", pragmas.excludeIdeData);
  17424. args: ["anObject", "start", "aBlock"],
  17425. source: "indexOf: anObject startingAt: start ifAbsent: aBlock\x0a\x09<\x0a\x09\x09self = self._numericallyIndexable();\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>",
  17426. referencedClasses: [],
  17427. //>>excludeEnd("ide");
  17428. messageSends: []
  17429. }),
  17430. $globals.SequenceableCollection);
  17431. $core.addMethod(
  17432. $core.method({
  17433. selector: "last",
  17434. protocol: 'accessing',
  17435. fn: function (){
  17436. var self=this;
  17437. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17438. return $core.withContext(function($ctx1) {
  17439. //>>excludeEnd("ctx");
  17440. var $1;
  17441. $1=self._at_(self._size());
  17442. return $1;
  17443. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17444. }, function($ctx1) {$ctx1.fill(self,"last",{},$globals.SequenceableCollection)});
  17445. //>>excludeEnd("ctx");
  17446. },
  17447. //>>excludeStart("ide", pragmas.excludeIdeData);
  17448. args: [],
  17449. source: "last\x0a\x09^ self at: self size",
  17450. referencedClasses: [],
  17451. //>>excludeEnd("ide");
  17452. messageSends: ["at:", "size"]
  17453. }),
  17454. $globals.SequenceableCollection);
  17455. $core.addMethod(
  17456. $core.method({
  17457. selector: "last:",
  17458. protocol: 'accessing',
  17459. fn: function (aNumber){
  17460. var self=this;
  17461. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17462. return $core.withContext(function($ctx1) {
  17463. //>>excludeEnd("ctx");
  17464. var $2,$1,$6,$5,$4,$3;
  17465. $2=self._size();
  17466. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17467. $ctx1.sendIdx["size"]=1;
  17468. //>>excludeEnd("ctx");
  17469. $1=$recv($2).__lt(aNumber);
  17470. if($core.assert($1)){
  17471. self._error_("Invalid number of elements");
  17472. };
  17473. $6=self._size();
  17474. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17475. $ctx1.sendIdx["size"]=2;
  17476. //>>excludeEnd("ctx");
  17477. $5=$recv($6).__minus(aNumber);
  17478. $4=$recv($5).__plus((1));
  17479. $3=self._copyFrom_to_($4,self._size());
  17480. return $3;
  17481. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17482. }, function($ctx1) {$ctx1.fill(self,"last:",{aNumber:aNumber},$globals.SequenceableCollection)});
  17483. //>>excludeEnd("ctx");
  17484. },
  17485. //>>excludeStart("ide", pragmas.excludeIdeData);
  17486. args: ["aNumber"],
  17487. 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",
  17488. referencedClasses: [],
  17489. //>>excludeEnd("ide");
  17490. messageSends: ["ifTrue:", "<", "size", "error:", "copyFrom:to:", "+", "-"]
  17491. }),
  17492. $globals.SequenceableCollection);
  17493. $core.addMethod(
  17494. $core.method({
  17495. selector: "newStream",
  17496. protocol: 'streaming',
  17497. fn: function (){
  17498. var self=this;
  17499. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17500. return $core.withContext(function($ctx1) {
  17501. //>>excludeEnd("ctx");
  17502. var $1;
  17503. $1=$recv(self._streamClass())._on_(self);
  17504. return $1;
  17505. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17506. }, function($ctx1) {$ctx1.fill(self,"newStream",{},$globals.SequenceableCollection)});
  17507. //>>excludeEnd("ctx");
  17508. },
  17509. //>>excludeStart("ide", pragmas.excludeIdeData);
  17510. args: [],
  17511. source: "newStream\x0a\x09^ self streamClass on: self",
  17512. referencedClasses: [],
  17513. //>>excludeEnd("ide");
  17514. messageSends: ["on:", "streamClass"]
  17515. }),
  17516. $globals.SequenceableCollection);
  17517. $core.addMethod(
  17518. $core.method({
  17519. selector: "numericallyIndexable",
  17520. protocol: 'private',
  17521. fn: function (){
  17522. var self=this;
  17523. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17524. return $core.withContext(function($ctx1) {
  17525. //>>excludeEnd("ctx");
  17526. self._subclassResponsibility();
  17527. return self;
  17528. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17529. }, function($ctx1) {$ctx1.fill(self,"numericallyIndexable",{},$globals.SequenceableCollection)});
  17530. //>>excludeEnd("ctx");
  17531. },
  17532. //>>excludeStart("ide", pragmas.excludeIdeData);
  17533. args: [],
  17534. source: "numericallyIndexable\x0a\x09\x22This is an internal converting message.\x0a\x09It answeres a representation of the receiver\x0a\x09that can use foo[i] in JavaScript code.\x0a\x09\x0a\x09It fixes IE8, where boxed String is unable\x0a\x09to numerically index its characters,\x0a\x09but primitive string can.\x22\x0a\x09\x0a\x09self subclassResponsibility",
  17535. referencedClasses: [],
  17536. //>>excludeEnd("ide");
  17537. messageSends: ["subclassResponsibility"]
  17538. }),
  17539. $globals.SequenceableCollection);
  17540. $core.addMethod(
  17541. $core.method({
  17542. selector: "readStream",
  17543. protocol: 'streaming',
  17544. fn: function (){
  17545. var self=this;
  17546. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17547. return $core.withContext(function($ctx1) {
  17548. //>>excludeEnd("ctx");
  17549. var $1;
  17550. $1=self._stream();
  17551. return $1;
  17552. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17553. }, function($ctx1) {$ctx1.fill(self,"readStream",{},$globals.SequenceableCollection)});
  17554. //>>excludeEnd("ctx");
  17555. },
  17556. //>>excludeStart("ide", pragmas.excludeIdeData);
  17557. args: [],
  17558. source: "readStream\x0a\x09\x22For Pharo compatibility\x22\x0a\x09\x0a\x09^ self stream",
  17559. referencedClasses: [],
  17560. //>>excludeEnd("ide");
  17561. messageSends: ["stream"]
  17562. }),
  17563. $globals.SequenceableCollection);
  17564. $core.addMethod(
  17565. $core.method({
  17566. selector: "removeLast",
  17567. protocol: 'adding/removing',
  17568. fn: function (){
  17569. var self=this;
  17570. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17571. return $core.withContext(function($ctx1) {
  17572. //>>excludeEnd("ctx");
  17573. var $1;
  17574. $1=self._remove_(self._last());
  17575. return $1;
  17576. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17577. }, function($ctx1) {$ctx1.fill(self,"removeLast",{},$globals.SequenceableCollection)});
  17578. //>>excludeEnd("ctx");
  17579. },
  17580. //>>excludeStart("ide", pragmas.excludeIdeData);
  17581. args: [],
  17582. source: "removeLast\x0a\x09^ self remove: self last",
  17583. referencedClasses: [],
  17584. //>>excludeEnd("ide");
  17585. messageSends: ["remove:", "last"]
  17586. }),
  17587. $globals.SequenceableCollection);
  17588. $core.addMethod(
  17589. $core.method({
  17590. selector: "reversed",
  17591. protocol: 'converting',
  17592. fn: function (){
  17593. var self=this;
  17594. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17595. return $core.withContext(function($ctx1) {
  17596. //>>excludeEnd("ctx");
  17597. self._subclassResponsibility();
  17598. return self;
  17599. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17600. }, function($ctx1) {$ctx1.fill(self,"reversed",{},$globals.SequenceableCollection)});
  17601. //>>excludeEnd("ctx");
  17602. },
  17603. //>>excludeStart("ide", pragmas.excludeIdeData);
  17604. args: [],
  17605. source: "reversed\x0a\x09self subclassResponsibility",
  17606. referencedClasses: [],
  17607. //>>excludeEnd("ide");
  17608. messageSends: ["subclassResponsibility"]
  17609. }),
  17610. $globals.SequenceableCollection);
  17611. $core.addMethod(
  17612. $core.method({
  17613. selector: "second",
  17614. protocol: 'accessing',
  17615. fn: function (){
  17616. var self=this;
  17617. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17618. return $core.withContext(function($ctx1) {
  17619. //>>excludeEnd("ctx");
  17620. var $1;
  17621. $1=self._at_((2));
  17622. return $1;
  17623. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17624. }, function($ctx1) {$ctx1.fill(self,"second",{},$globals.SequenceableCollection)});
  17625. //>>excludeEnd("ctx");
  17626. },
  17627. //>>excludeStart("ide", pragmas.excludeIdeData);
  17628. args: [],
  17629. source: "second\x0a\x09^ self at: 2",
  17630. referencedClasses: [],
  17631. //>>excludeEnd("ide");
  17632. messageSends: ["at:"]
  17633. }),
  17634. $globals.SequenceableCollection);
  17635. $core.addMethod(
  17636. $core.method({
  17637. selector: "shallowCopy",
  17638. protocol: 'copying',
  17639. fn: function (){
  17640. var self=this;
  17641. var newCollection;
  17642. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17643. return $core.withContext(function($ctx1) {
  17644. //>>excludeEnd("ctx");
  17645. var $1;
  17646. newCollection=$recv(self._class())._new_(self._size());
  17647. self._withIndexDo_((function(each,index){
  17648. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17649. return $core.withContext(function($ctx2) {
  17650. //>>excludeEnd("ctx");
  17651. return $recv(newCollection)._at_put_(index,each);
  17652. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17653. }, function($ctx2) {$ctx2.fillBlock({each:each,index:index},$ctx1,1)});
  17654. //>>excludeEnd("ctx");
  17655. }));
  17656. $1=newCollection;
  17657. return $1;
  17658. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17659. }, function($ctx1) {$ctx1.fill(self,"shallowCopy",{newCollection:newCollection},$globals.SequenceableCollection)});
  17660. //>>excludeEnd("ctx");
  17661. },
  17662. //>>excludeStart("ide", pragmas.excludeIdeData);
  17663. args: [],
  17664. source: "shallowCopy\x0a\x09| newCollection |\x0a\x09newCollection := self class new: self size.\x0a\x09self withIndexDo: [ :each :index |\x0a\x09\x09newCollection at: index put: each ].\x0a\x09^ newCollection",
  17665. referencedClasses: [],
  17666. //>>excludeEnd("ide");
  17667. messageSends: ["new:", "class", "size", "withIndexDo:", "at:put:"]
  17668. }),
  17669. $globals.SequenceableCollection);
  17670. $core.addMethod(
  17671. $core.method({
  17672. selector: "stream",
  17673. protocol: 'streaming',
  17674. fn: function (){
  17675. var self=this;
  17676. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17677. return $core.withContext(function($ctx1) {
  17678. //>>excludeEnd("ctx");
  17679. var $1;
  17680. $1=self._newStream();
  17681. return $1;
  17682. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17683. }, function($ctx1) {$ctx1.fill(self,"stream",{},$globals.SequenceableCollection)});
  17684. //>>excludeEnd("ctx");
  17685. },
  17686. //>>excludeStart("ide", pragmas.excludeIdeData);
  17687. args: [],
  17688. source: "stream\x0a\x09^ self newStream",
  17689. referencedClasses: [],
  17690. //>>excludeEnd("ide");
  17691. messageSends: ["newStream"]
  17692. }),
  17693. $globals.SequenceableCollection);
  17694. $core.addMethod(
  17695. $core.method({
  17696. selector: "streamClass",
  17697. protocol: 'streaming',
  17698. fn: function (){
  17699. var self=this;
  17700. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17701. return $core.withContext(function($ctx1) {
  17702. //>>excludeEnd("ctx");
  17703. var $1;
  17704. $1=$recv(self._class())._streamClass();
  17705. return $1;
  17706. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17707. }, function($ctx1) {$ctx1.fill(self,"streamClass",{},$globals.SequenceableCollection)});
  17708. //>>excludeEnd("ctx");
  17709. },
  17710. //>>excludeStart("ide", pragmas.excludeIdeData);
  17711. args: [],
  17712. source: "streamClass\x0a\x09^ self class streamClass",
  17713. referencedClasses: [],
  17714. //>>excludeEnd("ide");
  17715. messageSends: ["streamClass", "class"]
  17716. }),
  17717. $globals.SequenceableCollection);
  17718. $core.addMethod(
  17719. $core.method({
  17720. selector: "third",
  17721. protocol: 'accessing',
  17722. fn: function (){
  17723. var self=this;
  17724. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17725. return $core.withContext(function($ctx1) {
  17726. //>>excludeEnd("ctx");
  17727. var $1;
  17728. $1=self._at_((3));
  17729. return $1;
  17730. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17731. }, function($ctx1) {$ctx1.fill(self,"third",{},$globals.SequenceableCollection)});
  17732. //>>excludeEnd("ctx");
  17733. },
  17734. //>>excludeStart("ide", pragmas.excludeIdeData);
  17735. args: [],
  17736. source: "third\x0a\x09^ self at: 3",
  17737. referencedClasses: [],
  17738. //>>excludeEnd("ide");
  17739. messageSends: ["at:"]
  17740. }),
  17741. $globals.SequenceableCollection);
  17742. $core.addMethod(
  17743. $core.method({
  17744. selector: "with:do:",
  17745. protocol: 'enumerating',
  17746. fn: function (anotherCollection,aBlock){
  17747. var self=this;
  17748. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17749. return $core.withContext(function($ctx1) {
  17750. //>>excludeEnd("ctx");
  17751. self = self._numericallyIndexable();
  17752. anotherCollection = anotherCollection._numericallyIndexable();
  17753. for(var i=0; i<self.length; i++) {
  17754. aBlock._value_value_(self[i], anotherCollection[i]);
  17755. }
  17756. ;
  17757. return self;
  17758. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17759. }, function($ctx1) {$ctx1.fill(self,"with:do:",{anotherCollection:anotherCollection,aBlock:aBlock},$globals.SequenceableCollection)});
  17760. //>>excludeEnd("ctx");
  17761. },
  17762. //>>excludeStart("ide", pragmas.excludeIdeData);
  17763. args: ["anotherCollection", "aBlock"],
  17764. source: "with: anotherCollection do: aBlock\x0a\x09<\x0a\x09\x09self = self._numericallyIndexable();\x0a\x09\x09anotherCollection = anotherCollection._numericallyIndexable();\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>",
  17765. referencedClasses: [],
  17766. //>>excludeEnd("ide");
  17767. messageSends: []
  17768. }),
  17769. $globals.SequenceableCollection);
  17770. $core.addMethod(
  17771. $core.method({
  17772. selector: "withIndexDo:",
  17773. protocol: 'enumerating',
  17774. fn: function (aBlock){
  17775. var self=this;
  17776. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17777. return $core.withContext(function($ctx1) {
  17778. //>>excludeEnd("ctx");
  17779. self = self._numericallyIndexable();
  17780. for(var i=0; i < self.length; i++) {
  17781. aBlock._value_value_(self[i], i+1);
  17782. }
  17783. ;
  17784. return self;
  17785. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17786. }, function($ctx1) {$ctx1.fill(self,"withIndexDo:",{aBlock:aBlock},$globals.SequenceableCollection)});
  17787. //>>excludeEnd("ctx");
  17788. },
  17789. //>>excludeStart("ide", pragmas.excludeIdeData);
  17790. args: ["aBlock"],
  17791. source: "withIndexDo: aBlock\x0a\x09<\x0a\x09\x09self = self._numericallyIndexable();\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>",
  17792. referencedClasses: [],
  17793. //>>excludeEnd("ide");
  17794. messageSends: []
  17795. }),
  17796. $globals.SequenceableCollection);
  17797. $core.addMethod(
  17798. $core.method({
  17799. selector: "writeStream",
  17800. protocol: 'streaming',
  17801. fn: function (){
  17802. var self=this;
  17803. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17804. return $core.withContext(function($ctx1) {
  17805. //>>excludeEnd("ctx");
  17806. var $1;
  17807. $1=self._stream();
  17808. return $1;
  17809. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17810. }, function($ctx1) {$ctx1.fill(self,"writeStream",{},$globals.SequenceableCollection)});
  17811. //>>excludeEnd("ctx");
  17812. },
  17813. //>>excludeStart("ide", pragmas.excludeIdeData);
  17814. args: [],
  17815. source: "writeStream\x0a\x09\x22For Pharo compatibility\x22\x0a\x09\x0a\x09^ self stream",
  17816. referencedClasses: [],
  17817. //>>excludeEnd("ide");
  17818. messageSends: ["stream"]
  17819. }),
  17820. $globals.SequenceableCollection);
  17821. $core.addMethod(
  17822. $core.method({
  17823. selector: "streamClass",
  17824. protocol: 'accessing',
  17825. fn: function (){
  17826. var self=this;
  17827. function $Stream(){return $globals.Stream||(typeof Stream=="undefined"?nil:Stream)}
  17828. return $Stream();
  17829. },
  17830. //>>excludeStart("ide", pragmas.excludeIdeData);
  17831. args: [],
  17832. source: "streamClass\x0a\x09\x09^ Stream",
  17833. referencedClasses: ["Stream"],
  17834. //>>excludeEnd("ide");
  17835. messageSends: []
  17836. }),
  17837. $globals.SequenceableCollection.klass);
  17838. $core.addMethod(
  17839. $core.method({
  17840. selector: "streamContents:",
  17841. protocol: 'streaming',
  17842. fn: function (aBlock){
  17843. var self=this;
  17844. var stream;
  17845. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17846. return $core.withContext(function($ctx1) {
  17847. //>>excludeEnd("ctx");
  17848. var $1;
  17849. stream=$recv(self._streamClass())._on_(self._new());
  17850. $recv(aBlock)._value_(stream);
  17851. $1=$recv(stream)._contents();
  17852. return $1;
  17853. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17854. }, function($ctx1) {$ctx1.fill(self,"streamContents:",{aBlock:aBlock,stream:stream},$globals.SequenceableCollection.klass)});
  17855. //>>excludeEnd("ctx");
  17856. },
  17857. //>>excludeStart("ide", pragmas.excludeIdeData);
  17858. args: ["aBlock"],
  17859. source: "streamContents: aBlock\x0a\x09| stream |\x0a\x09stream := (self streamClass on: self new).\x0a\x09aBlock value: stream.\x0a\x09^ stream contents",
  17860. referencedClasses: [],
  17861. //>>excludeEnd("ide");
  17862. messageSends: ["on:", "streamClass", "new", "value:", "contents"]
  17863. }),
  17864. $globals.SequenceableCollection.klass);
  17865. $core.addClass('Array', $globals.SequenceableCollection, [], 'Kernel-Collections');
  17866. //>>excludeStart("ide", pragmas.excludeIdeData);
  17867. $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`.";
  17868. //>>excludeEnd("ide");
  17869. $core.addMethod(
  17870. $core.method({
  17871. selector: "add:",
  17872. protocol: 'adding/removing',
  17873. fn: function (anObject){
  17874. var self=this;
  17875. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17876. return $core.withContext(function($ctx1) {
  17877. //>>excludeEnd("ctx");
  17878. self.push(anObject); return anObject;;
  17879. return self;
  17880. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17881. }, function($ctx1) {$ctx1.fill(self,"add:",{anObject:anObject},$globals.Array)});
  17882. //>>excludeEnd("ctx");
  17883. },
  17884. //>>excludeStart("ide", pragmas.excludeIdeData);
  17885. args: ["anObject"],
  17886. source: "add: anObject\x0a\x09<self.push(anObject); return anObject;>",
  17887. referencedClasses: [],
  17888. //>>excludeEnd("ide");
  17889. messageSends: []
  17890. }),
  17891. $globals.Array);
  17892. $core.addMethod(
  17893. $core.method({
  17894. selector: "addFirst:",
  17895. protocol: 'adding/removing',
  17896. fn: function (anObject){
  17897. var self=this;
  17898. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17899. return $core.withContext(function($ctx1) {
  17900. //>>excludeEnd("ctx");
  17901. self.unshift(anObject); return anObject;;
  17902. return self;
  17903. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17904. }, function($ctx1) {$ctx1.fill(self,"addFirst:",{anObject:anObject},$globals.Array)});
  17905. //>>excludeEnd("ctx");
  17906. },
  17907. //>>excludeStart("ide", pragmas.excludeIdeData);
  17908. args: ["anObject"],
  17909. source: "addFirst: anObject\x0a\x09<self.unshift(anObject); return anObject;>",
  17910. referencedClasses: [],
  17911. //>>excludeEnd("ide");
  17912. messageSends: []
  17913. }),
  17914. $globals.Array);
  17915. $core.addMethod(
  17916. $core.method({
  17917. selector: "asJavascript",
  17918. protocol: 'converting',
  17919. fn: function (){
  17920. var self=this;
  17921. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17922. return $core.withContext(function($ctx1) {
  17923. //>>excludeEnd("ctx");
  17924. var $1;
  17925. $1=$recv("[".__comma($recv(self._collect_((function(each){
  17926. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17927. return $core.withContext(function($ctx2) {
  17928. //>>excludeEnd("ctx");
  17929. return $recv(each)._asJavascript();
  17930. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17931. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  17932. //>>excludeEnd("ctx");
  17933. })))._join_(", "))).__comma("]");
  17934. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17935. $ctx1.sendIdx[","]=1;
  17936. //>>excludeEnd("ctx");
  17937. return $1;
  17938. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17939. }, function($ctx1) {$ctx1.fill(self,"asJavascript",{},$globals.Array)});
  17940. //>>excludeEnd("ctx");
  17941. },
  17942. //>>excludeStart("ide", pragmas.excludeIdeData);
  17943. args: [],
  17944. source: "asJavascript\x0a\x09^ '[', ((self collect: [:each | each asJavascript ]) join: ', '), ']'",
  17945. referencedClasses: [],
  17946. //>>excludeEnd("ide");
  17947. messageSends: [",", "join:", "collect:", "asJavascript"]
  17948. }),
  17949. $globals.Array);
  17950. $core.addMethod(
  17951. $core.method({
  17952. selector: "at:ifAbsent:",
  17953. protocol: 'accessing',
  17954. fn: function (anIndex,aBlock){
  17955. var self=this;
  17956. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17957. return $core.withContext(function($ctx1) {
  17958. //>>excludeEnd("ctx");
  17959. return anIndex >= 1 && anIndex <= self.length
  17960. ? self[anIndex - 1]
  17961. : aBlock._value()
  17962. ;
  17963. return self;
  17964. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17965. }, function($ctx1) {$ctx1.fill(self,"at:ifAbsent:",{anIndex:anIndex,aBlock:aBlock},$globals.Array)});
  17966. //>>excludeEnd("ctx");
  17967. },
  17968. //>>excludeStart("ide", pragmas.excludeIdeData);
  17969. args: ["anIndex", "aBlock"],
  17970. source: "at: anIndex ifAbsent: aBlock\x0a\x09<\x0a\x09\x09return anIndex >>= 1 && anIndex <= self.length\x0a\x09\x09\x09? self[anIndex - 1]\x0a\x09\x09\x09: aBlock._value()\x0a\x09>",
  17971. referencedClasses: [],
  17972. //>>excludeEnd("ide");
  17973. messageSends: []
  17974. }),
  17975. $globals.Array);
  17976. $core.addMethod(
  17977. $core.method({
  17978. selector: "at:ifPresent:ifAbsent:",
  17979. protocol: 'accessing',
  17980. fn: function (anIndex,aBlock,anotherBlock){
  17981. var self=this;
  17982. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17983. return $core.withContext(function($ctx1) {
  17984. //>>excludeEnd("ctx");
  17985. return anIndex >= 1 && anIndex <= self.length
  17986. ? aBlock._value_(self[anIndex - 1])
  17987. : anotherBlock._value()
  17988. ;
  17989. return self;
  17990. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  17991. }, function($ctx1) {$ctx1.fill(self,"at:ifPresent:ifAbsent:",{anIndex:anIndex,aBlock:aBlock,anotherBlock:anotherBlock},$globals.Array)});
  17992. //>>excludeEnd("ctx");
  17993. },
  17994. //>>excludeStart("ide", pragmas.excludeIdeData);
  17995. args: ["anIndex", "aBlock", "anotherBlock"],
  17996. source: "at: anIndex ifPresent: aBlock ifAbsent: anotherBlock\x0a\x09<\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>",
  17997. referencedClasses: [],
  17998. //>>excludeEnd("ide");
  17999. messageSends: []
  18000. }),
  18001. $globals.Array);
  18002. $core.addMethod(
  18003. $core.method({
  18004. selector: "at:put:",
  18005. protocol: 'accessing',
  18006. fn: function (anIndex,anObject){
  18007. var self=this;
  18008. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  18009. return $core.withContext(function($ctx1) {
  18010. //>>excludeEnd("ctx");
  18011. return self[anIndex - 1] = anObject;
  18012. return self;
  18013. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  18014. }, function($ctx1) {$ctx1.fill(self,"at:put:",{anIndex:anIndex,anObject:anObject},$globals.Array)});
  18015. //>>excludeEnd("ctx");
  18016. },
  18017. //>>excludeStart("ide", pragmas.excludeIdeData);
  18018. args: ["anIndex", "anObject"],
  18019. source: "at: anIndex put: anObject\x0a\x09<return self[anIndex - 1] = anObject>",
  18020. referencedClasses: [],
  18021. //>>excludeEnd("ide");
  18022. messageSends: []
  18023. }),
  18024. $globals.Array);
  18025. $core.addMethod(
  18026. $core.method({
  18027. selector: "collect:",
  18028. protocol: 'enumerating',
  18029. fn: function (aBlock){
  18030. var self=this;
  18031. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  18032. return $core.withContext(function($ctx1) {
  18033. //>>excludeEnd("ctx");
  18034. return self.map(function(each) {return aBlock._value_(each)});
  18035. return self;
  18036. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  18037. }, function($ctx1) {$ctx1.fill(self,"collect:",{aBlock:aBlock},$globals.Array)});
  18038. //>>excludeEnd("ctx");
  18039. },
  18040. //>>excludeStart("ide", pragmas.excludeIdeData);
  18041. args: ["aBlock"],
  18042. source: "collect: aBlock\x0a\x09\x22Optimized version\x22\x0a\x09\x0a\x09<return self.map(function(each) {return aBlock._value_(each)})>",
  18043. referencedClasses: [],
  18044. //>>excludeEnd("ide");
  18045. messageSends: []
  18046. }),
  18047. $globals.Array);
  18048. $core.addMethod(
  18049. $core.method({
  18050. selector: "join:",
  18051. protocol: 'enumerating',
  18052. fn: function (aString){
  18053. var self=this;
  18054. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  18055. return $core.withContext(function($ctx1) {
  18056. //>>excludeEnd("ctx");
  18057. return self.join(aString);
  18058. return self;
  18059. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  18060. }, function($ctx1) {$ctx1.fill(self,"join:",{aString:aString},$globals.Array)});
  18061. //>>excludeEnd("ctx");
  18062. },
  18063. //>>excludeStart("ide", pragmas.excludeIdeData);
  18064. args: ["aString"],
  18065. source: "join: aString\x0a\x09<return self.join(aString)>",
  18066. referencedClasses: [],
  18067. //>>excludeEnd("ide");
  18068. messageSends: []
  18069. }),
  18070. $globals.Array);
  18071. $core.addMethod(
  18072. $core.method({
  18073. selector: "numericallyIndexable",
  18074. protocol: 'private',
  18075. fn: function (){
  18076. var self=this;
  18077. return self;
  18078. },
  18079. //>>excludeStart("ide", pragmas.excludeIdeData);
  18080. args: [],
  18081. source: "numericallyIndexable\x0a\x09^ self",
  18082. referencedClasses: [],
  18083. //>>excludeEnd("ide");
  18084. messageSends: []
  18085. }),
  18086. $globals.Array);
  18087. $core.addMethod(
  18088. $core.method({
  18089. selector: "printOn:",
  18090. protocol: 'printing',
  18091. fn: function (aStream){
  18092. var self=this;
  18093. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  18094. return $core.withContext(function($ctx1) {
  18095. //>>excludeEnd("ctx");
  18096. (
  18097. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  18098. $ctx1.supercall = true,
  18099. //>>excludeEnd("ctx");
  18100. $globals.Array.superclass.fn.prototype._printOn_.apply($recv(self), [aStream]));
  18101. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  18102. $ctx1.supercall = false;
  18103. //>>excludeEnd("ctx");;
  18104. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  18105. $ctx1.sendIdx["printOn:"]=1;
  18106. //>>excludeEnd("ctx");
  18107. $recv(aStream)._nextPutAll_(" (");
  18108. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  18109. $ctx1.sendIdx["nextPutAll:"]=1;
  18110. //>>excludeEnd("ctx");
  18111. self._do_separatedBy_((function(each){
  18112. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  18113. return $core.withContext(function($ctx2) {
  18114. //>>excludeEnd("ctx");
  18115. return $recv(each)._printOn_(aStream);
  18116. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  18117. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  18118. //>>excludeEnd("ctx");
  18119. }),(function(){
  18120. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  18121. return $core.withContext(function($ctx2) {
  18122. //>>excludeEnd("ctx");
  18123. return $recv(aStream)._nextPutAll_(" ");
  18124. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  18125. $ctx2.sendIdx["nextPutAll:"]=2;
  18126. //>>excludeEnd("ctx");
  18127. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  18128. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
  18129. //>>excludeEnd("ctx");
  18130. }));
  18131. $recv(aStream)._nextPutAll_(")");
  18132. return self;
  18133. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  18134. }, function($ctx1) {$ctx1.fill(self,"printOn:",{aStream:aStream},$globals.Array)});
  18135. //>>excludeEnd("ctx");
  18136. },
  18137. //>>excludeStart("ide", pragmas.excludeIdeData);
  18138. args: ["aStream"],
  18139. 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: ')'",
  18140. referencedClasses: [],
  18141. //>>excludeEnd("ide");
  18142. messageSends: ["printOn:", "nextPutAll:", "do:separatedBy:"]
  18143. }),
  18144. $globals.Array);
  18145. $core.addMethod(
  18146. $core.method({
  18147. selector: "remove:ifAbsent:",
  18148. protocol: 'adding/removing',
  18149. fn: function (anObject,aBlock){
  18150. var self=this;
  18151. var index;
  18152. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  18153. return $core.withContext(function($ctx1) {
  18154. //>>excludeEnd("ctx");
  18155. var $2,$1;
  18156. index=self._indexOf_ifAbsent_(anObject,(function(){
  18157. return (0);
  18158. }));
  18159. $2=$recv(index).__eq((0));
  18160. if($core.assert($2)){
  18161. $1=$recv(aBlock)._value();
  18162. } else {
  18163. self._removeIndex_(index);
  18164. $1=anObject;
  18165. };
  18166. return $1;
  18167. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  18168. }, function($ctx1) {$ctx1.fill(self,"remove:ifAbsent:",{anObject:anObject,aBlock:aBlock,index:index},$globals.Array)});
  18169. //>>excludeEnd("ctx");
  18170. },
  18171. //>>excludeStart("ide", pragmas.excludeIdeData);
  18172. args: ["anObject", "aBlock"],
  18173. 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 ]",
  18174. referencedClasses: [],
  18175. //>>excludeEnd("ide");
  18176. messageSends: ["indexOf:ifAbsent:", "ifFalse:ifTrue:", "=", "removeIndex:", "value"]
  18177. }),
  18178. $globals.Array);
  18179. $core.addMethod(
  18180. $core.method({
  18181. selector: "removeAll",
  18182. protocol: 'adding/removing',
  18183. fn: function (){
  18184. var self=this;
  18185. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  18186. return $core.withContext(function($ctx1) {
  18187. //>>excludeEnd("ctx");
  18188. self.length = 0;
  18189. return self;
  18190. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  18191. }, function($ctx1) {$ctx1.fill(self,"removeAll",{},$globals.Array)});
  18192. //>>excludeEnd("ctx");
  18193. },
  18194. //>>excludeStart("ide", pragmas.excludeIdeData);
  18195. args: [],
  18196. source: "removeAll\x0a\x09<self.length = 0>",
  18197. referencedClasses: [],
  18198. //>>excludeEnd("ide");
  18199. messageSends: []
  18200. }),
  18201. $globals.Array);
  18202. $core.addMethod(
  18203. $core.method({
  18204. selector: "removeFrom:to:",
  18205. protocol: 'adding/removing',
  18206. fn: function (aNumber,anotherNumber){
  18207. var self=this;
  18208. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  18209. return $core.withContext(function($ctx1) {
  18210. //>>excludeEnd("ctx");
  18211. self.splice(aNumber -1, anotherNumber - aNumber + 1);
  18212. return self;
  18213. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  18214. }, function($ctx1) {$ctx1.fill(self,"removeFrom:to:",{aNumber:aNumber,anotherNumber:anotherNumber},$globals.Array)});
  18215. //>>excludeEnd("ctx");
  18216. },
  18217. //>>excludeStart("ide", pragmas.excludeIdeData);
  18218. args: ["aNumber", "anotherNumber"],
  18219. source: "removeFrom: aNumber to: anotherNumber\x0a\x09<self.splice(aNumber -1, anotherNumber - aNumber + 1)>",
  18220. referencedClasses: [],
  18221. //>>excludeEnd("ide");
  18222. messageSends: []
  18223. }),
  18224. $globals.Array);
  18225. $core.addMethod(
  18226. $core.method({
  18227. selector: "removeIndex:",
  18228. protocol: 'adding/removing',
  18229. fn: function (anInteger){
  18230. var self=this;
  18231. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  18232. return $core.withContext(function($ctx1) {
  18233. //>>excludeEnd("ctx");
  18234. self.splice(anInteger - 1, 1);
  18235. return self;
  18236. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  18237. }, function($ctx1) {$ctx1.fill(self,"removeIndex:",{anInteger:anInteger},$globals.Array)});
  18238. //>>excludeEnd("ctx");
  18239. },
  18240. //>>excludeStart("ide", pragmas.excludeIdeData);
  18241. args: ["anInteger"],
  18242. source: "removeIndex: anInteger\x0a\x09<self.splice(anInteger - 1, 1)>",
  18243. referencedClasses: [],
  18244. //>>excludeEnd("ide");
  18245. messageSends: []
  18246. }),
  18247. $globals.Array);
  18248. $core.addMethod(
  18249. $core.method({
  18250. selector: "removeLast",
  18251. protocol: 'adding/removing',
  18252. fn: function (){
  18253. var self=this;
  18254. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  18255. return $core.withContext(function($ctx1) {
  18256. //>>excludeEnd("ctx");
  18257. return self.pop();;
  18258. return self;
  18259. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  18260. }, function($ctx1) {$ctx1.fill(self,"removeLast",{},$globals.Array)});
  18261. //>>excludeEnd("ctx");
  18262. },
  18263. //>>excludeStart("ide", pragmas.excludeIdeData);
  18264. args: [],
  18265. source: "removeLast\x0a\x09<return self.pop();>",
  18266. referencedClasses: [],
  18267. //>>excludeEnd("ide");
  18268. messageSends: []
  18269. }),
  18270. $globals.Array);
  18271. $core.addMethod(
  18272. $core.method({
  18273. selector: "reversed",
  18274. protocol: 'converting',
  18275. fn: function (){
  18276. var self=this;
  18277. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  18278. return $core.withContext(function($ctx1) {
  18279. //>>excludeEnd("ctx");
  18280. return self._copy().reverse();
  18281. return self;
  18282. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  18283. }, function($ctx1) {$ctx1.fill(self,"reversed",{},$globals.Array)});
  18284. //>>excludeEnd("ctx");
  18285. },
  18286. //>>excludeStart("ide", pragmas.excludeIdeData);
  18287. args: [],
  18288. source: "reversed\x0a\x09<return self._copy().reverse()>",
  18289. referencedClasses: [],
  18290. //>>excludeEnd("ide");
  18291. messageSends: []
  18292. }),
  18293. $globals.Array);
  18294. $core.addMethod(
  18295. $core.method({
  18296. selector: "select:",
  18297. protocol: 'enumerating',
  18298. fn: function (aBlock){
  18299. var self=this;
  18300. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  18301. return $core.withContext(function($ctx1) {
  18302. //>>excludeEnd("ctx");
  18303. var result = self.klass._new();
  18304. for(var i=0; i<self.length; i++) {
  18305. if(aBlock._value_(self[i])) {
  18306. result.push(self[i]);
  18307. }
  18308. }
  18309. return result;
  18310. ;
  18311. return self;
  18312. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  18313. }, function($ctx1) {$ctx1.fill(self,"select:",{aBlock:aBlock},$globals.Array)});
  18314. //>>excludeEnd("ctx");
  18315. },
  18316. //>>excludeStart("ide", pragmas.excludeIdeData);
  18317. args: ["aBlock"],
  18318. source: "select: aBlock\x0a\x09\x22Optimized version\x22\x0a\x09\x0a\x09<\x0a\x09\x09var result = self.klass._new();\x0a\x09\x09for(var i=0; i<self.length; i++) {\x0a\x09\x09\x09if(aBlock._value_(self[i])) {\x0a\x09\x09\x09\x09result.push(self[i]);\x0a\x09\x09\x09}\x0a\x09\x09}\x0a\x09\x09return result;\x0a\x09>",
  18319. referencedClasses: [],
  18320. //>>excludeEnd("ide");
  18321. messageSends: []
  18322. }),
  18323. $globals.Array);
  18324. $core.addMethod(
  18325. $core.method({
  18326. selector: "size",
  18327. protocol: 'accessing',
  18328. fn: function (){
  18329. var self=this;
  18330. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  18331. return $core.withContext(function($ctx1) {
  18332. //>>excludeEnd("ctx");
  18333. return self.length;
  18334. return self;
  18335. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  18336. }, function($ctx1) {$ctx1.fill(self,"size",{},$globals.Array)});
  18337. //>>excludeEnd("ctx");
  18338. },
  18339. //>>excludeStart("ide", pragmas.excludeIdeData);
  18340. args: [],
  18341. source: "size\x0a\x09<return self.length>",
  18342. referencedClasses: [],
  18343. //>>excludeEnd("ide");
  18344. messageSends: []
  18345. }),
  18346. $globals.Array);
  18347. $core.addMethod(
  18348. $core.method({
  18349. selector: "sort",
  18350. protocol: 'enumerating',
  18351. fn: function (){
  18352. var self=this;
  18353. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  18354. return $core.withContext(function($ctx1) {
  18355. //>>excludeEnd("ctx");
  18356. var $1;
  18357. $1=self._sort_((function(a,b){
  18358. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  18359. return $core.withContext(function($ctx2) {
  18360. //>>excludeEnd("ctx");
  18361. return $recv(a).__lt(b);
  18362. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  18363. }, function($ctx2) {$ctx2.fillBlock({a:a,b:b},$ctx1,1)});
  18364. //>>excludeEnd("ctx");
  18365. }));
  18366. return $1;
  18367. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  18368. }, function($ctx1) {$ctx1.fill(self,"sort",{},$globals.Array)});
  18369. //>>excludeEnd("ctx");
  18370. },
  18371. //>>excludeStart("ide", pragmas.excludeIdeData);
  18372. args: [],
  18373. source: "sort\x0a\x09^ self sort: [ :a :b | a < b ]",
  18374. referencedClasses: [],
  18375. //>>excludeEnd("ide");
  18376. messageSends: ["sort:", "<"]
  18377. }),
  18378. $globals.Array);
  18379. $core.addMethod(
  18380. $core.method({
  18381. selector: "sort:",
  18382. protocol: 'enumerating',
  18383. fn: function (aBlock){
  18384. var self=this;
  18385. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  18386. return $core.withContext(function($ctx1) {
  18387. //>>excludeEnd("ctx");
  18388. return self.sort(function(a, b) {
  18389. if(aBlock._value_value_(a,b)) {return -1} else {return 1}
  18390. })
  18391. ;
  18392. return self;
  18393. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  18394. }, function($ctx1) {$ctx1.fill(self,"sort:",{aBlock:aBlock},$globals.Array)});
  18395. //>>excludeEnd("ctx");
  18396. },
  18397. //>>excludeStart("ide", pragmas.excludeIdeData);
  18398. args: ["aBlock"],
  18399. source: "sort: aBlock\x0a\x09<\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>",
  18400. referencedClasses: [],
  18401. //>>excludeEnd("ide");
  18402. messageSends: []
  18403. }),
  18404. $globals.Array);
  18405. $core.addMethod(
  18406. $core.method({
  18407. selector: "sorted",
  18408. protocol: 'enumerating',
  18409. fn: function (){
  18410. var self=this;
  18411. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  18412. return $core.withContext(function($ctx1) {
  18413. //>>excludeEnd("ctx");
  18414. var $1;
  18415. $1=$recv(self._copy())._sort();
  18416. return $1;
  18417. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  18418. }, function($ctx1) {$ctx1.fill(self,"sorted",{},$globals.Array)});
  18419. //>>excludeEnd("ctx");
  18420. },
  18421. //>>excludeStart("ide", pragmas.excludeIdeData);
  18422. args: [],
  18423. source: "sorted\x0a\x09^ self copy sort",
  18424. referencedClasses: [],
  18425. //>>excludeEnd("ide");
  18426. messageSends: ["sort", "copy"]
  18427. }),
  18428. $globals.Array);
  18429. $core.addMethod(
  18430. $core.method({
  18431. selector: "sorted:",
  18432. protocol: 'enumerating',
  18433. fn: function (aBlock){
  18434. var self=this;
  18435. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  18436. return $core.withContext(function($ctx1) {
  18437. //>>excludeEnd("ctx");
  18438. var $1;
  18439. $1=$recv(self._copy())._sort_(aBlock);
  18440. return $1;
  18441. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  18442. }, function($ctx1) {$ctx1.fill(self,"sorted:",{aBlock:aBlock},$globals.Array)});
  18443. //>>excludeEnd("ctx");
  18444. },
  18445. //>>excludeStart("ide", pragmas.excludeIdeData);
  18446. args: ["aBlock"],
  18447. source: "sorted: aBlock\x0a\x09^ self copy sort: aBlock",
  18448. referencedClasses: [],
  18449. //>>excludeEnd("ide");
  18450. messageSends: ["sort:", "copy"]
  18451. }),
  18452. $globals.Array);
  18453. $core.addMethod(
  18454. $core.method({
  18455. selector: "new:",
  18456. protocol: 'instance creation',
  18457. fn: function (anInteger){
  18458. var self=this;
  18459. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  18460. return $core.withContext(function($ctx1) {
  18461. //>>excludeEnd("ctx");
  18462. return new Array(anInteger);
  18463. return self;
  18464. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  18465. }, function($ctx1) {$ctx1.fill(self,"new:",{anInteger:anInteger},$globals.Array.klass)});
  18466. //>>excludeEnd("ctx");
  18467. },
  18468. //>>excludeStart("ide", pragmas.excludeIdeData);
  18469. args: ["anInteger"],
  18470. source: "new: anInteger\x0a\x09<return new Array(anInteger)>",
  18471. referencedClasses: [],
  18472. //>>excludeEnd("ide");
  18473. messageSends: []
  18474. }),
  18475. $globals.Array.klass);
  18476. $core.addMethod(
  18477. $core.method({
  18478. selector: "with:",
  18479. protocol: 'instance creation',
  18480. fn: function (anObject){
  18481. var self=this;
  18482. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  18483. return $core.withContext(function($ctx1) {
  18484. //>>excludeEnd("ctx");
  18485. var $2,$3,$1;
  18486. $2=self._new_((1));
  18487. $recv($2)._at_put_((1),anObject);
  18488. $3=$recv($2)._yourself();
  18489. $1=$3;
  18490. return $1;
  18491. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  18492. }, function($ctx1) {$ctx1.fill(self,"with:",{anObject:anObject},$globals.Array.klass)});
  18493. //>>excludeEnd("ctx");
  18494. },
  18495. //>>excludeStart("ide", pragmas.excludeIdeData);
  18496. args: ["anObject"],
  18497. source: "with: anObject\x0a\x09\x09^ (self new: 1)\x0a\x09\x09at: 1 put: anObject;\x0a\x09\x09yourself",
  18498. referencedClasses: [],
  18499. //>>excludeEnd("ide");
  18500. messageSends: ["at:put:", "new:", "yourself"]
  18501. }),
  18502. $globals.Array.klass);
  18503. $core.addMethod(
  18504. $core.method({
  18505. selector: "with:with:",
  18506. protocol: 'instance creation',
  18507. fn: function (anObject,anObject2){
  18508. var self=this;
  18509. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  18510. return $core.withContext(function($ctx1) {
  18511. //>>excludeEnd("ctx");
  18512. var $2,$3,$1;
  18513. $2=self._new_((2));
  18514. $recv($2)._at_put_((1),anObject);
  18515. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  18516. $ctx1.sendIdx["at:put:"]=1;
  18517. //>>excludeEnd("ctx");
  18518. $recv($2)._at_put_((2),anObject2);
  18519. $3=$recv($2)._yourself();
  18520. $1=$3;
  18521. return $1;
  18522. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  18523. }, function($ctx1) {$ctx1.fill(self,"with:with:",{anObject:anObject,anObject2:anObject2},$globals.Array.klass)});
  18524. //>>excludeEnd("ctx");
  18525. },
  18526. //>>excludeStart("ide", pragmas.excludeIdeData);
  18527. args: ["anObject", "anObject2"],
  18528. 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",
  18529. referencedClasses: [],
  18530. //>>excludeEnd("ide");
  18531. messageSends: ["at:put:", "new:", "yourself"]
  18532. }),
  18533. $globals.Array.klass);
  18534. $core.addMethod(
  18535. $core.method({
  18536. selector: "with:with:with:",
  18537. protocol: 'instance creation',
  18538. fn: function (anObject,anObject2,anObject3){
  18539. var self=this;
  18540. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  18541. return $core.withContext(function($ctx1) {
  18542. //>>excludeEnd("ctx");
  18543. var $2,$3,$1;
  18544. $2=self._new_((3));
  18545. $recv($2)._at_put_((1),anObject);
  18546. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  18547. $ctx1.sendIdx["at:put:"]=1;
  18548. //>>excludeEnd("ctx");
  18549. $recv($2)._at_put_((2),anObject2);
  18550. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  18551. $ctx1.sendIdx["at:put:"]=2;
  18552. //>>excludeEnd("ctx");
  18553. $recv($2)._at_put_((3),anObject3);
  18554. $3=$recv($2)._yourself();
  18555. $1=$3;
  18556. return $1;
  18557. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  18558. }, function($ctx1) {$ctx1.fill(self,"with:with:with:",{anObject:anObject,anObject2:anObject2,anObject3:anObject3},$globals.Array.klass)});
  18559. //>>excludeEnd("ctx");
  18560. },
  18561. //>>excludeStart("ide", pragmas.excludeIdeData);
  18562. args: ["anObject", "anObject2", "anObject3"],
  18563. 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",
  18564. referencedClasses: [],
  18565. //>>excludeEnd("ide");
  18566. messageSends: ["at:put:", "new:", "yourself"]
  18567. }),
  18568. $globals.Array.klass);
  18569. $core.addMethod(
  18570. $core.method({
  18571. selector: "withAll:",
  18572. protocol: 'instance creation',
  18573. fn: function (aCollection){
  18574. var self=this;
  18575. var instance,index;
  18576. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  18577. return $core.withContext(function($ctx1) {
  18578. //>>excludeEnd("ctx");
  18579. var $1;
  18580. index=(1);
  18581. instance=self._new_($recv(aCollection)._size());
  18582. $recv(aCollection)._do_((function(each){
  18583. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  18584. return $core.withContext(function($ctx2) {
  18585. //>>excludeEnd("ctx");
  18586. $recv(instance)._at_put_(index,each);
  18587. index=$recv(index).__plus((1));
  18588. return index;
  18589. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  18590. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  18591. //>>excludeEnd("ctx");
  18592. }));
  18593. $1=instance;
  18594. return $1;
  18595. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  18596. }, function($ctx1) {$ctx1.fill(self,"withAll:",{aCollection:aCollection,instance:instance,index:index},$globals.Array.klass)});
  18597. //>>excludeEnd("ctx");
  18598. },
  18599. //>>excludeStart("ide", pragmas.excludeIdeData);
  18600. args: ["aCollection"],
  18601. 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",
  18602. referencedClasses: [],
  18603. //>>excludeEnd("ide");
  18604. messageSends: ["new:", "size", "do:", "at:put:", "+"]
  18605. }),
  18606. $globals.Array.klass);
  18607. $core.addClass('CharacterArray', $globals.SequenceableCollection, [], 'Kernel-Collections');
  18608. //>>excludeStart("ide", pragmas.excludeIdeData);
  18609. $globals.CharacterArray.comment="I am the abstract superclass of string-like collections.";
  18610. //>>excludeEnd("ide");
  18611. $core.addMethod(
  18612. $core.method({
  18613. selector: ",",
  18614. protocol: 'copying',
  18615. fn: function (aString){
  18616. var self=this;
  18617. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  18618. return $core.withContext(function($ctx1) {
  18619. //>>excludeEnd("ctx");
  18620. var $2,$1;
  18621. $2=self._asString();
  18622. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  18623. $ctx1.sendIdx["asString"]=1;
  18624. //>>excludeEnd("ctx");
  18625. $1=$recv($2).__comma($recv(aString)._asString());
  18626. return $1;
  18627. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  18628. }, function($ctx1) {$ctx1.fill(self,",",{aString:aString},$globals.CharacterArray)});
  18629. //>>excludeEnd("ctx");
  18630. },
  18631. //>>excludeStart("ide", pragmas.excludeIdeData);
  18632. args: ["aString"],
  18633. source: ", aString\x0a\x09^ self asString, aString asString",
  18634. referencedClasses: [],
  18635. //>>excludeEnd("ide");
  18636. messageSends: [",", "asString"]
  18637. }),
  18638. $globals.CharacterArray);
  18639. $core.addMethod(
  18640. $core.method({
  18641. selector: "add:",
  18642. protocol: 'adding/removing',
  18643. fn: function (anObject){
  18644. var self=this;
  18645. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  18646. return $core.withContext(function($ctx1) {
  18647. //>>excludeEnd("ctx");
  18648. self._errorReadOnly();
  18649. return self;
  18650. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  18651. }, function($ctx1) {$ctx1.fill(self,"add:",{anObject:anObject},$globals.CharacterArray)});
  18652. //>>excludeEnd("ctx");
  18653. },
  18654. //>>excludeStart("ide", pragmas.excludeIdeData);
  18655. args: ["anObject"],
  18656. source: "add: anObject\x0a\x09self errorReadOnly",
  18657. referencedClasses: [],
  18658. //>>excludeEnd("ide");
  18659. messageSends: ["errorReadOnly"]
  18660. }),
  18661. $globals.CharacterArray);
  18662. $core.addMethod(
  18663. $core.method({
  18664. selector: "asLowercase",
  18665. protocol: 'converting',
  18666. fn: function (){
  18667. var self=this;
  18668. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  18669. return $core.withContext(function($ctx1) {
  18670. //>>excludeEnd("ctx");
  18671. var $1;
  18672. $1=$recv(self._class())._fromString_($recv(self._asString())._asLowercase());
  18673. return $1;
  18674. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  18675. }, function($ctx1) {$ctx1.fill(self,"asLowercase",{},$globals.CharacterArray)});
  18676. //>>excludeEnd("ctx");
  18677. },
  18678. //>>excludeStart("ide", pragmas.excludeIdeData);
  18679. args: [],
  18680. source: "asLowercase\x0a\x09^ self class fromString: self asString asLowercase",
  18681. referencedClasses: [],
  18682. //>>excludeEnd("ide");
  18683. messageSends: ["fromString:", "class", "asLowercase", "asString"]
  18684. }),
  18685. $globals.CharacterArray);
  18686. $core.addMethod(
  18687. $core.method({
  18688. selector: "asNumber",
  18689. protocol: 'converting',
  18690. fn: function (){
  18691. var self=this;
  18692. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  18693. return $core.withContext(function($ctx1) {
  18694. //>>excludeEnd("ctx");
  18695. var $1;
  18696. $1=$recv(self._asString())._asNumber();
  18697. return $1;
  18698. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  18699. }, function($ctx1) {$ctx1.fill(self,"asNumber",{},$globals.CharacterArray)});
  18700. //>>excludeEnd("ctx");
  18701. },
  18702. //>>excludeStart("ide", pragmas.excludeIdeData);
  18703. args: [],
  18704. source: "asNumber\x0a\x09^ self asString asNumber",
  18705. referencedClasses: [],
  18706. //>>excludeEnd("ide");
  18707. messageSends: ["asNumber", "asString"]
  18708. }),
  18709. $globals.CharacterArray);
  18710. $core.addMethod(
  18711. $core.method({
  18712. selector: "asString",
  18713. protocol: 'converting',
  18714. fn: function (){
  18715. var self=this;
  18716. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  18717. return $core.withContext(function($ctx1) {
  18718. //>>excludeEnd("ctx");
  18719. var $1;
  18720. $1=self._subclassResponsibility();
  18721. return $1;
  18722. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  18723. }, function($ctx1) {$ctx1.fill(self,"asString",{},$globals.CharacterArray)});
  18724. //>>excludeEnd("ctx");
  18725. },
  18726. //>>excludeStart("ide", pragmas.excludeIdeData);
  18727. args: [],
  18728. source: "asString\x0a\x09^ self subclassResponsibility",
  18729. referencedClasses: [],
  18730. //>>excludeEnd("ide");
  18731. messageSends: ["subclassResponsibility"]
  18732. }),
  18733. $globals.CharacterArray);
  18734. $core.addMethod(
  18735. $core.method({
  18736. selector: "asSymbol",
  18737. protocol: 'converting',
  18738. fn: function (){
  18739. var self=this;
  18740. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  18741. return $core.withContext(function($ctx1) {
  18742. //>>excludeEnd("ctx");
  18743. var $1;
  18744. $1=self._asString();
  18745. return $1;
  18746. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  18747. }, function($ctx1) {$ctx1.fill(self,"asSymbol",{},$globals.CharacterArray)});
  18748. //>>excludeEnd("ctx");
  18749. },
  18750. //>>excludeStart("ide", pragmas.excludeIdeData);
  18751. args: [],
  18752. source: "asSymbol\x0a\x09^ self asString",
  18753. referencedClasses: [],
  18754. //>>excludeEnd("ide");
  18755. messageSends: ["asString"]
  18756. }),
  18757. $globals.CharacterArray);
  18758. $core.addMethod(
  18759. $core.method({
  18760. selector: "asUppercase",
  18761. protocol: 'converting',
  18762. fn: function (){
  18763. var self=this;
  18764. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  18765. return $core.withContext(function($ctx1) {
  18766. //>>excludeEnd("ctx");
  18767. var $1;
  18768. $1=$recv(self._class())._fromString_($recv(self._asString())._asUppercase());
  18769. return $1;
  18770. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  18771. }, function($ctx1) {$ctx1.fill(self,"asUppercase",{},$globals.CharacterArray)});
  18772. //>>excludeEnd("ctx");
  18773. },
  18774. //>>excludeStart("ide", pragmas.excludeIdeData);
  18775. args: [],
  18776. source: "asUppercase\x0a\x09^ self class fromString: self asString asUppercase",
  18777. referencedClasses: [],
  18778. //>>excludeEnd("ide");
  18779. messageSends: ["fromString:", "class", "asUppercase", "asString"]
  18780. }),
  18781. $globals.CharacterArray);
  18782. $core.addMethod(
  18783. $core.method({
  18784. selector: "at:put:",
  18785. protocol: 'accessing',
  18786. fn: function (anIndex,anObject){
  18787. var self=this;
  18788. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  18789. return $core.withContext(function($ctx1) {
  18790. //>>excludeEnd("ctx");
  18791. self._errorReadOnly();
  18792. return self;
  18793. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  18794. }, function($ctx1) {$ctx1.fill(self,"at:put:",{anIndex:anIndex,anObject:anObject},$globals.CharacterArray)});
  18795. //>>excludeEnd("ctx");
  18796. },
  18797. //>>excludeStart("ide", pragmas.excludeIdeData);
  18798. args: ["anIndex", "anObject"],
  18799. source: "at: anIndex put: anObject\x0a\x09self errorReadOnly",
  18800. referencedClasses: [],
  18801. //>>excludeEnd("ide");
  18802. messageSends: ["errorReadOnly"]
  18803. }),
  18804. $globals.CharacterArray);
  18805. $core.addMethod(
  18806. $core.method({
  18807. selector: "errorReadOnly",
  18808. protocol: 'error handling',
  18809. fn: function (){
  18810. var self=this;
  18811. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  18812. return $core.withContext(function($ctx1) {
  18813. //>>excludeEnd("ctx");
  18814. self._error_("Object is read-only");
  18815. return self;
  18816. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  18817. }, function($ctx1) {$ctx1.fill(self,"errorReadOnly",{},$globals.CharacterArray)});
  18818. //>>excludeEnd("ctx");
  18819. },
  18820. //>>excludeStart("ide", pragmas.excludeIdeData);
  18821. args: [],
  18822. source: "errorReadOnly\x0a\x09self error: 'Object is read-only'",
  18823. referencedClasses: [],
  18824. //>>excludeEnd("ide");
  18825. messageSends: ["error:"]
  18826. }),
  18827. $globals.CharacterArray);
  18828. $core.addMethod(
  18829. $core.method({
  18830. selector: "printOn:",
  18831. protocol: 'printing',
  18832. fn: function (aStream){
  18833. var self=this;
  18834. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  18835. return $core.withContext(function($ctx1) {
  18836. //>>excludeEnd("ctx");
  18837. $recv(self._asString())._printOn_(aStream);
  18838. return self;
  18839. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  18840. }, function($ctx1) {$ctx1.fill(self,"printOn:",{aStream:aStream},$globals.CharacterArray)});
  18841. //>>excludeEnd("ctx");
  18842. },
  18843. //>>excludeStart("ide", pragmas.excludeIdeData);
  18844. args: ["aStream"],
  18845. source: "printOn: aStream\x0a\x09self asString printOn: aStream",
  18846. referencedClasses: [],
  18847. //>>excludeEnd("ide");
  18848. messageSends: ["printOn:", "asString"]
  18849. }),
  18850. $globals.CharacterArray);
  18851. $core.addMethod(
  18852. $core.method({
  18853. selector: "putOn:",
  18854. protocol: 'streaming',
  18855. fn: function (aStream){
  18856. var self=this;
  18857. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  18858. return $core.withContext(function($ctx1) {
  18859. //>>excludeEnd("ctx");
  18860. $recv(aStream)._nextPutString_(self);
  18861. return self;
  18862. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  18863. }, function($ctx1) {$ctx1.fill(self,"putOn:",{aStream:aStream},$globals.CharacterArray)});
  18864. //>>excludeEnd("ctx");
  18865. },
  18866. //>>excludeStart("ide", pragmas.excludeIdeData);
  18867. args: ["aStream"],
  18868. source: "putOn: aStream\x0a\x09aStream nextPutString: self",
  18869. referencedClasses: [],
  18870. //>>excludeEnd("ide");
  18871. messageSends: ["nextPutString:"]
  18872. }),
  18873. $globals.CharacterArray);
  18874. $core.addMethod(
  18875. $core.method({
  18876. selector: "remove:",
  18877. protocol: 'adding/removing',
  18878. fn: function (anObject){
  18879. var self=this;
  18880. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  18881. return $core.withContext(function($ctx1) {
  18882. //>>excludeEnd("ctx");
  18883. self._errorReadOnly();
  18884. return self;
  18885. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  18886. }, function($ctx1) {$ctx1.fill(self,"remove:",{anObject:anObject},$globals.CharacterArray)});
  18887. //>>excludeEnd("ctx");
  18888. },
  18889. //>>excludeStart("ide", pragmas.excludeIdeData);
  18890. args: ["anObject"],
  18891. source: "remove: anObject\x0a\x09self errorReadOnly",
  18892. referencedClasses: [],
  18893. //>>excludeEnd("ide");
  18894. messageSends: ["errorReadOnly"]
  18895. }),
  18896. $globals.CharacterArray);
  18897. $core.addMethod(
  18898. $core.method({
  18899. selector: "fromString:",
  18900. protocol: 'instance creation',
  18901. fn: function (aString){
  18902. var self=this;
  18903. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  18904. return $core.withContext(function($ctx1) {
  18905. //>>excludeEnd("ctx");
  18906. self._subclassResponsibility();
  18907. return self;
  18908. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  18909. }, function($ctx1) {$ctx1.fill(self,"fromString:",{aString:aString},$globals.CharacterArray.klass)});
  18910. //>>excludeEnd("ctx");
  18911. },
  18912. //>>excludeStart("ide", pragmas.excludeIdeData);
  18913. args: ["aString"],
  18914. source: "fromString: aString\x0a\x09self subclassResponsibility",
  18915. referencedClasses: [],
  18916. //>>excludeEnd("ide");
  18917. messageSends: ["subclassResponsibility"]
  18918. }),
  18919. $globals.CharacterArray.klass);
  18920. $core.addClass('String', $globals.CharacterArray, [], 'Kernel-Collections');
  18921. //>>excludeStart("ide", pragmas.excludeIdeData);
  18922. $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 >> #,`";
  18923. //>>excludeEnd("ide");
  18924. $core.addMethod(
  18925. $core.method({
  18926. selector: ",",
  18927. protocol: 'copying',
  18928. fn: function (aString){
  18929. var self=this;
  18930. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  18931. return $core.withContext(function($ctx1) {
  18932. //>>excludeEnd("ctx");
  18933. return String(self) + aString;
  18934. return self;
  18935. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  18936. }, function($ctx1) {$ctx1.fill(self,",",{aString:aString},$globals.String)});
  18937. //>>excludeEnd("ctx");
  18938. },
  18939. //>>excludeStart("ide", pragmas.excludeIdeData);
  18940. args: ["aString"],
  18941. source: ", aString\x0a\x09<return String(self) + aString>",
  18942. referencedClasses: [],
  18943. //>>excludeEnd("ide");
  18944. messageSends: []
  18945. }),
  18946. $globals.String);
  18947. $core.addMethod(
  18948. $core.method({
  18949. selector: "<",
  18950. protocol: 'comparing',
  18951. fn: function (aString){
  18952. var self=this;
  18953. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  18954. return $core.withContext(function($ctx1) {
  18955. //>>excludeEnd("ctx");
  18956. return String(self) < aString._asString();
  18957. return self;
  18958. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  18959. }, function($ctx1) {$ctx1.fill(self,"<",{aString:aString},$globals.String)});
  18960. //>>excludeEnd("ctx");
  18961. },
  18962. //>>excludeStart("ide", pragmas.excludeIdeData);
  18963. args: ["aString"],
  18964. source: "< aString\x0a\x09<return String(self) < aString._asString()>",
  18965. referencedClasses: [],
  18966. //>>excludeEnd("ide");
  18967. messageSends: []
  18968. }),
  18969. $globals.String);
  18970. $core.addMethod(
  18971. $core.method({
  18972. selector: "<=",
  18973. protocol: 'comparing',
  18974. fn: function (aString){
  18975. var self=this;
  18976. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  18977. return $core.withContext(function($ctx1) {
  18978. //>>excludeEnd("ctx");
  18979. return String(self) <= aString._asString();
  18980. return self;
  18981. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  18982. }, function($ctx1) {$ctx1.fill(self,"<=",{aString:aString},$globals.String)});
  18983. //>>excludeEnd("ctx");
  18984. },
  18985. //>>excludeStart("ide", pragmas.excludeIdeData);
  18986. args: ["aString"],
  18987. source: "<= aString\x0a\x09<return String(self) <= aString._asString()>",
  18988. referencedClasses: [],
  18989. //>>excludeEnd("ide");
  18990. messageSends: []
  18991. }),
  18992. $globals.String);
  18993. $core.addMethod(
  18994. $core.method({
  18995. selector: "=",
  18996. protocol: 'comparing',
  18997. fn: function (aString){
  18998. var self=this;
  18999. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19000. return $core.withContext(function($ctx1) {
  19001. //>>excludeEnd("ctx");
  19002. return aString != null &&
  19003. typeof aString._isString === "function" &&
  19004. aString._isString() &&
  19005. String(self) === String(aString)
  19006. ;
  19007. return self;
  19008. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19009. }, function($ctx1) {$ctx1.fill(self,"=",{aString:aString},$globals.String)});
  19010. //>>excludeEnd("ctx");
  19011. },
  19012. //>>excludeStart("ide", pragmas.excludeIdeData);
  19013. args: ["aString"],
  19014. source: "= aString\x0a\x09<\x0a\x09\x09return aString != null &&\x0a\x09\x09\x09typeof aString._isString === \x22function\x22 &&\x0a\x09\x09\x09aString._isString() &&\x0a\x09\x09\x09String(self) === String(aString)\x0a\x09>",
  19015. referencedClasses: [],
  19016. //>>excludeEnd("ide");
  19017. messageSends: []
  19018. }),
  19019. $globals.String);
  19020. $core.addMethod(
  19021. $core.method({
  19022. selector: "==",
  19023. protocol: 'comparing',
  19024. fn: function (aString){
  19025. var self=this;
  19026. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19027. return $core.withContext(function($ctx1) {
  19028. //>>excludeEnd("ctx");
  19029. var $1;
  19030. $1=self.__eq(aString);
  19031. return $1;
  19032. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19033. }, function($ctx1) {$ctx1.fill(self,"==",{aString:aString},$globals.String)});
  19034. //>>excludeEnd("ctx");
  19035. },
  19036. //>>excludeStart("ide", pragmas.excludeIdeData);
  19037. args: ["aString"],
  19038. source: "== aString\x0a\x09^ self = aString",
  19039. referencedClasses: [],
  19040. //>>excludeEnd("ide");
  19041. messageSends: ["="]
  19042. }),
  19043. $globals.String);
  19044. $core.addMethod(
  19045. $core.method({
  19046. selector: ">",
  19047. protocol: 'comparing',
  19048. fn: function (aString){
  19049. var self=this;
  19050. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19051. return $core.withContext(function($ctx1) {
  19052. //>>excludeEnd("ctx");
  19053. return String(self) > aString._asString();
  19054. return self;
  19055. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19056. }, function($ctx1) {$ctx1.fill(self,">",{aString:aString},$globals.String)});
  19057. //>>excludeEnd("ctx");
  19058. },
  19059. //>>excludeStart("ide", pragmas.excludeIdeData);
  19060. args: ["aString"],
  19061. source: "> aString\x0a\x09<return String(self) >> aString._asString()>",
  19062. referencedClasses: [],
  19063. //>>excludeEnd("ide");
  19064. messageSends: []
  19065. }),
  19066. $globals.String);
  19067. $core.addMethod(
  19068. $core.method({
  19069. selector: ">=",
  19070. protocol: 'comparing',
  19071. fn: function (aString){
  19072. var self=this;
  19073. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19074. return $core.withContext(function($ctx1) {
  19075. //>>excludeEnd("ctx");
  19076. return String(self) >= aString._asString();
  19077. return self;
  19078. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19079. }, function($ctx1) {$ctx1.fill(self,">=",{aString:aString},$globals.String)});
  19080. //>>excludeEnd("ctx");
  19081. },
  19082. //>>excludeStart("ide", pragmas.excludeIdeData);
  19083. args: ["aString"],
  19084. source: ">= aString\x0a\x09<return String(self) >>= aString._asString()>",
  19085. referencedClasses: [],
  19086. //>>excludeEnd("ide");
  19087. messageSends: []
  19088. }),
  19089. $globals.String);
  19090. $core.addMethod(
  19091. $core.method({
  19092. selector: "asJSON",
  19093. protocol: 'converting',
  19094. fn: function (){
  19095. var self=this;
  19096. return self;
  19097. },
  19098. //>>excludeStart("ide", pragmas.excludeIdeData);
  19099. args: [],
  19100. source: "asJSON\x0a\x09^ self",
  19101. referencedClasses: [],
  19102. //>>excludeEnd("ide");
  19103. messageSends: []
  19104. }),
  19105. $globals.String);
  19106. $core.addMethod(
  19107. $core.method({
  19108. selector: "asJavaScriptMethodName",
  19109. protocol: 'converting',
  19110. fn: function (){
  19111. var self=this;
  19112. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19113. return $core.withContext(function($ctx1) {
  19114. //>>excludeEnd("ctx");
  19115. return $core.st2js(self);
  19116. return self;
  19117. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19118. }, function($ctx1) {$ctx1.fill(self,"asJavaScriptMethodName",{},$globals.String)});
  19119. //>>excludeEnd("ctx");
  19120. },
  19121. //>>excludeStart("ide", pragmas.excludeIdeData);
  19122. args: [],
  19123. source: "asJavaScriptMethodName\x0a\x09<return $core.st2js(self)>",
  19124. referencedClasses: [],
  19125. //>>excludeEnd("ide");
  19126. messageSends: []
  19127. }),
  19128. $globals.String);
  19129. $core.addMethod(
  19130. $core.method({
  19131. selector: "asJavascript",
  19132. protocol: 'converting',
  19133. fn: function (){
  19134. var self=this;
  19135. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19136. return $core.withContext(function($ctx1) {
  19137. //>>excludeEnd("ctx");
  19138. if(self.search(/^[a-zA-Z0-9_:.$ ]*$/) == -1)
  19139. return "\"" + self.replace(/[\x00-\x1f"\\\x7f-\x9f]/g, function(ch){var c=ch.charCodeAt(0);return "\\x"+("0"+c.toString(16)).slice(-2)}) + "\"";
  19140. else
  19141. return "\"" + self + "\"";
  19142. ;
  19143. return self;
  19144. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19145. }, function($ctx1) {$ctx1.fill(self,"asJavascript",{},$globals.String)});
  19146. //>>excludeEnd("ctx");
  19147. },
  19148. //>>excludeStart("ide", pragmas.excludeIdeData);
  19149. args: [],
  19150. source: "asJavascript\x0a\x09<\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>",
  19151. referencedClasses: [],
  19152. //>>excludeEnd("ide");
  19153. messageSends: []
  19154. }),
  19155. $globals.String);
  19156. $core.addMethod(
  19157. $core.method({
  19158. selector: "asLowercase",
  19159. protocol: 'converting',
  19160. fn: function (){
  19161. var self=this;
  19162. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19163. return $core.withContext(function($ctx1) {
  19164. //>>excludeEnd("ctx");
  19165. return self.toLowerCase();
  19166. return self;
  19167. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19168. }, function($ctx1) {$ctx1.fill(self,"asLowercase",{},$globals.String)});
  19169. //>>excludeEnd("ctx");
  19170. },
  19171. //>>excludeStart("ide", pragmas.excludeIdeData);
  19172. args: [],
  19173. source: "asLowercase\x0a\x09<return self.toLowerCase()>",
  19174. referencedClasses: [],
  19175. //>>excludeEnd("ide");
  19176. messageSends: []
  19177. }),
  19178. $globals.String);
  19179. $core.addMethod(
  19180. $core.method({
  19181. selector: "asMutator",
  19182. protocol: 'converting',
  19183. fn: function (){
  19184. var self=this;
  19185. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19186. return $core.withContext(function($ctx1) {
  19187. //>>excludeEnd("ctx");
  19188. var $1,$2;
  19189. $1=$recv(self._last()).__eq(":");
  19190. if(!$core.assert($1)){
  19191. $2=self.__comma(":");
  19192. return $2;
  19193. };
  19194. return self;
  19195. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19196. }, function($ctx1) {$ctx1.fill(self,"asMutator",{},$globals.String)});
  19197. //>>excludeEnd("ctx");
  19198. },
  19199. //>>excludeStart("ide", pragmas.excludeIdeData);
  19200. args: [],
  19201. 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",
  19202. referencedClasses: [],
  19203. //>>excludeEnd("ide");
  19204. messageSends: ["ifFalse:", "=", "last", ","]
  19205. }),
  19206. $globals.String);
  19207. $core.addMethod(
  19208. $core.method({
  19209. selector: "asNumber",
  19210. protocol: 'converting',
  19211. fn: function (){
  19212. var self=this;
  19213. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19214. return $core.withContext(function($ctx1) {
  19215. //>>excludeEnd("ctx");
  19216. return Number(self);
  19217. return self;
  19218. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19219. }, function($ctx1) {$ctx1.fill(self,"asNumber",{},$globals.String)});
  19220. //>>excludeEnd("ctx");
  19221. },
  19222. //>>excludeStart("ide", pragmas.excludeIdeData);
  19223. args: [],
  19224. source: "asNumber\x0a\x09<return Number(self)>",
  19225. referencedClasses: [],
  19226. //>>excludeEnd("ide");
  19227. messageSends: []
  19228. }),
  19229. $globals.String);
  19230. $core.addMethod(
  19231. $core.method({
  19232. selector: "asRegexp",
  19233. protocol: 'converting',
  19234. fn: function (){
  19235. var self=this;
  19236. function $RegularExpression(){return $globals.RegularExpression||(typeof RegularExpression=="undefined"?nil:RegularExpression)}
  19237. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19238. return $core.withContext(function($ctx1) {
  19239. //>>excludeEnd("ctx");
  19240. var $1;
  19241. $1=$recv($RegularExpression())._fromString_(self);
  19242. return $1;
  19243. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19244. }, function($ctx1) {$ctx1.fill(self,"asRegexp",{},$globals.String)});
  19245. //>>excludeEnd("ctx");
  19246. },
  19247. //>>excludeStart("ide", pragmas.excludeIdeData);
  19248. args: [],
  19249. source: "asRegexp\x0a\x09^ RegularExpression fromString: self",
  19250. referencedClasses: ["RegularExpression"],
  19251. //>>excludeEnd("ide");
  19252. messageSends: ["fromString:"]
  19253. }),
  19254. $globals.String);
  19255. $core.addMethod(
  19256. $core.method({
  19257. selector: "asSelector",
  19258. protocol: 'converting',
  19259. fn: function (){
  19260. var self=this;
  19261. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19262. return $core.withContext(function($ctx1) {
  19263. //>>excludeEnd("ctx");
  19264. var $1;
  19265. self._deprecatedAPI_("Use #asJavaScriptMethodName");
  19266. $1=self._asJavaScriptMethodName();
  19267. return $1;
  19268. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19269. }, function($ctx1) {$ctx1.fill(self,"asSelector",{},$globals.String)});
  19270. //>>excludeEnd("ctx");
  19271. },
  19272. //>>excludeStart("ide", pragmas.excludeIdeData);
  19273. args: [],
  19274. source: "asSelector\x0a\x09self deprecatedAPI: 'Use #asJavaScriptMethodName'.\x0a\x09^ self asJavaScriptMethodName",
  19275. referencedClasses: [],
  19276. //>>excludeEnd("ide");
  19277. messageSends: ["deprecatedAPI:", "asJavaScriptMethodName"]
  19278. }),
  19279. $globals.String);
  19280. $core.addMethod(
  19281. $core.method({
  19282. selector: "asString",
  19283. protocol: 'converting',
  19284. fn: function (){
  19285. var self=this;
  19286. return self;
  19287. },
  19288. //>>excludeStart("ide", pragmas.excludeIdeData);
  19289. args: [],
  19290. source: "asString\x0a\x09^ self",
  19291. referencedClasses: [],
  19292. //>>excludeEnd("ide");
  19293. messageSends: []
  19294. }),
  19295. $globals.String);
  19296. $core.addMethod(
  19297. $core.method({
  19298. selector: "asSymbol",
  19299. protocol: 'converting',
  19300. fn: function (){
  19301. var self=this;
  19302. return self;
  19303. },
  19304. //>>excludeStart("ide", pragmas.excludeIdeData);
  19305. args: [],
  19306. source: "asSymbol\x0a\x09^ self",
  19307. referencedClasses: [],
  19308. //>>excludeEnd("ide");
  19309. messageSends: []
  19310. }),
  19311. $globals.String);
  19312. $core.addMethod(
  19313. $core.method({
  19314. selector: "asUppercase",
  19315. protocol: 'converting',
  19316. fn: function (){
  19317. var self=this;
  19318. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19319. return $core.withContext(function($ctx1) {
  19320. //>>excludeEnd("ctx");
  19321. return self.toUpperCase();
  19322. return self;
  19323. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19324. }, function($ctx1) {$ctx1.fill(self,"asUppercase",{},$globals.String)});
  19325. //>>excludeEnd("ctx");
  19326. },
  19327. //>>excludeStart("ide", pragmas.excludeIdeData);
  19328. args: [],
  19329. source: "asUppercase\x0a\x09<return self.toUpperCase()>",
  19330. referencedClasses: [],
  19331. //>>excludeEnd("ide");
  19332. messageSends: []
  19333. }),
  19334. $globals.String);
  19335. $core.addMethod(
  19336. $core.method({
  19337. selector: "asciiValue",
  19338. protocol: 'accessing',
  19339. fn: function (){
  19340. var self=this;
  19341. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19342. return $core.withContext(function($ctx1) {
  19343. //>>excludeEnd("ctx");
  19344. return self.charCodeAt(0);;
  19345. return self;
  19346. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19347. }, function($ctx1) {$ctx1.fill(self,"asciiValue",{},$globals.String)});
  19348. //>>excludeEnd("ctx");
  19349. },
  19350. //>>excludeStart("ide", pragmas.excludeIdeData);
  19351. args: [],
  19352. source: "asciiValue\x0a\x09<return self.charCodeAt(0);>",
  19353. referencedClasses: [],
  19354. //>>excludeEnd("ide");
  19355. messageSends: []
  19356. }),
  19357. $globals.String);
  19358. $core.addMethod(
  19359. $core.method({
  19360. selector: "at:ifAbsent:",
  19361. protocol: 'accessing',
  19362. fn: function (anIndex,aBlock){
  19363. var self=this;
  19364. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19365. return $core.withContext(function($ctx1) {
  19366. //>>excludeEnd("ctx");
  19367. return String(self)[anIndex - 1] || aBlock._value();
  19368. return self;
  19369. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19370. }, function($ctx1) {$ctx1.fill(self,"at:ifAbsent:",{anIndex:anIndex,aBlock:aBlock},$globals.String)});
  19371. //>>excludeEnd("ctx");
  19372. },
  19373. //>>excludeStart("ide", pragmas.excludeIdeData);
  19374. args: ["anIndex", "aBlock"],
  19375. source: "at: anIndex ifAbsent: aBlock\x0a\x09<return String(self)[anIndex - 1] || aBlock._value()>",
  19376. referencedClasses: [],
  19377. //>>excludeEnd("ide");
  19378. messageSends: []
  19379. }),
  19380. $globals.String);
  19381. $core.addMethod(
  19382. $core.method({
  19383. selector: "at:ifPresent:ifAbsent:",
  19384. protocol: 'accessing',
  19385. fn: function (anIndex,aBlock,anotherBlock){
  19386. var self=this;
  19387. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19388. return $core.withContext(function($ctx1) {
  19389. //>>excludeEnd("ctx");
  19390. var result = String(self)[anIndex - 1];
  19391. return result ? aBlock._value_(result) : anotherBlock._value();
  19392. ;
  19393. return self;
  19394. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19395. }, function($ctx1) {$ctx1.fill(self,"at:ifPresent:ifAbsent:",{anIndex:anIndex,aBlock:aBlock,anotherBlock:anotherBlock},$globals.String)});
  19396. //>>excludeEnd("ctx");
  19397. },
  19398. //>>excludeStart("ide", pragmas.excludeIdeData);
  19399. args: ["anIndex", "aBlock", "anotherBlock"],
  19400. source: "at: anIndex ifPresent: aBlock ifAbsent: anotherBlock\x0a\x09<\x0a\x09\x09var result = String(self)[anIndex - 1];\x0a\x09\x09return result ? aBlock._value_(result) : anotherBlock._value();\x0a\x09>",
  19401. referencedClasses: [],
  19402. //>>excludeEnd("ide");
  19403. messageSends: []
  19404. }),
  19405. $globals.String);
  19406. $core.addMethod(
  19407. $core.method({
  19408. selector: "capitalized",
  19409. protocol: 'converting',
  19410. fn: function (){
  19411. var self=this;
  19412. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19413. return $core.withContext(function($ctx1) {
  19414. //>>excludeEnd("ctx");
  19415. var $2,$1;
  19416. $2=self._isEmpty();
  19417. if($core.assert($2)){
  19418. $1=self;
  19419. } else {
  19420. $1=$recv($recv(self._first())._asUppercase()).__comma(self._allButFirst());
  19421. };
  19422. return $1;
  19423. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19424. }, function($ctx1) {$ctx1.fill(self,"capitalized",{},$globals.String)});
  19425. //>>excludeEnd("ctx");
  19426. },
  19427. //>>excludeStart("ide", pragmas.excludeIdeData);
  19428. args: [],
  19429. source: "capitalized\x0a\x09^ self isEmpty\x0a\x09\x09ifTrue: [ self ]\x0a\x09\x09ifFalse: [ self first asUppercase, self allButFirst ]",
  19430. referencedClasses: [],
  19431. //>>excludeEnd("ide");
  19432. messageSends: ["ifTrue:ifFalse:", "isEmpty", ",", "asUppercase", "first", "allButFirst"]
  19433. }),
  19434. $globals.String);
  19435. $core.addMethod(
  19436. $core.method({
  19437. selector: "charCodeAt:",
  19438. protocol: 'accessing',
  19439. fn: function (anInteger){
  19440. var self=this;
  19441. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19442. return $core.withContext(function($ctx1) {
  19443. //>>excludeEnd("ctx");
  19444. return self.charCodeAt(anInteger - 1);
  19445. return self;
  19446. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19447. }, function($ctx1) {$ctx1.fill(self,"charCodeAt:",{anInteger:anInteger},$globals.String)});
  19448. //>>excludeEnd("ctx");
  19449. },
  19450. //>>excludeStart("ide", pragmas.excludeIdeData);
  19451. args: ["anInteger"],
  19452. source: "charCodeAt: anInteger\x0a\x09<return self.charCodeAt(anInteger - 1)>",
  19453. referencedClasses: [],
  19454. //>>excludeEnd("ide");
  19455. messageSends: []
  19456. }),
  19457. $globals.String);
  19458. $core.addMethod(
  19459. $core.method({
  19460. selector: "copyFrom:to:",
  19461. protocol: 'copying',
  19462. fn: function (anIndex,anotherIndex){
  19463. var self=this;
  19464. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19465. return $core.withContext(function($ctx1) {
  19466. //>>excludeEnd("ctx");
  19467. return self.substring(anIndex - 1, anotherIndex);
  19468. return self;
  19469. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19470. }, function($ctx1) {$ctx1.fill(self,"copyFrom:to:",{anIndex:anIndex,anotherIndex:anotherIndex},$globals.String)});
  19471. //>>excludeEnd("ctx");
  19472. },
  19473. //>>excludeStart("ide", pragmas.excludeIdeData);
  19474. args: ["anIndex", "anotherIndex"],
  19475. source: "copyFrom: anIndex to: anotherIndex\x0a\x09<return self.substring(anIndex - 1, anotherIndex)>",
  19476. referencedClasses: [],
  19477. //>>excludeEnd("ide");
  19478. messageSends: []
  19479. }),
  19480. $globals.String);
  19481. $core.addMethod(
  19482. $core.method({
  19483. selector: "crlfSanitized",
  19484. protocol: 'converting',
  19485. fn: function (){
  19486. var self=this;
  19487. function $String(){return $globals.String||(typeof String=="undefined"?nil:String)}
  19488. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19489. return $core.withContext(function($ctx1) {
  19490. //>>excludeEnd("ctx");
  19491. var $1;
  19492. $1=$recv(self._lines())._join_($recv($String())._lf());
  19493. return $1;
  19494. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19495. }, function($ctx1) {$ctx1.fill(self,"crlfSanitized",{},$globals.String)});
  19496. //>>excludeEnd("ctx");
  19497. },
  19498. //>>excludeStart("ide", pragmas.excludeIdeData);
  19499. args: [],
  19500. source: "crlfSanitized\x0a\x09^ self lines join: String lf",
  19501. referencedClasses: ["String"],
  19502. //>>excludeEnd("ide");
  19503. messageSends: ["join:", "lines", "lf"]
  19504. }),
  19505. $globals.String);
  19506. $core.addMethod(
  19507. $core.method({
  19508. selector: "deepCopy",
  19509. protocol: 'copying',
  19510. fn: function (){
  19511. var self=this;
  19512. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19513. return $core.withContext(function($ctx1) {
  19514. //>>excludeEnd("ctx");
  19515. var $1;
  19516. $1=self._shallowCopy();
  19517. return $1;
  19518. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19519. }, function($ctx1) {$ctx1.fill(self,"deepCopy",{},$globals.String)});
  19520. //>>excludeEnd("ctx");
  19521. },
  19522. //>>excludeStart("ide", pragmas.excludeIdeData);
  19523. args: [],
  19524. source: "deepCopy\x0a\x09^ self shallowCopy",
  19525. referencedClasses: [],
  19526. //>>excludeEnd("ide");
  19527. messageSends: ["shallowCopy"]
  19528. }),
  19529. $globals.String);
  19530. $core.addMethod(
  19531. $core.method({
  19532. selector: "escaped",
  19533. protocol: 'converting',
  19534. fn: function (){
  19535. var self=this;
  19536. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19537. return $core.withContext(function($ctx1) {
  19538. //>>excludeEnd("ctx");
  19539. return escape(self);
  19540. return self;
  19541. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19542. }, function($ctx1) {$ctx1.fill(self,"escaped",{},$globals.String)});
  19543. //>>excludeEnd("ctx");
  19544. },
  19545. //>>excludeStart("ide", pragmas.excludeIdeData);
  19546. args: [],
  19547. source: "escaped\x0a\x09<return escape(self)>",
  19548. referencedClasses: [],
  19549. //>>excludeEnd("ide");
  19550. messageSends: []
  19551. }),
  19552. $globals.String);
  19553. $core.addMethod(
  19554. $core.method({
  19555. selector: "identityHash",
  19556. protocol: 'accessing',
  19557. fn: function (){
  19558. var self=this;
  19559. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19560. return $core.withContext(function($ctx1) {
  19561. //>>excludeEnd("ctx");
  19562. var $1;
  19563. $1=self.__comma("s");
  19564. return $1;
  19565. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19566. }, function($ctx1) {$ctx1.fill(self,"identityHash",{},$globals.String)});
  19567. //>>excludeEnd("ctx");
  19568. },
  19569. //>>excludeStart("ide", pragmas.excludeIdeData);
  19570. args: [],
  19571. source: "identityHash\x0a\x09^ self, 's'",
  19572. referencedClasses: [],
  19573. //>>excludeEnd("ide");
  19574. messageSends: [","]
  19575. }),
  19576. $globals.String);
  19577. $core.addMethod(
  19578. $core.method({
  19579. selector: "includesSubString:",
  19580. protocol: 'testing',
  19581. fn: function (subString){
  19582. var self=this;
  19583. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19584. return $core.withContext(function($ctx1) {
  19585. //>>excludeEnd("ctx");
  19586. return self.indexOf(subString) != -1;
  19587. return self;
  19588. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19589. }, function($ctx1) {$ctx1.fill(self,"includesSubString:",{subString:subString},$globals.String)});
  19590. //>>excludeEnd("ctx");
  19591. },
  19592. //>>excludeStart("ide", pragmas.excludeIdeData);
  19593. args: ["subString"],
  19594. source: "includesSubString: subString\x0a\x09<return self.indexOf(subString) != -1>",
  19595. referencedClasses: [],
  19596. //>>excludeEnd("ide");
  19597. messageSends: []
  19598. }),
  19599. $globals.String);
  19600. $core.addMethod(
  19601. $core.method({
  19602. selector: "isCapitalized",
  19603. protocol: 'testing',
  19604. fn: function (){
  19605. var self=this;
  19606. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19607. return $core.withContext(function($ctx1) {
  19608. //>>excludeEnd("ctx");
  19609. var $3,$2,$1;
  19610. $3=self._first();
  19611. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19612. $ctx1.sendIdx["first"]=1;
  19613. //>>excludeEnd("ctx");
  19614. $2=$recv($3)._asUppercase();
  19615. $1=$recv($2).__eq_eq(self._first());
  19616. return $1;
  19617. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19618. }, function($ctx1) {$ctx1.fill(self,"isCapitalized",{},$globals.String)});
  19619. //>>excludeEnd("ctx");
  19620. },
  19621. //>>excludeStart("ide", pragmas.excludeIdeData);
  19622. args: [],
  19623. source: "isCapitalized\x0a\x09^ self first asUppercase == self first",
  19624. referencedClasses: [],
  19625. //>>excludeEnd("ide");
  19626. messageSends: ["==", "asUppercase", "first"]
  19627. }),
  19628. $globals.String);
  19629. $core.addMethod(
  19630. $core.method({
  19631. selector: "isImmutable",
  19632. protocol: 'testing',
  19633. fn: function (){
  19634. var self=this;
  19635. return true;
  19636. },
  19637. //>>excludeStart("ide", pragmas.excludeIdeData);
  19638. args: [],
  19639. source: "isImmutable\x0a\x09^ true",
  19640. referencedClasses: [],
  19641. //>>excludeEnd("ide");
  19642. messageSends: []
  19643. }),
  19644. $globals.String);
  19645. $core.addMethod(
  19646. $core.method({
  19647. selector: "isString",
  19648. protocol: 'testing',
  19649. fn: function (){
  19650. var self=this;
  19651. return true;
  19652. },
  19653. //>>excludeStart("ide", pragmas.excludeIdeData);
  19654. args: [],
  19655. source: "isString\x0a\x09^ true",
  19656. referencedClasses: [],
  19657. //>>excludeEnd("ide");
  19658. messageSends: []
  19659. }),
  19660. $globals.String);
  19661. $core.addMethod(
  19662. $core.method({
  19663. selector: "isVowel",
  19664. protocol: 'testing',
  19665. fn: function (){
  19666. var self=this;
  19667. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19668. return $core.withContext(function($ctx1) {
  19669. //>>excludeEnd("ctx");
  19670. var $1;
  19671. $1=$recv($recv(self._size()).__eq((1)))._and_((function(){
  19672. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19673. return $core.withContext(function($ctx2) {
  19674. //>>excludeEnd("ctx");
  19675. return "aeiou"._includes_(self._asLowercase());
  19676. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19677. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  19678. //>>excludeEnd("ctx");
  19679. }));
  19680. return $1;
  19681. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19682. }, function($ctx1) {$ctx1.fill(self,"isVowel",{},$globals.String)});
  19683. //>>excludeEnd("ctx");
  19684. },
  19685. //>>excludeStart("ide", pragmas.excludeIdeData);
  19686. args: [],
  19687. 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 ]",
  19688. referencedClasses: [],
  19689. //>>excludeEnd("ide");
  19690. messageSends: ["and:", "=", "size", "includes:", "asLowercase"]
  19691. }),
  19692. $globals.String);
  19693. $core.addMethod(
  19694. $core.method({
  19695. selector: "join:",
  19696. protocol: 'split join',
  19697. fn: function (aCollection){
  19698. var self=this;
  19699. function $String(){return $globals.String||(typeof String=="undefined"?nil:String)}
  19700. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19701. return $core.withContext(function($ctx1) {
  19702. //>>excludeEnd("ctx");
  19703. var $1;
  19704. $1=$recv($String())._streamContents_((function(stream){
  19705. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19706. return $core.withContext(function($ctx2) {
  19707. //>>excludeEnd("ctx");
  19708. return $recv(aCollection)._do_separatedBy_((function(each){
  19709. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19710. return $core.withContext(function($ctx3) {
  19711. //>>excludeEnd("ctx");
  19712. return $recv(stream)._nextPutAll_($recv(each)._asString());
  19713. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19714. $ctx3.sendIdx["nextPutAll:"]=1;
  19715. //>>excludeEnd("ctx");
  19716. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19717. }, function($ctx3) {$ctx3.fillBlock({each:each},$ctx2,2)});
  19718. //>>excludeEnd("ctx");
  19719. }),(function(){
  19720. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19721. return $core.withContext(function($ctx3) {
  19722. //>>excludeEnd("ctx");
  19723. return $recv(stream)._nextPutAll_(self);
  19724. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19725. }, function($ctx3) {$ctx3.fillBlock({},$ctx2,3)});
  19726. //>>excludeEnd("ctx");
  19727. }));
  19728. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19729. }, function($ctx2) {$ctx2.fillBlock({stream:stream},$ctx1,1)});
  19730. //>>excludeEnd("ctx");
  19731. }));
  19732. return $1;
  19733. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19734. }, function($ctx1) {$ctx1.fill(self,"join:",{aCollection:aCollection},$globals.String)});
  19735. //>>excludeEnd("ctx");
  19736. },
  19737. //>>excludeStart("ide", pragmas.excludeIdeData);
  19738. args: ["aCollection"],
  19739. 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 ]]",
  19740. referencedClasses: ["String"],
  19741. //>>excludeEnd("ide");
  19742. messageSends: ["streamContents:", "do:separatedBy:", "nextPutAll:", "asString"]
  19743. }),
  19744. $globals.String);
  19745. $core.addMethod(
  19746. $core.method({
  19747. selector: "lineIndicesDo:",
  19748. protocol: 'split join',
  19749. fn: function (aBlock){
  19750. var self=this;
  19751. var cr,lf,start,sz,nextLF,nextCR;
  19752. function $String(){return $globals.String||(typeof String=="undefined"?nil:String)}
  19753. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19754. return $core.withContext(function($ctx1) {
  19755. //>>excludeEnd("ctx");
  19756. var $2,$1,$4,$5,$3,$6,$7,$9,$8,$10,$11;
  19757. var $early={};
  19758. try {
  19759. start=(1);
  19760. sz=self._size();
  19761. cr=$recv($String())._cr();
  19762. nextCR=self._indexOf_startingAt_(cr,(1));
  19763. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19764. $ctx1.sendIdx["indexOf:startingAt:"]=1;
  19765. //>>excludeEnd("ctx");
  19766. lf=$recv($String())._lf();
  19767. nextLF=self._indexOf_startingAt_(lf,(1));
  19768. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19769. $ctx1.sendIdx["indexOf:startingAt:"]=2;
  19770. //>>excludeEnd("ctx");
  19771. $recv((function(){
  19772. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19773. return $core.withContext(function($ctx2) {
  19774. //>>excludeEnd("ctx");
  19775. return $recv(start).__lt_eq(sz);
  19776. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19777. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  19778. //>>excludeEnd("ctx");
  19779. }))._whileTrue_((function(){
  19780. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19781. return $core.withContext(function($ctx2) {
  19782. //>>excludeEnd("ctx");
  19783. $2=$recv(nextLF).__eq((0));
  19784. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19785. $ctx2.sendIdx["="]=1;
  19786. //>>excludeEnd("ctx");
  19787. $1=$recv($2)._and_((function(){
  19788. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19789. return $core.withContext(function($ctx3) {
  19790. //>>excludeEnd("ctx");
  19791. return $recv(nextCR).__eq((0));
  19792. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19793. $ctx3.sendIdx["="]=2;
  19794. //>>excludeEnd("ctx");
  19795. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19796. }, function($ctx3) {$ctx3.fillBlock({},$ctx2,3)});
  19797. //>>excludeEnd("ctx");
  19798. }));
  19799. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19800. $ctx2.sendIdx["and:"]=1;
  19801. //>>excludeEnd("ctx");
  19802. if($core.assert($1)){
  19803. $recv(aBlock)._value_value_value_(start,sz,sz);
  19804. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19805. $ctx2.sendIdx["value:value:value:"]=1;
  19806. //>>excludeEnd("ctx");
  19807. throw $early=[self];
  19808. };
  19809. $4=$recv(nextCR).__eq((0));
  19810. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19811. $ctx2.sendIdx["="]=3;
  19812. //>>excludeEnd("ctx");
  19813. $3=$recv($4)._or_((function(){
  19814. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19815. return $core.withContext(function($ctx3) {
  19816. //>>excludeEnd("ctx");
  19817. $5=(0).__lt(nextLF);
  19818. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19819. $ctx3.sendIdx["<"]=1;
  19820. //>>excludeEnd("ctx");
  19821. return $recv($5)._and_((function(){
  19822. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19823. return $core.withContext(function($ctx4) {
  19824. //>>excludeEnd("ctx");
  19825. return $recv(nextLF).__lt(nextCR);
  19826. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19827. }, function($ctx4) {$ctx4.fillBlock({},$ctx3,6)});
  19828. //>>excludeEnd("ctx");
  19829. }));
  19830. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19831. }, function($ctx3) {$ctx3.fillBlock({},$ctx2,5)});
  19832. //>>excludeEnd("ctx");
  19833. }));
  19834. if($core.assert($3)){
  19835. $6=start;
  19836. $7=$recv(nextLF).__minus((1));
  19837. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19838. $ctx2.sendIdx["-"]=1;
  19839. //>>excludeEnd("ctx");
  19840. $recv(aBlock)._value_value_value_($6,$7,nextLF);
  19841. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19842. $ctx2.sendIdx["value:value:value:"]=2;
  19843. //>>excludeEnd("ctx");
  19844. start=(1).__plus(nextLF);
  19845. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19846. $ctx2.sendIdx["+"]=1;
  19847. //>>excludeEnd("ctx");
  19848. start;
  19849. nextLF=self._indexOf_startingAt_(lf,start);
  19850. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19851. $ctx2.sendIdx["indexOf:startingAt:"]=3;
  19852. //>>excludeEnd("ctx");
  19853. return nextLF;
  19854. } else {
  19855. $9=(1).__plus(nextCR);
  19856. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19857. $ctx2.sendIdx["+"]=2;
  19858. //>>excludeEnd("ctx");
  19859. $8=$recv($9).__eq(nextLF);
  19860. if($core.assert($8)){
  19861. $10=start;
  19862. $11=$recv(nextCR).__minus((1));
  19863. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19864. $ctx2.sendIdx["-"]=2;
  19865. //>>excludeEnd("ctx");
  19866. $recv(aBlock)._value_value_value_($10,$11,nextLF);
  19867. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19868. $ctx2.sendIdx["value:value:value:"]=3;
  19869. //>>excludeEnd("ctx");
  19870. start=(1).__plus(nextLF);
  19871. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19872. $ctx2.sendIdx["+"]=3;
  19873. //>>excludeEnd("ctx");
  19874. start;
  19875. nextCR=self._indexOf_startingAt_(cr,start);
  19876. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19877. $ctx2.sendIdx["indexOf:startingAt:"]=4;
  19878. //>>excludeEnd("ctx");
  19879. nextCR;
  19880. nextLF=self._indexOf_startingAt_(lf,start);
  19881. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19882. $ctx2.sendIdx["indexOf:startingAt:"]=5;
  19883. //>>excludeEnd("ctx");
  19884. return nextLF;
  19885. } else {
  19886. $recv(aBlock)._value_value_value_(start,$recv(nextCR).__minus((1)),nextCR);
  19887. start=(1).__plus(nextCR);
  19888. start;
  19889. nextCR=self._indexOf_startingAt_(cr,start);
  19890. return nextCR;
  19891. };
  19892. };
  19893. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19894. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
  19895. //>>excludeEnd("ctx");
  19896. }));
  19897. return self;
  19898. }
  19899. catch(e) {if(e===$early)return e[0]; throw e}
  19900. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19901. }, function($ctx1) {$ctx1.fill(self,"lineIndicesDo:",{aBlock:aBlock,cr:cr,lf:lf,start:start,sz:sz,nextLF:nextLF,nextCR:nextCR},$globals.String)});
  19902. //>>excludeEnd("ctx");
  19903. },
  19904. //>>excludeStart("ide", pragmas.excludeIdeData);
  19905. args: ["aBlock"],
  19906. 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 ] ]]",
  19907. referencedClasses: ["String"],
  19908. //>>excludeEnd("ide");
  19909. messageSends: ["size", "cr", "indexOf:startingAt:", "lf", "whileTrue:", "<=", "ifTrue:", "and:", "=", "value:value:value:", "ifTrue:ifFalse:", "or:", "<", "-", "+"]
  19910. }),
  19911. $globals.String);
  19912. $core.addMethod(
  19913. $core.method({
  19914. selector: "lineNumber:",
  19915. protocol: 'split join',
  19916. fn: function (anIndex){
  19917. var self=this;
  19918. var lineCount;
  19919. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19920. return $core.withContext(function($ctx1) {
  19921. //>>excludeEnd("ctx");
  19922. var $2,$1,$3;
  19923. var $early={};
  19924. try {
  19925. lineCount=(0);
  19926. self._lineIndicesDo_((function(start,endWithoutDelimiters,end){
  19927. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19928. return $core.withContext(function($ctx2) {
  19929. //>>excludeEnd("ctx");
  19930. lineCount=$recv(lineCount).__plus((1));
  19931. $2=lineCount;
  19932. $1=$recv($2).__eq(anIndex);
  19933. if($core.assert($1)){
  19934. $3=self._copyFrom_to_(start,endWithoutDelimiters);
  19935. throw $early=[$3];
  19936. };
  19937. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19938. }, function($ctx2) {$ctx2.fillBlock({start:start,endWithoutDelimiters:endWithoutDelimiters,end:end},$ctx1,1)});
  19939. //>>excludeEnd("ctx");
  19940. }));
  19941. return nil;
  19942. }
  19943. catch(e) {if(e===$early)return e[0]; throw e}
  19944. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19945. }, function($ctx1) {$ctx1.fill(self,"lineNumber:",{anIndex:anIndex,lineCount:lineCount},$globals.String)});
  19946. //>>excludeEnd("ctx");
  19947. },
  19948. //>>excludeStart("ide", pragmas.excludeIdeData);
  19949. args: ["anIndex"],
  19950. 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",
  19951. referencedClasses: [],
  19952. //>>excludeEnd("ide");
  19953. messageSends: ["lineIndicesDo:", "ifTrue:", "=", "+", "copyFrom:to:"]
  19954. }),
  19955. $globals.String);
  19956. $core.addMethod(
  19957. $core.method({
  19958. selector: "lines",
  19959. protocol: 'split join',
  19960. fn: function (){
  19961. var self=this;
  19962. var lines;
  19963. function $Array(){return $globals.Array||(typeof Array=="undefined"?nil:Array)}
  19964. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19965. return $core.withContext(function($ctx1) {
  19966. //>>excludeEnd("ctx");
  19967. var $1;
  19968. lines=$recv($Array())._new();
  19969. self._linesDo_((function(aLine){
  19970. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19971. return $core.withContext(function($ctx2) {
  19972. //>>excludeEnd("ctx");
  19973. return $recv(lines)._add_(aLine);
  19974. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19975. }, function($ctx2) {$ctx2.fillBlock({aLine:aLine},$ctx1,1)});
  19976. //>>excludeEnd("ctx");
  19977. }));
  19978. $1=lines;
  19979. return $1;
  19980. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19981. }, function($ctx1) {$ctx1.fill(self,"lines",{lines:lines},$globals.String)});
  19982. //>>excludeEnd("ctx");
  19983. },
  19984. //>>excludeStart("ide", pragmas.excludeIdeData);
  19985. args: [],
  19986. source: "lines\x0a\x09\x22Answer an array of lines composing this receiver without the line ending delimiters.\x22\x0a\x0a\x09| lines |\x0a\x09lines := Array new.\x0a\x09self linesDo: [ :aLine | lines add: aLine ].\x0a\x09^ lines",
  19987. referencedClasses: ["Array"],
  19988. //>>excludeEnd("ide");
  19989. messageSends: ["new", "linesDo:", "add:"]
  19990. }),
  19991. $globals.String);
  19992. $core.addMethod(
  19993. $core.method({
  19994. selector: "linesDo:",
  19995. protocol: 'split join',
  19996. fn: function (aBlock){
  19997. var self=this;
  19998. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  19999. return $core.withContext(function($ctx1) {
  20000. //>>excludeEnd("ctx");
  20001. self._lineIndicesDo_((function(start,endWithoutDelimiters,end){
  20002. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  20003. return $core.withContext(function($ctx2) {
  20004. //>>excludeEnd("ctx");
  20005. return $recv(aBlock)._value_(self._copyFrom_to_(start,endWithoutDelimiters));
  20006. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  20007. }, function($ctx2) {$ctx2.fillBlock({start:start,endWithoutDelimiters:endWithoutDelimiters,end:end},$ctx1,1)});
  20008. //>>excludeEnd("ctx");
  20009. }));
  20010. return self;
  20011. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  20012. }, function($ctx1) {$ctx1.fill(self,"linesDo:",{aBlock:aBlock},$globals.String)});
  20013. //>>excludeEnd("ctx");
  20014. },
  20015. //>>excludeStart("ide", pragmas.excludeIdeData);
  20016. args: ["aBlock"],
  20017. 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 lineIndicesDo: [ :start :endWithoutDelimiters :end |\x0a\x09\x09aBlock value: (self copyFrom: start to: endWithoutDelimiters) ]",
  20018. referencedClasses: [],
  20019. //>>excludeEnd("ide");
  20020. messageSends: ["lineIndicesDo:", "value:", "copyFrom:to:"]
  20021. }),
  20022. $globals.String);
  20023. $core.addMethod(
  20024. $core.method({
  20025. selector: "match:",
  20026. protocol: 'regular expressions',
  20027. fn: function (aRegexp){
  20028. var self=this;
  20029. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  20030. return $core.withContext(function($ctx1) {
  20031. //>>excludeEnd("ctx");
  20032. return self.search(aRegexp) != -1;
  20033. return self;
  20034. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  20035. }, function($ctx1) {$ctx1.fill(self,"match:",{aRegexp:aRegexp},$globals.String)});
  20036. //>>excludeEnd("ctx");
  20037. },
  20038. //>>excludeStart("ide", pragmas.excludeIdeData);
  20039. args: ["aRegexp"],
  20040. source: "match: aRegexp\x0a\x09<return self.search(aRegexp) != -1>",
  20041. referencedClasses: [],
  20042. //>>excludeEnd("ide");
  20043. messageSends: []
  20044. }),
  20045. $globals.String);
  20046. $core.addMethod(
  20047. $core.method({
  20048. selector: "matchesOf:",
  20049. protocol: 'regular expressions',
  20050. fn: function (aRegularExpression){
  20051. var self=this;
  20052. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  20053. return $core.withContext(function($ctx1) {
  20054. //>>excludeEnd("ctx");
  20055. return self.match(aRegularExpression);
  20056. return self;
  20057. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  20058. }, function($ctx1) {$ctx1.fill(self,"matchesOf:",{aRegularExpression:aRegularExpression},$globals.String)});
  20059. //>>excludeEnd("ctx");
  20060. },
  20061. //>>excludeStart("ide", pragmas.excludeIdeData);
  20062. args: ["aRegularExpression"],
  20063. source: "matchesOf: aRegularExpression\x0a\x09<return self.match(aRegularExpression)>",
  20064. referencedClasses: [],
  20065. //>>excludeEnd("ide");
  20066. messageSends: []
  20067. }),
  20068. $globals.String);
  20069. $core.addMethod(
  20070. $core.method({
  20071. selector: "numericallyIndexable",
  20072. protocol: 'private',
  20073. fn: function (){
  20074. var self=this;
  20075. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  20076. return $core.withContext(function($ctx1) {
  20077. //>>excludeEnd("ctx");
  20078. return String(self);
  20079. return self;
  20080. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  20081. }, function($ctx1) {$ctx1.fill(self,"numericallyIndexable",{},$globals.String)});
  20082. //>>excludeEnd("ctx");
  20083. },
  20084. //>>excludeStart("ide", pragmas.excludeIdeData);
  20085. args: [],
  20086. source: "numericallyIndexable\x0a\x09<return String(self)>",
  20087. referencedClasses: [],
  20088. //>>excludeEnd("ide");
  20089. messageSends: []
  20090. }),
  20091. $globals.String);
  20092. $core.addMethod(
  20093. $core.method({
  20094. selector: "printNl",
  20095. protocol: 'printing',
  20096. fn: function (){
  20097. var self=this;
  20098. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  20099. return $core.withContext(function($ctx1) {
  20100. //>>excludeEnd("ctx");
  20101. console.log(self);
  20102. return self;
  20103. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  20104. }, function($ctx1) {$ctx1.fill(self,"printNl",{},$globals.String)});
  20105. //>>excludeEnd("ctx");
  20106. },
  20107. //>>excludeStart("ide", pragmas.excludeIdeData);
  20108. args: [],
  20109. source: "printNl\x0a\x09<console.log(self)>",
  20110. referencedClasses: [],
  20111. //>>excludeEnd("ide");
  20112. messageSends: []
  20113. }),
  20114. $globals.String);
  20115. $core.addMethod(
  20116. $core.method({
  20117. selector: "printOn:",
  20118. protocol: 'printing',
  20119. fn: function (aStream){
  20120. var self=this;
  20121. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  20122. return $core.withContext(function($ctx1) {
  20123. //>>excludeEnd("ctx");
  20124. var $1;
  20125. $recv(aStream)._nextPutAll_("'");
  20126. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  20127. $ctx1.sendIdx["nextPutAll:"]=1;
  20128. //>>excludeEnd("ctx");
  20129. $recv(aStream)._nextPutAll_(self);
  20130. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  20131. $ctx1.sendIdx["nextPutAll:"]=2;
  20132. //>>excludeEnd("ctx");
  20133. $1=$recv(aStream)._nextPutAll_("'");
  20134. return self;
  20135. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  20136. }, function($ctx1) {$ctx1.fill(self,"printOn:",{aStream:aStream},$globals.String)});
  20137. //>>excludeEnd("ctx");
  20138. },
  20139. //>>excludeStart("ide", pragmas.excludeIdeData);
  20140. args: ["aStream"],
  20141. source: "printOn: aStream\x0a\x09aStream \x0a\x09\x09nextPutAll: '''';\x0a\x09\x09nextPutAll: self;\x0a\x09\x09nextPutAll: ''''",
  20142. referencedClasses: [],
  20143. //>>excludeEnd("ide");
  20144. messageSends: ["nextPutAll:"]
  20145. }),
  20146. $globals.String);
  20147. $core.addMethod(
  20148. $core.method({
  20149. selector: "replace:with:",
  20150. protocol: 'regular expressions',
  20151. fn: function (aString,anotherString){
  20152. var self=this;
  20153. function $RegularExpression(){return $globals.RegularExpression||(typeof RegularExpression=="undefined"?nil:RegularExpression)}
  20154. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  20155. return $core.withContext(function($ctx1) {
  20156. //>>excludeEnd("ctx");
  20157. var $1;
  20158. $1=self._replaceRegexp_with_($recv($RegularExpression())._fromString_flag_(aString,"g"),anotherString);
  20159. return $1;
  20160. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  20161. }, function($ctx1) {$ctx1.fill(self,"replace:with:",{aString:aString,anotherString:anotherString},$globals.String)});
  20162. //>>excludeEnd("ctx");
  20163. },
  20164. //>>excludeStart("ide", pragmas.excludeIdeData);
  20165. args: ["aString", "anotherString"],
  20166. source: "replace: aString with: anotherString\x0a\x09^ self replaceRegexp: (RegularExpression fromString: aString flag: 'g') with: anotherString",
  20167. referencedClasses: ["RegularExpression"],
  20168. //>>excludeEnd("ide");
  20169. messageSends: ["replaceRegexp:with:", "fromString:flag:"]
  20170. }),
  20171. $globals.String);
  20172. $core.addMethod(
  20173. $core.method({
  20174. selector: "replaceRegexp:with:",
  20175. protocol: 'regular expressions',
  20176. fn: function (aRegexp,aString){
  20177. var self=this;
  20178. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  20179. return $core.withContext(function($ctx1) {
  20180. //>>excludeEnd("ctx");
  20181. return self.replace(aRegexp, aString);
  20182. return self;
  20183. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  20184. }, function($ctx1) {$ctx1.fill(self,"replaceRegexp:with:",{aRegexp:aRegexp,aString:aString},$globals.String)});
  20185. //>>excludeEnd("ctx");
  20186. },
  20187. //>>excludeStart("ide", pragmas.excludeIdeData);
  20188. args: ["aRegexp", "aString"],
  20189. source: "replaceRegexp: aRegexp with: aString\x0a\x09<return self.replace(aRegexp, aString)>",
  20190. referencedClasses: [],
  20191. //>>excludeEnd("ide");
  20192. messageSends: []
  20193. }),
  20194. $globals.String);
  20195. $core.addMethod(
  20196. $core.method({
  20197. selector: "reversed",
  20198. protocol: 'converting',
  20199. fn: function (){
  20200. var self=this;
  20201. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  20202. return $core.withContext(function($ctx1) {
  20203. //>>excludeEnd("ctx");
  20204. return self.split("").reverse().join("");
  20205. return self;
  20206. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  20207. }, function($ctx1) {$ctx1.fill(self,"reversed",{},$globals.String)});
  20208. //>>excludeEnd("ctx");
  20209. },
  20210. //>>excludeStart("ide", pragmas.excludeIdeData);
  20211. args: [],
  20212. source: "reversed\x0a\x09<return self.split(\x22\x22).reverse().join(\x22\x22)>",
  20213. referencedClasses: [],
  20214. //>>excludeEnd("ide");
  20215. messageSends: []
  20216. }),
  20217. $globals.String);
  20218. $core.addMethod(
  20219. $core.method({
  20220. selector: "shallowCopy",
  20221. protocol: 'copying',
  20222. fn: function (){
  20223. var self=this;
  20224. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  20225. return $core.withContext(function($ctx1) {
  20226. //>>excludeEnd("ctx");
  20227. var $1;
  20228. $1=$recv(self._class())._fromString_(self);
  20229. return $1;
  20230. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  20231. }, function($ctx1) {$ctx1.fill(self,"shallowCopy",{},$globals.String)});
  20232. //>>excludeEnd("ctx");
  20233. },
  20234. //>>excludeStart("ide", pragmas.excludeIdeData);
  20235. args: [],
  20236. source: "shallowCopy\x0a\x09^ self class fromString: self",
  20237. referencedClasses: [],
  20238. //>>excludeEnd("ide");
  20239. messageSends: ["fromString:", "class"]
  20240. }),
  20241. $globals.String);
  20242. $core.addMethod(
  20243. $core.method({
  20244. selector: "size",
  20245. protocol: 'accessing',
  20246. fn: function (){
  20247. var self=this;
  20248. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  20249. return $core.withContext(function($ctx1) {
  20250. //>>excludeEnd("ctx");
  20251. return self.length;
  20252. return self;
  20253. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  20254. }, function($ctx1) {$ctx1.fill(self,"size",{},$globals.String)});
  20255. //>>excludeEnd("ctx");
  20256. },
  20257. //>>excludeStart("ide", pragmas.excludeIdeData);
  20258. args: [],
  20259. source: "size\x0a\x09<return self.length>",
  20260. referencedClasses: [],
  20261. //>>excludeEnd("ide");
  20262. messageSends: []
  20263. }),
  20264. $globals.String);
  20265. $core.addMethod(
  20266. $core.method({
  20267. selector: "subStrings:",
  20268. protocol: 'split join',
  20269. fn: function (aString){
  20270. var self=this;
  20271. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  20272. return $core.withContext(function($ctx1) {
  20273. //>>excludeEnd("ctx");
  20274. var $1;
  20275. $1=self._tokenize_(aString);
  20276. return $1;
  20277. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  20278. }, function($ctx1) {$ctx1.fill(self,"subStrings:",{aString:aString},$globals.String)});
  20279. //>>excludeEnd("ctx");
  20280. },
  20281. //>>excludeStart("ide", pragmas.excludeIdeData);
  20282. args: ["aString"],
  20283. source: "subStrings: aString\x0a\x09^ self tokenize: aString",
  20284. referencedClasses: [],
  20285. //>>excludeEnd("ide");
  20286. messageSends: ["tokenize:"]
  20287. }),
  20288. $globals.String);
  20289. $core.addMethod(
  20290. $core.method({
  20291. selector: "tokenize:",
  20292. protocol: 'split join',
  20293. fn: function (aString){
  20294. var self=this;
  20295. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  20296. return $core.withContext(function($ctx1) {
  20297. //>>excludeEnd("ctx");
  20298. return self.split(aString);
  20299. return self;
  20300. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  20301. }, function($ctx1) {$ctx1.fill(self,"tokenize:",{aString:aString},$globals.String)});
  20302. //>>excludeEnd("ctx");
  20303. },
  20304. //>>excludeStart("ide", pragmas.excludeIdeData);
  20305. args: ["aString"],
  20306. source: "tokenize: aString\x0a\x09<return self.split(aString)>",
  20307. referencedClasses: [],
  20308. //>>excludeEnd("ide");
  20309. messageSends: []
  20310. }),
  20311. $globals.String);
  20312. $core.addMethod(
  20313. $core.method({
  20314. selector: "trimBoth",
  20315. protocol: 'regular expressions',
  20316. fn: function (){
  20317. var self=this;
  20318. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  20319. return $core.withContext(function($ctx1) {
  20320. //>>excludeEnd("ctx");
  20321. var $1;
  20322. $1=self._trimBoth_("\x5cs");
  20323. return $1;
  20324. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  20325. }, function($ctx1) {$ctx1.fill(self,"trimBoth",{},$globals.String)});
  20326. //>>excludeEnd("ctx");
  20327. },
  20328. //>>excludeStart("ide", pragmas.excludeIdeData);
  20329. args: [],
  20330. source: "trimBoth\x0a\x09^ self trimBoth: '\x5cs'",
  20331. referencedClasses: [],
  20332. //>>excludeEnd("ide");
  20333. messageSends: ["trimBoth:"]
  20334. }),
  20335. $globals.String);
  20336. $core.addMethod(
  20337. $core.method({
  20338. selector: "trimBoth:",
  20339. protocol: 'regular expressions',
  20340. fn: function (separators){
  20341. var self=this;
  20342. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  20343. return $core.withContext(function($ctx1) {
  20344. //>>excludeEnd("ctx");
  20345. var $1;
  20346. $1=$recv(self._trimLeft_(separators))._trimRight_(separators);
  20347. return $1;
  20348. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  20349. }, function($ctx1) {$ctx1.fill(self,"trimBoth:",{separators:separators},$globals.String)});
  20350. //>>excludeEnd("ctx");
  20351. },
  20352. //>>excludeStart("ide", pragmas.excludeIdeData);
  20353. args: ["separators"],
  20354. source: "trimBoth: separators\x0a\x09^ (self trimLeft: separators) trimRight: separators",
  20355. referencedClasses: [],
  20356. //>>excludeEnd("ide");
  20357. messageSends: ["trimRight:", "trimLeft:"]
  20358. }),
  20359. $globals.String);
  20360. $core.addMethod(
  20361. $core.method({
  20362. selector: "trimLeft",
  20363. protocol: 'regular expressions',
  20364. fn: function (){
  20365. var self=this;
  20366. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  20367. return $core.withContext(function($ctx1) {
  20368. //>>excludeEnd("ctx");
  20369. var $1;
  20370. $1=self._trimLeft_("\x5cs");
  20371. return $1;
  20372. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  20373. }, function($ctx1) {$ctx1.fill(self,"trimLeft",{},$globals.String)});
  20374. //>>excludeEnd("ctx");
  20375. },
  20376. //>>excludeStart("ide", pragmas.excludeIdeData);
  20377. args: [],
  20378. source: "trimLeft\x0a\x09^ self trimLeft: '\x5cs'",
  20379. referencedClasses: [],
  20380. //>>excludeEnd("ide");
  20381. messageSends: ["trimLeft:"]
  20382. }),
  20383. $globals.String);
  20384. $core.addMethod(
  20385. $core.method({
  20386. selector: "trimLeft:",
  20387. protocol: 'regular expressions',
  20388. fn: function (separators){
  20389. var self=this;
  20390. function $RegularExpression(){return $globals.RegularExpression||(typeof RegularExpression=="undefined"?nil:RegularExpression)}
  20391. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  20392. return $core.withContext(function($ctx1) {
  20393. //>>excludeEnd("ctx");
  20394. var $3,$2,$1;
  20395. $3=$recv("^[".__comma(separators)).__comma("]+");
  20396. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  20397. $ctx1.sendIdx[","]=1;
  20398. //>>excludeEnd("ctx");
  20399. $2=$recv($RegularExpression())._fromString_flag_($3,"g");
  20400. $1=self._replaceRegexp_with_($2,"");
  20401. return $1;
  20402. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  20403. }, function($ctx1) {$ctx1.fill(self,"trimLeft:",{separators:separators},$globals.String)});
  20404. //>>excludeEnd("ctx");
  20405. },
  20406. //>>excludeStart("ide", pragmas.excludeIdeData);
  20407. args: ["separators"],
  20408. source: "trimLeft: separators\x0a\x09^ self replaceRegexp: (RegularExpression fromString: '^[', separators, ']+' flag: 'g') with: ''",
  20409. referencedClasses: ["RegularExpression"],
  20410. //>>excludeEnd("ide");
  20411. messageSends: ["replaceRegexp:with:", "fromString:flag:", ","]
  20412. }),
  20413. $globals.String);
  20414. $core.addMethod(
  20415. $core.method({
  20416. selector: "trimRight",
  20417. protocol: 'regular expressions',
  20418. fn: function (){
  20419. var self=this;
  20420. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  20421. return $core.withContext(function($ctx1) {
  20422. //>>excludeEnd("ctx");
  20423. var $1;
  20424. $1=self._trimRight_("\x5cs");
  20425. return $1;
  20426. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  20427. }, function($ctx1) {$ctx1.fill(self,"trimRight",{},$globals.String)});
  20428. //>>excludeEnd("ctx");
  20429. },
  20430. //>>excludeStart("ide", pragmas.excludeIdeData);
  20431. args: [],
  20432. source: "trimRight\x0a\x09^ self trimRight: '\x5cs'",
  20433. referencedClasses: [],
  20434. //>>excludeEnd("ide");
  20435. messageSends: ["trimRight:"]
  20436. }),
  20437. $globals.String);
  20438. $core.addMethod(
  20439. $core.method({
  20440. selector: "trimRight:",
  20441. protocol: 'regular expressions',
  20442. fn: function (separators){
  20443. var self=this;
  20444. function $RegularExpression(){return $globals.RegularExpression||(typeof RegularExpression=="undefined"?nil:RegularExpression)}
  20445. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  20446. return $core.withContext(function($ctx1) {
  20447. //>>excludeEnd("ctx");
  20448. var $3,$2,$1;
  20449. $3=$recv("[".__comma(separators)).__comma("]+$");
  20450. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  20451. $ctx1.sendIdx[","]=1;
  20452. //>>excludeEnd("ctx");
  20453. $2=$recv($RegularExpression())._fromString_flag_($3,"g");
  20454. $1=self._replaceRegexp_with_($2,"");
  20455. return $1;
  20456. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  20457. }, function($ctx1) {$ctx1.fill(self,"trimRight:",{separators:separators},$globals.String)});
  20458. //>>excludeEnd("ctx");
  20459. },
  20460. //>>excludeStart("ide", pragmas.excludeIdeData);
  20461. args: ["separators"],
  20462. source: "trimRight: separators\x0a\x09^ self replaceRegexp: (RegularExpression fromString: '[', separators, ']+$' flag: 'g') with: ''",
  20463. referencedClasses: ["RegularExpression"],
  20464. //>>excludeEnd("ide");
  20465. messageSends: ["replaceRegexp:with:", "fromString:flag:", ","]
  20466. }),
  20467. $globals.String);
  20468. $core.addMethod(
  20469. $core.method({
  20470. selector: "unescaped",
  20471. protocol: 'converting',
  20472. fn: function (){
  20473. var self=this;
  20474. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  20475. return $core.withContext(function($ctx1) {
  20476. //>>excludeEnd("ctx");
  20477. return unescape(self);
  20478. return self;
  20479. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  20480. }, function($ctx1) {$ctx1.fill(self,"unescaped",{},$globals.String)});
  20481. //>>excludeEnd("ctx");
  20482. },
  20483. //>>excludeStart("ide", pragmas.excludeIdeData);
  20484. args: [],
  20485. source: "unescaped\x0a\x09<return unescape(self)>",
  20486. referencedClasses: [],
  20487. //>>excludeEnd("ide");
  20488. messageSends: []
  20489. }),
  20490. $globals.String);
  20491. $core.addMethod(
  20492. $core.method({
  20493. selector: "uriComponentDecoded",
  20494. protocol: 'converting',
  20495. fn: function (){
  20496. var self=this;
  20497. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  20498. return $core.withContext(function($ctx1) {
  20499. //>>excludeEnd("ctx");
  20500. return decodeURIComponent(self);
  20501. return self;
  20502. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  20503. }, function($ctx1) {$ctx1.fill(self,"uriComponentDecoded",{},$globals.String)});
  20504. //>>excludeEnd("ctx");
  20505. },
  20506. //>>excludeStart("ide", pragmas.excludeIdeData);
  20507. args: [],
  20508. source: "uriComponentDecoded\x0a\x09<return decodeURIComponent(self)>",
  20509. referencedClasses: [],
  20510. //>>excludeEnd("ide");
  20511. messageSends: []
  20512. }),
  20513. $globals.String);
  20514. $core.addMethod(
  20515. $core.method({
  20516. selector: "uriComponentEncoded",
  20517. protocol: 'converting',
  20518. fn: function (){
  20519. var self=this;
  20520. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  20521. return $core.withContext(function($ctx1) {
  20522. //>>excludeEnd("ctx");
  20523. return encodeURIComponent(self);
  20524. return self;
  20525. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  20526. }, function($ctx1) {$ctx1.fill(self,"uriComponentEncoded",{},$globals.String)});
  20527. //>>excludeEnd("ctx");
  20528. },
  20529. //>>excludeStart("ide", pragmas.excludeIdeData);
  20530. args: [],
  20531. source: "uriComponentEncoded\x0a\x09<return encodeURIComponent(self)>",
  20532. referencedClasses: [],
  20533. //>>excludeEnd("ide");
  20534. messageSends: []
  20535. }),
  20536. $globals.String);
  20537. $core.addMethod(
  20538. $core.method({
  20539. selector: "uriDecoded",
  20540. protocol: 'converting',
  20541. fn: function (){
  20542. var self=this;
  20543. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  20544. return $core.withContext(function($ctx1) {
  20545. //>>excludeEnd("ctx");
  20546. return decodeURI(self);
  20547. return self;
  20548. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  20549. }, function($ctx1) {$ctx1.fill(self,"uriDecoded",{},$globals.String)});
  20550. //>>excludeEnd("ctx");
  20551. },
  20552. //>>excludeStart("ide", pragmas.excludeIdeData);
  20553. args: [],
  20554. source: "uriDecoded\x0a\x09<return decodeURI(self)>",
  20555. referencedClasses: [],
  20556. //>>excludeEnd("ide");
  20557. messageSends: []
  20558. }),
  20559. $globals.String);
  20560. $core.addMethod(
  20561. $core.method({
  20562. selector: "uriEncoded",
  20563. protocol: 'converting',
  20564. fn: function (){
  20565. var self=this;
  20566. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  20567. return $core.withContext(function($ctx1) {
  20568. //>>excludeEnd("ctx");
  20569. return encodeURI(self);
  20570. return self;
  20571. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  20572. }, function($ctx1) {$ctx1.fill(self,"uriEncoded",{},$globals.String)});
  20573. //>>excludeEnd("ctx");
  20574. },
  20575. //>>excludeStart("ide", pragmas.excludeIdeData);
  20576. args: [],
  20577. source: "uriEncoded\x0a\x09<return encodeURI(self)>",
  20578. referencedClasses: [],
  20579. //>>excludeEnd("ide");
  20580. messageSends: []
  20581. }),
  20582. $globals.String);
  20583. $core.addMethod(
  20584. $core.method({
  20585. selector: "value:",
  20586. protocol: 'evaluating',
  20587. fn: function (anObject){
  20588. var self=this;
  20589. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  20590. return $core.withContext(function($ctx1) {
  20591. //>>excludeEnd("ctx");
  20592. var $1;
  20593. $1=$recv(anObject)._perform_(self);
  20594. return $1;
  20595. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  20596. }, function($ctx1) {$ctx1.fill(self,"value:",{anObject:anObject},$globals.String)});
  20597. //>>excludeEnd("ctx");
  20598. },
  20599. //>>excludeStart("ide", pragmas.excludeIdeData);
  20600. args: ["anObject"],
  20601. source: "value: anObject \x0a\x09^ anObject perform: self",
  20602. referencedClasses: [],
  20603. //>>excludeEnd("ide");
  20604. messageSends: ["perform:"]
  20605. }),
  20606. $globals.String);
  20607. $core.addMethod(
  20608. $core.method({
  20609. selector: "cr",
  20610. protocol: 'accessing',
  20611. fn: function (){
  20612. var self=this;
  20613. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  20614. return $core.withContext(function($ctx1) {
  20615. //>>excludeEnd("ctx");
  20616. return '\r';
  20617. return self;
  20618. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  20619. }, function($ctx1) {$ctx1.fill(self,"cr",{},$globals.String.klass)});
  20620. //>>excludeEnd("ctx");
  20621. },
  20622. //>>excludeStart("ide", pragmas.excludeIdeData);
  20623. args: [],
  20624. source: "cr\x0a\x09<return '\x5cr'>",
  20625. referencedClasses: [],
  20626. //>>excludeEnd("ide");
  20627. messageSends: []
  20628. }),
  20629. $globals.String.klass);
  20630. $core.addMethod(
  20631. $core.method({
  20632. selector: "crlf",
  20633. protocol: 'accessing',
  20634. fn: function (){
  20635. var self=this;
  20636. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  20637. return $core.withContext(function($ctx1) {
  20638. //>>excludeEnd("ctx");
  20639. return '\r\n';
  20640. return self;
  20641. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  20642. }, function($ctx1) {$ctx1.fill(self,"crlf",{},$globals.String.klass)});
  20643. //>>excludeEnd("ctx");
  20644. },
  20645. //>>excludeStart("ide", pragmas.excludeIdeData);
  20646. args: [],
  20647. source: "crlf\x0a\x09<return '\x5cr\x5cn'>",
  20648. referencedClasses: [],
  20649. //>>excludeEnd("ide");
  20650. messageSends: []
  20651. }),
  20652. $globals.String.klass);
  20653. $core.addMethod(
  20654. $core.method({
  20655. selector: "esc",
  20656. protocol: 'accessing',
  20657. fn: function (){
  20658. var self=this;
  20659. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  20660. return $core.withContext(function($ctx1) {
  20661. //>>excludeEnd("ctx");
  20662. var $1;
  20663. $1=self._fromCharCode_((27));
  20664. return $1;
  20665. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  20666. }, function($ctx1) {$ctx1.fill(self,"esc",{},$globals.String.klass)});
  20667. //>>excludeEnd("ctx");
  20668. },
  20669. //>>excludeStart("ide", pragmas.excludeIdeData);
  20670. args: [],
  20671. source: "esc\x0a\x09^ self fromCharCode: 27",
  20672. referencedClasses: [],
  20673. //>>excludeEnd("ide");
  20674. messageSends: ["fromCharCode:"]
  20675. }),
  20676. $globals.String.klass);
  20677. $core.addMethod(
  20678. $core.method({
  20679. selector: "fromCharCode:",
  20680. protocol: 'instance creation',
  20681. fn: function (anInteger){
  20682. var self=this;
  20683. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  20684. return $core.withContext(function($ctx1) {
  20685. //>>excludeEnd("ctx");
  20686. return String.fromCharCode(anInteger);
  20687. return self;
  20688. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  20689. }, function($ctx1) {$ctx1.fill(self,"fromCharCode:",{anInteger:anInteger},$globals.String.klass)});
  20690. //>>excludeEnd("ctx");
  20691. },
  20692. //>>excludeStart("ide", pragmas.excludeIdeData);
  20693. args: ["anInteger"],
  20694. source: "fromCharCode: anInteger\x0a\x09<return String.fromCharCode(anInteger)>",
  20695. referencedClasses: [],
  20696. //>>excludeEnd("ide");
  20697. messageSends: []
  20698. }),
  20699. $globals.String.klass);
  20700. $core.addMethod(
  20701. $core.method({
  20702. selector: "fromString:",
  20703. protocol: 'instance creation',
  20704. fn: function (aString){
  20705. var self=this;
  20706. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  20707. return $core.withContext(function($ctx1) {
  20708. //>>excludeEnd("ctx");
  20709. return String(aString);
  20710. return self;
  20711. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  20712. }, function($ctx1) {$ctx1.fill(self,"fromString:",{aString:aString},$globals.String.klass)});
  20713. //>>excludeEnd("ctx");
  20714. },
  20715. //>>excludeStart("ide", pragmas.excludeIdeData);
  20716. args: ["aString"],
  20717. source: "fromString: aString\x0a\x09\x09<return String(aString)>",
  20718. referencedClasses: [],
  20719. //>>excludeEnd("ide");
  20720. messageSends: []
  20721. }),
  20722. $globals.String.klass);
  20723. $core.addMethod(
  20724. $core.method({
  20725. selector: "lf",
  20726. protocol: 'accessing',
  20727. fn: function (){
  20728. var self=this;
  20729. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  20730. return $core.withContext(function($ctx1) {
  20731. //>>excludeEnd("ctx");
  20732. return '\n';
  20733. return self;
  20734. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  20735. }, function($ctx1) {$ctx1.fill(self,"lf",{},$globals.String.klass)});
  20736. //>>excludeEnd("ctx");
  20737. },
  20738. //>>excludeStart("ide", pragmas.excludeIdeData);
  20739. args: [],
  20740. source: "lf\x0a\x09<return '\x5cn'>",
  20741. referencedClasses: [],
  20742. //>>excludeEnd("ide");
  20743. messageSends: []
  20744. }),
  20745. $globals.String.klass);
  20746. $core.addMethod(
  20747. $core.method({
  20748. selector: "random",
  20749. protocol: 'random',
  20750. fn: function (){
  20751. var self=this;
  20752. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  20753. return $core.withContext(function($ctx1) {
  20754. //>>excludeEnd("ctx");
  20755. return (Math.random()*(22/32)+(10/32)).toString(32).slice(2);;
  20756. return self;
  20757. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  20758. }, function($ctx1) {$ctx1.fill(self,"random",{},$globals.String.klass)});
  20759. //>>excludeEnd("ctx");
  20760. },
  20761. //>>excludeStart("ide", pragmas.excludeIdeData);
  20762. args: [],
  20763. source: "random\x0a\x09\x22Returns random alphanumeric string beginning with letter\x22\x0a\x09<return (Math.random()*(22/32)+(10/32)).toString(32).slice(2);>",
  20764. referencedClasses: [],
  20765. //>>excludeEnd("ide");
  20766. messageSends: []
  20767. }),
  20768. $globals.String.klass);
  20769. $core.addMethod(
  20770. $core.method({
  20771. selector: "randomNotIn:",
  20772. protocol: 'random',
  20773. fn: function (aString){
  20774. var self=this;
  20775. var result;
  20776. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  20777. return $core.withContext(function($ctx1) {
  20778. //>>excludeEnd("ctx");
  20779. var $1;
  20780. $recv((function(){
  20781. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  20782. return $core.withContext(function($ctx2) {
  20783. //>>excludeEnd("ctx");
  20784. result=self._random();
  20785. result;
  20786. return $recv(aString)._includesSubString_(result);
  20787. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  20788. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  20789. //>>excludeEnd("ctx");
  20790. }))._whileTrue();
  20791. $1=result;
  20792. return $1;
  20793. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  20794. }, function($ctx1) {$ctx1.fill(self,"randomNotIn:",{aString:aString,result:result},$globals.String.klass)});
  20795. //>>excludeEnd("ctx");
  20796. },
  20797. //>>excludeStart("ide", pragmas.excludeIdeData);
  20798. args: ["aString"],
  20799. source: "randomNotIn: aString\x0a\x09| result |\x0a\x09[ result := self random. aString includesSubString: result ] whileTrue.\x0a\x09^ result",
  20800. referencedClasses: [],
  20801. //>>excludeEnd("ide");
  20802. messageSends: ["whileTrue", "random", "includesSubString:"]
  20803. }),
  20804. $globals.String.klass);
  20805. $core.addMethod(
  20806. $core.method({
  20807. selector: "space",
  20808. protocol: 'accessing',
  20809. fn: function (){
  20810. var self=this;
  20811. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  20812. return $core.withContext(function($ctx1) {
  20813. //>>excludeEnd("ctx");
  20814. return ' ';
  20815. return self;
  20816. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  20817. }, function($ctx1) {$ctx1.fill(self,"space",{},$globals.String.klass)});
  20818. //>>excludeEnd("ctx");
  20819. },
  20820. //>>excludeStart("ide", pragmas.excludeIdeData);
  20821. args: [],
  20822. source: "space\x0a\x09<return ' '>",
  20823. referencedClasses: [],
  20824. //>>excludeEnd("ide");
  20825. messageSends: []
  20826. }),
  20827. $globals.String.klass);
  20828. $core.addMethod(
  20829. $core.method({
  20830. selector: "streamClass",
  20831. protocol: 'accessing',
  20832. fn: function (){
  20833. var self=this;
  20834. function $StringStream(){return $globals.StringStream||(typeof StringStream=="undefined"?nil:StringStream)}
  20835. return $StringStream();
  20836. },
  20837. //>>excludeStart("ide", pragmas.excludeIdeData);
  20838. args: [],
  20839. source: "streamClass\x0a\x09\x09^ StringStream",
  20840. referencedClasses: ["StringStream"],
  20841. //>>excludeEnd("ide");
  20842. messageSends: []
  20843. }),
  20844. $globals.String.klass);
  20845. $core.addMethod(
  20846. $core.method({
  20847. selector: "tab",
  20848. protocol: 'accessing',
  20849. fn: function (){
  20850. var self=this;
  20851. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  20852. return $core.withContext(function($ctx1) {
  20853. //>>excludeEnd("ctx");
  20854. return '\t';
  20855. return self;
  20856. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  20857. }, function($ctx1) {$ctx1.fill(self,"tab",{},$globals.String.klass)});
  20858. //>>excludeEnd("ctx");
  20859. },
  20860. //>>excludeStart("ide", pragmas.excludeIdeData);
  20861. args: [],
  20862. source: "tab\x0a\x09<return '\x5ct'>",
  20863. referencedClasses: [],
  20864. //>>excludeEnd("ide");
  20865. messageSends: []
  20866. }),
  20867. $globals.String.klass);
  20868. $core.addMethod(
  20869. $core.method({
  20870. selector: "value:",
  20871. protocol: 'instance creation',
  20872. fn: function (aUTFCharCode){
  20873. var self=this;
  20874. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  20875. return $core.withContext(function($ctx1) {
  20876. //>>excludeEnd("ctx");
  20877. return String.fromCharCode(aUTFCharCode);;
  20878. return self;
  20879. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  20880. }, function($ctx1) {$ctx1.fill(self,"value:",{aUTFCharCode:aUTFCharCode},$globals.String.klass)});
  20881. //>>excludeEnd("ctx");
  20882. },
  20883. //>>excludeStart("ide", pragmas.excludeIdeData);
  20884. args: ["aUTFCharCode"],
  20885. source: "value: aUTFCharCode\x0a\x0a\x09<return String.fromCharCode(aUTFCharCode);>",
  20886. referencedClasses: [],
  20887. //>>excludeEnd("ide");
  20888. messageSends: []
  20889. }),
  20890. $globals.String.klass);
  20891. $core.addClass('Set', $globals.Collection, ['defaultBucket', 'slowBucketStores', 'fastBuckets', 'size'], 'Kernel-Collections');
  20892. //>>excludeStart("ide", pragmas.excludeIdeData);
  20893. $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`.";
  20894. //>>excludeEnd("ide");
  20895. $core.addMethod(
  20896. $core.method({
  20897. selector: "=",
  20898. protocol: 'comparing',
  20899. fn: function (aCollection){
  20900. var self=this;
  20901. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  20902. return $core.withContext(function($ctx1) {
  20903. //>>excludeEnd("ctx");
  20904. var $2,$1,$4,$3,$5;
  20905. var $early={};
  20906. try {
  20907. $2=self._class();
  20908. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  20909. $ctx1.sendIdx["class"]=1;
  20910. //>>excludeEnd("ctx");
  20911. $1=$recv($2).__eq($recv(aCollection)._class());
  20912. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  20913. $ctx1.sendIdx["="]=1;
  20914. //>>excludeEnd("ctx");
  20915. if(!$core.assert($1)){
  20916. return false;
  20917. };
  20918. $4=self._size();
  20919. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  20920. $ctx1.sendIdx["size"]=1;
  20921. //>>excludeEnd("ctx");
  20922. $3=$recv($4).__eq($recv(aCollection)._size());
  20923. if(!$core.assert($3)){
  20924. return false;
  20925. };
  20926. self._do_((function(each){
  20927. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  20928. return $core.withContext(function($ctx2) {
  20929. //>>excludeEnd("ctx");
  20930. $5=$recv(aCollection)._includes_(each);
  20931. if(!$core.assert($5)){
  20932. throw $early=[false];
  20933. };
  20934. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  20935. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,3)});
  20936. //>>excludeEnd("ctx");
  20937. }));
  20938. return true;
  20939. }
  20940. catch(e) {if(e===$early)return e[0]; throw e}
  20941. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  20942. }, function($ctx1) {$ctx1.fill(self,"=",{aCollection:aCollection},$globals.Set)});
  20943. //>>excludeEnd("ctx");
  20944. },
  20945. //>>excludeStart("ide", pragmas.excludeIdeData);
  20946. args: ["aCollection"],
  20947. source: "= aCollection\x0a\x09self class = aCollection class ifFalse: [ ^ false ].\x0a\x09self size = aCollection size ifFalse: [ ^ false ].\x0a\x09self do: [ :each | (aCollection includes: each) ifFalse: [ ^ false ] ].\x0a\x09^ true",
  20948. referencedClasses: [],
  20949. //>>excludeEnd("ide");
  20950. messageSends: ["ifFalse:", "=", "class", "size", "do:", "includes:"]
  20951. }),
  20952. $globals.Set);
  20953. $core.addMethod(
  20954. $core.method({
  20955. selector: "add:",
  20956. protocol: 'adding/removing',
  20957. fn: function (anObject){
  20958. var self=this;
  20959. var bucket;
  20960. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  20961. return $core.withContext(function($ctx1) {
  20962. //>>excludeEnd("ctx");
  20963. var $2,$1,$receiver;
  20964. bucket=self._bucketsOfElement_(anObject);
  20965. $2=$recv(bucket)._second();
  20966. if(($receiver = $2) == null || $receiver.isNil){
  20967. var object,slowBucket;
  20968. object=$recv(bucket)._first();
  20969. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  20970. $ctx1.sendIdx["first"]=1;
  20971. //>>excludeEnd("ctx");
  20972. object;
  20973. slowBucket=$recv(bucket)._third();
  20974. slowBucket;
  20975. $recv(slowBucket)._indexOf_ifAbsent_(object,(function(){
  20976. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  20977. return $core.withContext(function($ctx2) {
  20978. //>>excludeEnd("ctx");
  20979. $recv(slowBucket)._add_(object);
  20980. self["@size"]=$recv(self["@size"]).__plus((1));
  20981. return self["@size"];
  20982. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  20983. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
  20984. //>>excludeEnd("ctx");
  20985. }));
  20986. $1=object;
  20987. } else {
  20988. var primitiveBucket;
  20989. primitiveBucket=$receiver;
  20990. $1=self._add_in_($recv(bucket)._first(),primitiveBucket);
  20991. };
  20992. return $1;
  20993. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  20994. }, function($ctx1) {$ctx1.fill(self,"add:",{anObject:anObject,bucket:bucket},$globals.Set)});
  20995. //>>excludeEnd("ctx");
  20996. },
  20997. //>>excludeStart("ide", pragmas.excludeIdeData);
  20998. args: ["anObject"],
  20999. 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 ]",
  21000. referencedClasses: [],
  21001. //>>excludeEnd("ide");
  21002. messageSends: ["bucketsOfElement:", "ifNil:ifNotNil:", "second", "first", "third", "indexOf:ifAbsent:", "add:", "+", "add:in:"]
  21003. }),
  21004. $globals.Set);
  21005. $core.addMethod(
  21006. $core.method({
  21007. selector: "add:in:",
  21008. protocol: 'private',
  21009. fn: function (anObject,anotherObject){
  21010. var self=this;
  21011. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21012. return $core.withContext(function($ctx1) {
  21013. //>>excludeEnd("ctx");
  21014. if (anObject in anotherObject.store) { return false; }
  21015. self['@size']++;
  21016. return anotherObject.store[anObject] = true;
  21017. ;
  21018. return self;
  21019. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21020. }, function($ctx1) {$ctx1.fill(self,"add:in:",{anObject:anObject,anotherObject:anotherObject},$globals.Set)});
  21021. //>>excludeEnd("ctx");
  21022. },
  21023. //>>excludeStart("ide", pragmas.excludeIdeData);
  21024. args: ["anObject", "anotherObject"],
  21025. source: "add: anObject in: anotherObject\x0a\x09<\x0a\x09\x09if (anObject in anotherObject.store) { return false; }\x0a\x09\x09self['@size']++;\x0a\x09\x09return anotherObject.store[anObject] = true;\x0a\x09>",
  21026. referencedClasses: [],
  21027. //>>excludeEnd("ide");
  21028. messageSends: []
  21029. }),
  21030. $globals.Set);
  21031. $core.addMethod(
  21032. $core.method({
  21033. selector: "bucketsOfElement:",
  21034. protocol: 'private',
  21035. fn: function (anObject){
  21036. var self=this;
  21037. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21038. return $core.withContext(function($ctx1) {
  21039. //>>excludeEnd("ctx");
  21040. var type, bucket, prim = anObject == null ? (anObject = nil) : anObject.valueOf();
  21041. if ((type = typeof prim) === "object") {
  21042. if (anObject !== nil) {
  21043. bucket = null;
  21044. self['@slowBucketStores'].some(function (store) {
  21045. return bucket = store._bucketOfElement_(anObject);
  21046. });
  21047. return [ anObject, null, bucket || self['@defaultBucket'] ];
  21048. }
  21049. // include nil to well-known objects under 'boolean' fastBucket
  21050. prim = null;
  21051. type = 'boolean';
  21052. }
  21053. return [ prim, self['@fastBuckets'][type] ];
  21054. ;
  21055. return self;
  21056. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21057. }, function($ctx1) {$ctx1.fill(self,"bucketsOfElement:",{anObject:anObject},$globals.Set)});
  21058. //>>excludeEnd("ctx");
  21059. },
  21060. //>>excludeStart("ide", pragmas.excludeIdeData);
  21061. args: ["anObject"],
  21062. 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<\x0a\x09\x09var type, bucket, prim = anObject == null ? (anObject = nil) : anObject.valueOf();\x0a\x09\x09if ((type = typeof prim) === \x22object\x22) {\x0a\x09\x09\x09if (anObject !== nil) {\x0a\x09\x09\x09\x09bucket = null;\x0a\x09\x09\x09\x09self['@slowBucketStores'].some(function (store) {\x0a\x09\x09\x09\x09\x09return bucket = store._bucketOfElement_(anObject);\x0a\x09\x09\x09\x09});\x0a\x09\x09\x09\x09return [ anObject, null, bucket || self['@defaultBucket'] ];\x0a\x09\x09\x09}\x0a\x09\x09\x09\x0a\x09\x09\x09// include nil to well-known objects under 'boolean' fastBucket\x0a\x09\x09\x09prim = null;\x0a\x09\x09\x09type = 'boolean';\x0a\x09\x09}\x0a\x09\x09return [ prim, self['@fastBuckets'][type] ];\x0a\x09>",
  21063. referencedClasses: [],
  21064. //>>excludeEnd("ide");
  21065. messageSends: []
  21066. }),
  21067. $globals.Set);
  21068. $core.addMethod(
  21069. $core.method({
  21070. selector: "classNameOf:",
  21071. protocol: 'private',
  21072. fn: function (anObject){
  21073. var self=this;
  21074. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21075. return $core.withContext(function($ctx1) {
  21076. //>>excludeEnd("ctx");
  21077. return anObject.klass && anObject.klass.className;
  21078. return self;
  21079. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21080. }, function($ctx1) {$ctx1.fill(self,"classNameOf:",{anObject:anObject},$globals.Set)});
  21081. //>>excludeEnd("ctx");
  21082. },
  21083. //>>excludeStart("ide", pragmas.excludeIdeData);
  21084. args: ["anObject"],
  21085. 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<return anObject.klass && anObject.klass.className>",
  21086. referencedClasses: [],
  21087. //>>excludeEnd("ide");
  21088. messageSends: []
  21089. }),
  21090. $globals.Set);
  21091. $core.addMethod(
  21092. $core.method({
  21093. selector: "collect:",
  21094. protocol: 'enumerating',
  21095. fn: function (aBlock){
  21096. var self=this;
  21097. var collection;
  21098. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21099. return $core.withContext(function($ctx1) {
  21100. //>>excludeEnd("ctx");
  21101. var $1;
  21102. collection=$recv(self._class())._new();
  21103. self._do_((function(each){
  21104. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21105. return $core.withContext(function($ctx2) {
  21106. //>>excludeEnd("ctx");
  21107. return $recv(collection)._add_($recv(aBlock)._value_(each));
  21108. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21109. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  21110. //>>excludeEnd("ctx");
  21111. }));
  21112. $1=collection;
  21113. return $1;
  21114. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21115. }, function($ctx1) {$ctx1.fill(self,"collect:",{aBlock:aBlock,collection:collection},$globals.Set)});
  21116. //>>excludeEnd("ctx");
  21117. },
  21118. //>>excludeStart("ide", pragmas.excludeIdeData);
  21119. args: ["aBlock"],
  21120. source: "collect: aBlock\x0a\x09| collection |\x0a\x09collection := self class new.\x0a\x09self do: [ :each | collection add: (aBlock value: each) ].\x0a\x09^ collection",
  21121. referencedClasses: [],
  21122. //>>excludeEnd("ide");
  21123. messageSends: ["new", "class", "do:", "add:", "value:"]
  21124. }),
  21125. $globals.Set);
  21126. $core.addMethod(
  21127. $core.method({
  21128. selector: "detect:ifNone:",
  21129. protocol: 'enumerating',
  21130. fn: function (aBlock,anotherBlock){
  21131. var self=this;
  21132. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21133. return $core.withContext(function($ctx1) {
  21134. //>>excludeEnd("ctx");
  21135. var $1,$2;
  21136. var $early={};
  21137. try {
  21138. self._do_((function(each){
  21139. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21140. return $core.withContext(function($ctx2) {
  21141. //>>excludeEnd("ctx");
  21142. $1=$recv(aBlock)._value_(each);
  21143. if($core.assert($1)){
  21144. throw $early=[each];
  21145. };
  21146. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21147. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  21148. //>>excludeEnd("ctx");
  21149. }));
  21150. $2=$recv(anotherBlock)._value();
  21151. return $2;
  21152. }
  21153. catch(e) {if(e===$early)return e[0]; throw e}
  21154. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21155. }, function($ctx1) {$ctx1.fill(self,"detect:ifNone:",{aBlock:aBlock,anotherBlock:anotherBlock},$globals.Set)});
  21156. //>>excludeEnd("ctx");
  21157. },
  21158. //>>excludeStart("ide", pragmas.excludeIdeData);
  21159. args: ["aBlock", "anotherBlock"],
  21160. source: "detect: aBlock ifNone: anotherBlock\x0a\x09self do: [ :each | (aBlock value: each) ifTrue: [ ^each ] ].\x0a\x09^ anotherBlock value",
  21161. referencedClasses: [],
  21162. //>>excludeEnd("ide");
  21163. messageSends: ["do:", "ifTrue:", "value:", "value"]
  21164. }),
  21165. $globals.Set);
  21166. $core.addMethod(
  21167. $core.method({
  21168. selector: "do:",
  21169. protocol: 'enumerating',
  21170. fn: function (aBlock){
  21171. var self=this;
  21172. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21173. return $core.withContext(function($ctx1) {
  21174. //>>excludeEnd("ctx");
  21175. var el, keys, i;
  21176. el = self['@fastBuckets'];
  21177. keys = Object.keys(el);
  21178. for (i = 0; i < keys.length; ++i) {
  21179. var fastBucket = el[keys[i]], fn = fastBucket.fn, store = Object.keys(fastBucket.store);
  21180. if (fn) { for (var j = 0; j < store.length; ++j) { aBlock._value_(fn(store[j])); } }
  21181. else { store._do_(aBlock); }
  21182. }
  21183. el = self['@slowBucketStores'];
  21184. for (i = 0; i < el.length; ++i) { el[i]._do_(aBlock); }
  21185. self['@defaultBucket']._do_(aBlock);
  21186. ;
  21187. return self;
  21188. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21189. }, function($ctx1) {$ctx1.fill(self,"do:",{aBlock:aBlock},$globals.Set)});
  21190. //>>excludeEnd("ctx");
  21191. },
  21192. //>>excludeStart("ide", pragmas.excludeIdeData);
  21193. args: ["aBlock"],
  21194. source: "do: aBlock\x0a\x09<\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\x09self['@defaultBucket']._do_(aBlock);\x0a\x09>",
  21195. referencedClasses: [],
  21196. //>>excludeEnd("ide");
  21197. messageSends: []
  21198. }),
  21199. $globals.Set);
  21200. $core.addMethod(
  21201. $core.method({
  21202. selector: "includes:",
  21203. protocol: 'testing',
  21204. fn: function (anObject){
  21205. var self=this;
  21206. var bucket;
  21207. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21208. return $core.withContext(function($ctx1) {
  21209. //>>excludeEnd("ctx");
  21210. var $2,$3,$4,$1,$receiver;
  21211. bucket=self._bucketsOfElement_(anObject);
  21212. $2=$recv(bucket)._second();
  21213. if(($receiver = $2) == null || $receiver.isNil){
  21214. $3=$recv(bucket)._third();
  21215. $4=$recv(bucket)._first();
  21216. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21217. $ctx1.sendIdx["first"]=1;
  21218. //>>excludeEnd("ctx");
  21219. $1=$recv($3)._includes_($4);
  21220. } else {
  21221. var primitiveBucket;
  21222. primitiveBucket=$receiver;
  21223. $1=self._includes_in_($recv(bucket)._first(),primitiveBucket);
  21224. };
  21225. return $1;
  21226. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21227. }, function($ctx1) {$ctx1.fill(self,"includes:",{anObject:anObject,bucket:bucket},$globals.Set)});
  21228. //>>excludeEnd("ctx");
  21229. },
  21230. //>>excludeStart("ide", pragmas.excludeIdeData);
  21231. args: ["anObject"],
  21232. 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 ]",
  21233. referencedClasses: [],
  21234. //>>excludeEnd("ide");
  21235. messageSends: ["bucketsOfElement:", "ifNil:ifNotNil:", "second", "includes:", "third", "first", "includes:in:"]
  21236. }),
  21237. $globals.Set);
  21238. $core.addMethod(
  21239. $core.method({
  21240. selector: "includes:in:",
  21241. protocol: 'private',
  21242. fn: function (anObject,anotherObject){
  21243. var self=this;
  21244. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21245. return $core.withContext(function($ctx1) {
  21246. //>>excludeEnd("ctx");
  21247. return anObject in anotherObject.store;
  21248. return self;
  21249. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21250. }, function($ctx1) {$ctx1.fill(self,"includes:in:",{anObject:anObject,anotherObject:anotherObject},$globals.Set)});
  21251. //>>excludeEnd("ctx");
  21252. },
  21253. //>>excludeStart("ide", pragmas.excludeIdeData);
  21254. args: ["anObject", "anotherObject"],
  21255. source: "includes: anObject in: anotherObject\x0a\x09<return anObject in anotherObject.store>",
  21256. referencedClasses: [],
  21257. //>>excludeEnd("ide");
  21258. messageSends: []
  21259. }),
  21260. $globals.Set);
  21261. $core.addMethod(
  21262. $core.method({
  21263. selector: "initialize",
  21264. protocol: 'initialization',
  21265. fn: function (){
  21266. var self=this;
  21267. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21268. return $core.withContext(function($ctx1) {
  21269. //>>excludeEnd("ctx");
  21270. var $1;
  21271. (
  21272. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21273. $ctx1.supercall = true,
  21274. //>>excludeEnd("ctx");
  21275. $globals.Set.superclass.fn.prototype._initialize.apply($recv(self), []));
  21276. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21277. $ctx1.supercall = false;
  21278. //>>excludeEnd("ctx");;
  21279. self["@defaultBucket"]=[];
  21280. self._initializeSlowBucketStores();
  21281. $1=self._removeAll();
  21282. return self;
  21283. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21284. }, function($ctx1) {$ctx1.fill(self,"initialize",{},$globals.Set)});
  21285. //>>excludeEnd("ctx");
  21286. },
  21287. //>>excludeStart("ide", pragmas.excludeIdeData);
  21288. args: [],
  21289. source: "initialize\x0a\x09super initialize.\x0a\x09\x0a\x09defaultBucket := #().\x0a\x09self\x0a\x09\x09initializeSlowBucketStores;\x0a\x09\x09removeAll",
  21290. referencedClasses: [],
  21291. //>>excludeEnd("ide");
  21292. messageSends: ["initialize", "initializeSlowBucketStores", "removeAll"]
  21293. }),
  21294. $globals.Set);
  21295. $core.addMethod(
  21296. $core.method({
  21297. selector: "initializeSlowBucketStores",
  21298. protocol: 'initialization',
  21299. fn: function (){
  21300. var self=this;
  21301. function $ArrayBucketStore(){return $globals.ArrayBucketStore||(typeof ArrayBucketStore=="undefined"?nil:ArrayBucketStore)}
  21302. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21303. return $core.withContext(function($ctx1) {
  21304. //>>excludeEnd("ctx");
  21305. var $1;
  21306. $1=$recv($ArrayBucketStore())._hashBlock_((function(x){
  21307. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21308. return $core.withContext(function($ctx2) {
  21309. //>>excludeEnd("ctx");
  21310. return self._classNameOf_(x);
  21311. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21312. }, function($ctx2) {$ctx2.fillBlock({x:x},$ctx1,1)});
  21313. //>>excludeEnd("ctx");
  21314. }));
  21315. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21316. $ctx1.sendIdx["hashBlock:"]=1;
  21317. //>>excludeEnd("ctx");
  21318. self["@slowBucketStores"]=[$1,$recv($ArrayBucketStore())._hashBlock_((function(x){
  21319. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21320. return $core.withContext(function($ctx2) {
  21321. //>>excludeEnd("ctx");
  21322. return self._jsConstructorNameOf_(x);
  21323. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21324. }, function($ctx2) {$ctx2.fillBlock({x:x},$ctx1,2)});
  21325. //>>excludeEnd("ctx");
  21326. }))];
  21327. return self;
  21328. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21329. }, function($ctx1) {$ctx1.fill(self,"initializeSlowBucketStores",{},$globals.Set)});
  21330. //>>excludeEnd("ctx");
  21331. },
  21332. //>>excludeStart("ide", pragmas.excludeIdeData);
  21333. args: [],
  21334. source: "initializeSlowBucketStores\x0a\x09slowBucketStores := {\x0a\x09\x09ArrayBucketStore hashBlock: [ :x | self classNameOf: x ].\x0a\x09\x09ArrayBucketStore hashBlock: [ :x | self jsConstructorNameOf: x ]\x0a\x09}",
  21335. referencedClasses: ["ArrayBucketStore"],
  21336. //>>excludeEnd("ide");
  21337. messageSends: ["hashBlock:", "classNameOf:", "jsConstructorNameOf:"]
  21338. }),
  21339. $globals.Set);
  21340. $core.addMethod(
  21341. $core.method({
  21342. selector: "jsConstructorNameOf:",
  21343. protocol: 'private',
  21344. fn: function (anObject){
  21345. var self=this;
  21346. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21347. return $core.withContext(function($ctx1) {
  21348. //>>excludeEnd("ctx");
  21349. return anObject.constructor && anObject.constructor.name;
  21350. return self;
  21351. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21352. }, function($ctx1) {$ctx1.fill(self,"jsConstructorNameOf:",{anObject:anObject},$globals.Set)});
  21353. //>>excludeEnd("ctx");
  21354. },
  21355. //>>excludeStart("ide", pragmas.excludeIdeData);
  21356. args: ["anObject"],
  21357. source: "jsConstructorNameOf: anObject\x0a\x09<return anObject.constructor && anObject.constructor.name>",
  21358. referencedClasses: [],
  21359. //>>excludeEnd("ide");
  21360. messageSends: []
  21361. }),
  21362. $globals.Set);
  21363. $core.addMethod(
  21364. $core.method({
  21365. selector: "printOn:",
  21366. protocol: 'printing',
  21367. fn: function (aStream){
  21368. var self=this;
  21369. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21370. return $core.withContext(function($ctx1) {
  21371. //>>excludeEnd("ctx");
  21372. (
  21373. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21374. $ctx1.supercall = true,
  21375. //>>excludeEnd("ctx");
  21376. $globals.Set.superclass.fn.prototype._printOn_.apply($recv(self), [aStream]));
  21377. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21378. $ctx1.supercall = false;
  21379. //>>excludeEnd("ctx");;
  21380. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21381. $ctx1.sendIdx["printOn:"]=1;
  21382. //>>excludeEnd("ctx");
  21383. $recv(aStream)._nextPutAll_(" (");
  21384. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21385. $ctx1.sendIdx["nextPutAll:"]=1;
  21386. //>>excludeEnd("ctx");
  21387. self._do_separatedBy_((function(each){
  21388. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21389. return $core.withContext(function($ctx2) {
  21390. //>>excludeEnd("ctx");
  21391. return $recv(each)._printOn_(aStream);
  21392. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21393. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  21394. //>>excludeEnd("ctx");
  21395. }),(function(){
  21396. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21397. return $core.withContext(function($ctx2) {
  21398. //>>excludeEnd("ctx");
  21399. return $recv(aStream)._nextPutAll_(" ");
  21400. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21401. $ctx2.sendIdx["nextPutAll:"]=2;
  21402. //>>excludeEnd("ctx");
  21403. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21404. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
  21405. //>>excludeEnd("ctx");
  21406. }));
  21407. $recv(aStream)._nextPutAll_(")");
  21408. return self;
  21409. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21410. }, function($ctx1) {$ctx1.fill(self,"printOn:",{aStream:aStream},$globals.Set)});
  21411. //>>excludeEnd("ctx");
  21412. },
  21413. //>>excludeStart("ide", pragmas.excludeIdeData);
  21414. args: ["aStream"],
  21415. 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: ')'",
  21416. referencedClasses: [],
  21417. //>>excludeEnd("ide");
  21418. messageSends: ["printOn:", "nextPutAll:", "do:separatedBy:"]
  21419. }),
  21420. $globals.Set);
  21421. $core.addMethod(
  21422. $core.method({
  21423. selector: "remove:ifAbsent:",
  21424. protocol: 'adding/removing',
  21425. fn: function (anObject,aBlock){
  21426. var self=this;
  21427. var bucket;
  21428. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21429. return $core.withContext(function($ctx1) {
  21430. //>>excludeEnd("ctx");
  21431. var $2,$3,$4,$5,$1,$receiver;
  21432. var $early={};
  21433. try {
  21434. bucket=self._bucketsOfElement_(anObject);
  21435. $2=$recv(bucket)._second();
  21436. if(($receiver = $2) == null || $receiver.isNil){
  21437. $3=$recv(bucket)._third();
  21438. $4=$recv(bucket)._first();
  21439. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21440. $ctx1.sendIdx["first"]=1;
  21441. //>>excludeEnd("ctx");
  21442. $recv($3)._remove_ifAbsent_($4,(function(){
  21443. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21444. return $core.withContext(function($ctx2) {
  21445. //>>excludeEnd("ctx");
  21446. $5=$recv(aBlock)._value();
  21447. throw $early=[$5];
  21448. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21449. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
  21450. //>>excludeEnd("ctx");
  21451. }));
  21452. self["@size"]=$recv(self["@size"]).__minus((1));
  21453. $1=self["@size"];
  21454. } else {
  21455. var primitiveBucket;
  21456. primitiveBucket=$receiver;
  21457. $1=self._remove_in_($recv(bucket)._first(),primitiveBucket);
  21458. };
  21459. return $1;
  21460. }
  21461. catch(e) {if(e===$early)return e[0]; throw e}
  21462. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21463. }, function($ctx1) {$ctx1.fill(self,"remove:ifAbsent:",{anObject:anObject,aBlock:aBlock,bucket:bucket},$globals.Set)});
  21464. //>>excludeEnd("ctx");
  21465. },
  21466. //>>excludeStart("ide", pragmas.excludeIdeData);
  21467. args: ["anObject", "aBlock"],
  21468. source: "remove: anObject ifAbsent: aBlock\x0a\x09| bucket |\x0a\x09bucket := self bucketsOfElement: anObject.\x0a\x09^ bucket second\x0a\x09\x09ifNil: [ bucket third remove: bucket first ifAbsent: [ ^aBlock value ]. size := size - 1 ]\x0a\x09\x09ifNotNil: [ :primitiveBucket | self remove: bucket first in: primitiveBucket ]",
  21469. referencedClasses: [],
  21470. //>>excludeEnd("ide");
  21471. messageSends: ["bucketsOfElement:", "ifNil:ifNotNil:", "second", "remove:ifAbsent:", "third", "first", "value", "-", "remove:in:"]
  21472. }),
  21473. $globals.Set);
  21474. $core.addMethod(
  21475. $core.method({
  21476. selector: "remove:in:",
  21477. protocol: 'private',
  21478. fn: function (anObject,anotherObject){
  21479. var self=this;
  21480. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21481. return $core.withContext(function($ctx1) {
  21482. //>>excludeEnd("ctx");
  21483. if (delete anotherObject.store[anObject]) self['@size']--;
  21484. return self;
  21485. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21486. }, function($ctx1) {$ctx1.fill(self,"remove:in:",{anObject:anObject,anotherObject:anotherObject},$globals.Set)});
  21487. //>>excludeEnd("ctx");
  21488. },
  21489. //>>excludeStart("ide", pragmas.excludeIdeData);
  21490. args: ["anObject", "anotherObject"],
  21491. source: "remove: anObject in: anotherObject\x0a\x09<if (delete anotherObject.store[anObject]) self['@size']-->",
  21492. referencedClasses: [],
  21493. //>>excludeEnd("ide");
  21494. messageSends: []
  21495. }),
  21496. $globals.Set);
  21497. $core.addMethod(
  21498. $core.method({
  21499. selector: "removeAll",
  21500. protocol: 'adding/removing',
  21501. fn: function (){
  21502. var self=this;
  21503. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21504. return $core.withContext(function($ctx1) {
  21505. //>>excludeEnd("ctx");
  21506. self['@fastBuckets'] = {
  21507. 'boolean': { store: Object.create(null), fn: function (x) { return {'true': true, 'false': false, 'null': null}[x]; } },
  21508. 'number': { store: Object.create(null), fn: Number },
  21509. 'string': { store: Object.create(null) }
  21510. };
  21511. self['@slowBucketStores'].forEach(function (x) { x._removeAll(); });
  21512. self['@defaultBucket']._removeAll();
  21513. self['@size'] = 0;
  21514. ;
  21515. return self;
  21516. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21517. }, function($ctx1) {$ctx1.fill(self,"removeAll",{},$globals.Set)});
  21518. //>>excludeEnd("ctx");
  21519. },
  21520. //>>excludeStart("ide", pragmas.excludeIdeData);
  21521. args: [],
  21522. source: "removeAll\x0a\x09<\x0a\x09\x09self['@fastBuckets'] = {\x0a\x09\x09\x09'boolean': { store: Object.create(null), fn: function (x) { return {'true': true, 'false': false, 'null': null}[x]; } },\x0a\x09\x09\x09'number': { store: Object.create(null), fn: Number },\x0a\x09\x09\x09'string': { store: Object.create(null) }\x0a\x09\x09};\x0a\x09\x09self['@slowBucketStores'].forEach(function (x) { x._removeAll(); });\x0a\x09\x09self['@defaultBucket']._removeAll();\x0a\x09\x09self['@size'] = 0;\x0a\x09>",
  21523. referencedClasses: [],
  21524. //>>excludeEnd("ide");
  21525. messageSends: []
  21526. }),
  21527. $globals.Set);
  21528. $core.addMethod(
  21529. $core.method({
  21530. selector: "select:",
  21531. protocol: 'enumerating',
  21532. fn: function (aBlock){
  21533. var self=this;
  21534. var collection;
  21535. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21536. return $core.withContext(function($ctx1) {
  21537. //>>excludeEnd("ctx");
  21538. var $1,$2;
  21539. collection=$recv(self._class())._new();
  21540. self._do_((function(each){
  21541. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21542. return $core.withContext(function($ctx2) {
  21543. //>>excludeEnd("ctx");
  21544. $1=$recv(aBlock)._value_(each);
  21545. if($core.assert($1)){
  21546. return $recv(collection)._add_(each);
  21547. };
  21548. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21549. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  21550. //>>excludeEnd("ctx");
  21551. }));
  21552. $2=collection;
  21553. return $2;
  21554. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21555. }, function($ctx1) {$ctx1.fill(self,"select:",{aBlock:aBlock,collection:collection},$globals.Set)});
  21556. //>>excludeEnd("ctx");
  21557. },
  21558. //>>excludeStart("ide", pragmas.excludeIdeData);
  21559. args: ["aBlock"],
  21560. 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",
  21561. referencedClasses: [],
  21562. //>>excludeEnd("ide");
  21563. messageSends: ["new", "class", "do:", "ifTrue:", "value:", "add:"]
  21564. }),
  21565. $globals.Set);
  21566. $core.addMethod(
  21567. $core.method({
  21568. selector: "size",
  21569. protocol: 'accessing',
  21570. fn: function (){
  21571. var self=this;
  21572. var $1;
  21573. $1=self["@size"];
  21574. return $1;
  21575. },
  21576. //>>excludeStart("ide", pragmas.excludeIdeData);
  21577. args: [],
  21578. source: "size\x0a\x09^ size",
  21579. referencedClasses: [],
  21580. //>>excludeEnd("ide");
  21581. messageSends: []
  21582. }),
  21583. $globals.Set);
  21584. $core.addClass('Queue', $globals.Object, ['read', 'readIndex', 'write'], 'Kernel-Collections');
  21585. //>>excludeStart("ide", pragmas.excludeIdeData);
  21586. $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.";
  21587. //>>excludeEnd("ide");
  21588. $core.addMethod(
  21589. $core.method({
  21590. selector: "initialize",
  21591. protocol: 'initialization',
  21592. fn: function (){
  21593. var self=this;
  21594. function $OrderedCollection(){return $globals.OrderedCollection||(typeof OrderedCollection=="undefined"?nil:OrderedCollection)}
  21595. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21596. return $core.withContext(function($ctx1) {
  21597. //>>excludeEnd("ctx");
  21598. (
  21599. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21600. $ctx1.supercall = true,
  21601. //>>excludeEnd("ctx");
  21602. $globals.Queue.superclass.fn.prototype._initialize.apply($recv(self), []));
  21603. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21604. $ctx1.supercall = false;
  21605. //>>excludeEnd("ctx");;
  21606. self["@read"]=$recv($OrderedCollection())._new();
  21607. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21608. $ctx1.sendIdx["new"]=1;
  21609. //>>excludeEnd("ctx");
  21610. self["@write"]=$recv($OrderedCollection())._new();
  21611. self["@readIndex"]=(1);
  21612. return self;
  21613. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21614. }, function($ctx1) {$ctx1.fill(self,"initialize",{},$globals.Queue)});
  21615. //>>excludeEnd("ctx");
  21616. },
  21617. //>>excludeStart("ide", pragmas.excludeIdeData);
  21618. args: [],
  21619. source: "initialize\x0a\x09super initialize.\x0a\x09read := OrderedCollection new.\x0a\x09write := OrderedCollection new.\x0a\x09readIndex := 1",
  21620. referencedClasses: ["OrderedCollection"],
  21621. //>>excludeEnd("ide");
  21622. messageSends: ["initialize", "new"]
  21623. }),
  21624. $globals.Queue);
  21625. $core.addMethod(
  21626. $core.method({
  21627. selector: "next",
  21628. protocol: 'accessing',
  21629. fn: function (){
  21630. var self=this;
  21631. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21632. return $core.withContext(function($ctx1) {
  21633. //>>excludeEnd("ctx");
  21634. var $1;
  21635. $1=self._nextIfAbsent_((function(){
  21636. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21637. return $core.withContext(function($ctx2) {
  21638. //>>excludeEnd("ctx");
  21639. return self._error_("Cannot read from empty Queue.");
  21640. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21641. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  21642. //>>excludeEnd("ctx");
  21643. }));
  21644. return $1;
  21645. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21646. }, function($ctx1) {$ctx1.fill(self,"next",{},$globals.Queue)});
  21647. //>>excludeEnd("ctx");
  21648. },
  21649. //>>excludeStart("ide", pragmas.excludeIdeData);
  21650. args: [],
  21651. source: "next\x0a\x09^ self nextIfAbsent: [ self error: 'Cannot read from empty Queue.' ]",
  21652. referencedClasses: [],
  21653. //>>excludeEnd("ide");
  21654. messageSends: ["nextIfAbsent:", "error:"]
  21655. }),
  21656. $globals.Queue);
  21657. $core.addMethod(
  21658. $core.method({
  21659. selector: "nextIfAbsent:",
  21660. protocol: 'accessing',
  21661. fn: function (aBlock){
  21662. var self=this;
  21663. var result;
  21664. function $OrderedCollection(){return $globals.OrderedCollection||(typeof OrderedCollection=="undefined"?nil:OrderedCollection)}
  21665. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21666. return $core.withContext(function($ctx1) {
  21667. //>>excludeEnd("ctx");
  21668. var $1,$2,$3,$4;
  21669. var $early={};
  21670. try {
  21671. result=$recv(self["@read"])._at_ifAbsent_(self["@readIndex"],(function(){
  21672. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21673. return $core.withContext(function($ctx2) {
  21674. //>>excludeEnd("ctx");
  21675. $1=$recv(self["@write"])._isEmpty();
  21676. if($core.assert($1)){
  21677. $2=$recv(self["@readIndex"]).__gt((1));
  21678. if($core.assert($2)){
  21679. self["@read"]=[];
  21680. self["@read"];
  21681. self["@readIndex"]=(1);
  21682. self["@readIndex"];
  21683. };
  21684. $3=$recv(aBlock)._value();
  21685. throw $early=[$3];
  21686. };
  21687. self["@read"]=self["@write"];
  21688. self["@read"];
  21689. self["@readIndex"]=(1);
  21690. self["@readIndex"];
  21691. self["@write"]=$recv($OrderedCollection())._new();
  21692. self["@write"];
  21693. return $recv(self["@read"])._first();
  21694. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21695. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  21696. //>>excludeEnd("ctx");
  21697. }));
  21698. $recv(self["@read"])._at_put_(self["@readIndex"],nil);
  21699. self["@readIndex"]=$recv(self["@readIndex"]).__plus((1));
  21700. $4=result;
  21701. return $4;
  21702. }
  21703. catch(e) {if(e===$early)return e[0]; throw e}
  21704. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21705. }, function($ctx1) {$ctx1.fill(self,"nextIfAbsent:",{aBlock:aBlock,result:result},$globals.Queue)});
  21706. //>>excludeEnd("ctx");
  21707. },
  21708. //>>excludeStart("ide", pragmas.excludeIdeData);
  21709. args: ["aBlock"],
  21710. source: "nextIfAbsent: aBlock\x0a\x09| result |\x0a\x09result := read at: readIndex ifAbsent: [\x0a\x09\x09write isEmpty ifTrue: [\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",
  21711. referencedClasses: ["OrderedCollection"],
  21712. //>>excludeEnd("ide");
  21713. messageSends: ["at:ifAbsent:", "ifTrue:", "isEmpty", ">", "value", "new", "first", "at:put:", "+"]
  21714. }),
  21715. $globals.Queue);
  21716. $core.addMethod(
  21717. $core.method({
  21718. selector: "nextPut:",
  21719. protocol: 'accessing',
  21720. fn: function (anObject){
  21721. var self=this;
  21722. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21723. return $core.withContext(function($ctx1) {
  21724. //>>excludeEnd("ctx");
  21725. $recv(self["@write"])._add_(anObject);
  21726. return self;
  21727. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21728. }, function($ctx1) {$ctx1.fill(self,"nextPut:",{anObject:anObject},$globals.Queue)});
  21729. //>>excludeEnd("ctx");
  21730. },
  21731. //>>excludeStart("ide", pragmas.excludeIdeData);
  21732. args: ["anObject"],
  21733. source: "nextPut: anObject\x0a\x09write add: anObject",
  21734. referencedClasses: [],
  21735. //>>excludeEnd("ide");
  21736. messageSends: ["add:"]
  21737. }),
  21738. $globals.Queue);
  21739. $core.addClass('RegularExpression', $globals.Object, [], 'Kernel-Collections');
  21740. //>>excludeStart("ide", pragmas.excludeIdeData);
  21741. $globals.RegularExpression.comment="I represent a regular expression object. My instances are JavaScript `RegExp` object.";
  21742. //>>excludeEnd("ide");
  21743. $core.addMethod(
  21744. $core.method({
  21745. selector: "compile:",
  21746. protocol: 'evaluating',
  21747. fn: function (aString){
  21748. var self=this;
  21749. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21750. return $core.withContext(function($ctx1) {
  21751. //>>excludeEnd("ctx");
  21752. return self.compile(aString);
  21753. return self;
  21754. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21755. }, function($ctx1) {$ctx1.fill(self,"compile:",{aString:aString},$globals.RegularExpression)});
  21756. //>>excludeEnd("ctx");
  21757. },
  21758. //>>excludeStart("ide", pragmas.excludeIdeData);
  21759. args: ["aString"],
  21760. source: "compile: aString\x0a\x09<return self.compile(aString)>",
  21761. referencedClasses: [],
  21762. //>>excludeEnd("ide");
  21763. messageSends: []
  21764. }),
  21765. $globals.RegularExpression);
  21766. $core.addMethod(
  21767. $core.method({
  21768. selector: "exec:",
  21769. protocol: 'evaluating',
  21770. fn: function (aString){
  21771. var self=this;
  21772. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21773. return $core.withContext(function($ctx1) {
  21774. //>>excludeEnd("ctx");
  21775. return self.exec(aString) || nil;
  21776. return self;
  21777. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21778. }, function($ctx1) {$ctx1.fill(self,"exec:",{aString:aString},$globals.RegularExpression)});
  21779. //>>excludeEnd("ctx");
  21780. },
  21781. //>>excludeStart("ide", pragmas.excludeIdeData);
  21782. args: ["aString"],
  21783. source: "exec: aString\x0a\x09<return self.exec(aString) || nil>",
  21784. referencedClasses: [],
  21785. //>>excludeEnd("ide");
  21786. messageSends: []
  21787. }),
  21788. $globals.RegularExpression);
  21789. $core.addMethod(
  21790. $core.method({
  21791. selector: "test:",
  21792. protocol: 'evaluating',
  21793. fn: function (aString){
  21794. var self=this;
  21795. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21796. return $core.withContext(function($ctx1) {
  21797. //>>excludeEnd("ctx");
  21798. return self.test(aString);
  21799. return self;
  21800. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21801. }, function($ctx1) {$ctx1.fill(self,"test:",{aString:aString},$globals.RegularExpression)});
  21802. //>>excludeEnd("ctx");
  21803. },
  21804. //>>excludeStart("ide", pragmas.excludeIdeData);
  21805. args: ["aString"],
  21806. source: "test: aString\x0a\x09<return self.test(aString)>",
  21807. referencedClasses: [],
  21808. //>>excludeEnd("ide");
  21809. messageSends: []
  21810. }),
  21811. $globals.RegularExpression);
  21812. $core.addMethod(
  21813. $core.method({
  21814. selector: "fromString:",
  21815. protocol: 'instance creation',
  21816. fn: function (aString){
  21817. var self=this;
  21818. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21819. return $core.withContext(function($ctx1) {
  21820. //>>excludeEnd("ctx");
  21821. var $1;
  21822. $1=self._fromString_flag_(aString,"");
  21823. return $1;
  21824. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21825. }, function($ctx1) {$ctx1.fill(self,"fromString:",{aString:aString},$globals.RegularExpression.klass)});
  21826. //>>excludeEnd("ctx");
  21827. },
  21828. //>>excludeStart("ide", pragmas.excludeIdeData);
  21829. args: ["aString"],
  21830. source: "fromString: aString\x0a\x09\x09^ self fromString: aString flag: ''",
  21831. referencedClasses: [],
  21832. //>>excludeEnd("ide");
  21833. messageSends: ["fromString:flag:"]
  21834. }),
  21835. $globals.RegularExpression.klass);
  21836. $core.addMethod(
  21837. $core.method({
  21838. selector: "fromString:flag:",
  21839. protocol: 'instance creation',
  21840. fn: function (aString,anotherString){
  21841. var self=this;
  21842. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21843. return $core.withContext(function($ctx1) {
  21844. //>>excludeEnd("ctx");
  21845. return new RegExp(aString, anotherString);
  21846. return self;
  21847. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21848. }, function($ctx1) {$ctx1.fill(self,"fromString:flag:",{aString:aString,anotherString:anotherString},$globals.RegularExpression.klass)});
  21849. //>>excludeEnd("ctx");
  21850. },
  21851. //>>excludeStart("ide", pragmas.excludeIdeData);
  21852. args: ["aString", "anotherString"],
  21853. source: "fromString: aString flag: anotherString\x0a\x09<return new RegExp(aString, anotherString)>",
  21854. referencedClasses: [],
  21855. //>>excludeEnd("ide");
  21856. messageSends: []
  21857. }),
  21858. $globals.RegularExpression.klass);
  21859. $core.addClass('Stream', $globals.Object, ['collection', 'position', 'streamSize'], 'Kernel-Collections');
  21860. //>>excludeStart("ide", pragmas.excludeIdeData);
  21861. $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.";
  21862. //>>excludeEnd("ide");
  21863. $core.addMethod(
  21864. $core.method({
  21865. selector: "<<",
  21866. protocol: 'writing',
  21867. fn: function (anObject){
  21868. var self=this;
  21869. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21870. return $core.withContext(function($ctx1) {
  21871. //>>excludeEnd("ctx");
  21872. self._write_(anObject);
  21873. return self;
  21874. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21875. }, function($ctx1) {$ctx1.fill(self,"<<",{anObject:anObject},$globals.Stream)});
  21876. //>>excludeEnd("ctx");
  21877. },
  21878. //>>excludeStart("ide", pragmas.excludeIdeData);
  21879. args: ["anObject"],
  21880. source: "<< anObject\x0a\x09self write: anObject",
  21881. referencedClasses: [],
  21882. //>>excludeEnd("ide");
  21883. messageSends: ["write:"]
  21884. }),
  21885. $globals.Stream);
  21886. $core.addMethod(
  21887. $core.method({
  21888. selector: "atEnd",
  21889. protocol: 'testing',
  21890. fn: function (){
  21891. var self=this;
  21892. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21893. return $core.withContext(function($ctx1) {
  21894. //>>excludeEnd("ctx");
  21895. var $1;
  21896. $1=$recv(self._position()).__eq(self._size());
  21897. return $1;
  21898. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21899. }, function($ctx1) {$ctx1.fill(self,"atEnd",{},$globals.Stream)});
  21900. //>>excludeEnd("ctx");
  21901. },
  21902. //>>excludeStart("ide", pragmas.excludeIdeData);
  21903. args: [],
  21904. source: "atEnd\x0a\x09^ self position = self size",
  21905. referencedClasses: [],
  21906. //>>excludeEnd("ide");
  21907. messageSends: ["=", "position", "size"]
  21908. }),
  21909. $globals.Stream);
  21910. $core.addMethod(
  21911. $core.method({
  21912. selector: "atStart",
  21913. protocol: 'testing',
  21914. fn: function (){
  21915. var self=this;
  21916. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21917. return $core.withContext(function($ctx1) {
  21918. //>>excludeEnd("ctx");
  21919. var $1;
  21920. $1=$recv(self._position()).__eq((0));
  21921. return $1;
  21922. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21923. }, function($ctx1) {$ctx1.fill(self,"atStart",{},$globals.Stream)});
  21924. //>>excludeEnd("ctx");
  21925. },
  21926. //>>excludeStart("ide", pragmas.excludeIdeData);
  21927. args: [],
  21928. source: "atStart\x0a\x09^ self position = 0",
  21929. referencedClasses: [],
  21930. //>>excludeEnd("ide");
  21931. messageSends: ["=", "position"]
  21932. }),
  21933. $globals.Stream);
  21934. $core.addMethod(
  21935. $core.method({
  21936. selector: "close",
  21937. protocol: 'actions',
  21938. fn: function (){
  21939. var self=this;
  21940. return self;
  21941. },
  21942. //>>excludeStart("ide", pragmas.excludeIdeData);
  21943. args: [],
  21944. source: "close",
  21945. referencedClasses: [],
  21946. //>>excludeEnd("ide");
  21947. messageSends: []
  21948. }),
  21949. $globals.Stream);
  21950. $core.addMethod(
  21951. $core.method({
  21952. selector: "collection",
  21953. protocol: 'accessing',
  21954. fn: function (){
  21955. var self=this;
  21956. var $1;
  21957. $1=self["@collection"];
  21958. return $1;
  21959. },
  21960. //>>excludeStart("ide", pragmas.excludeIdeData);
  21961. args: [],
  21962. source: "collection\x0a\x09^ collection",
  21963. referencedClasses: [],
  21964. //>>excludeEnd("ide");
  21965. messageSends: []
  21966. }),
  21967. $globals.Stream);
  21968. $core.addMethod(
  21969. $core.method({
  21970. selector: "contents",
  21971. protocol: 'accessing',
  21972. fn: function (){
  21973. var self=this;
  21974. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21975. return $core.withContext(function($ctx1) {
  21976. //>>excludeEnd("ctx");
  21977. var $1;
  21978. $1=$recv(self._collection())._copyFrom_to_((1),self._streamSize());
  21979. return $1;
  21980. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21981. }, function($ctx1) {$ctx1.fill(self,"contents",{},$globals.Stream)});
  21982. //>>excludeEnd("ctx");
  21983. },
  21984. //>>excludeStart("ide", pragmas.excludeIdeData);
  21985. args: [],
  21986. source: "contents\x0a\x09^ self collection\x0a\x09\x09copyFrom: 1\x0a\x09\x09to: self streamSize",
  21987. referencedClasses: [],
  21988. //>>excludeEnd("ide");
  21989. messageSends: ["copyFrom:to:", "collection", "streamSize"]
  21990. }),
  21991. $globals.Stream);
  21992. $core.addMethod(
  21993. $core.method({
  21994. selector: "do:",
  21995. protocol: 'enumerating',
  21996. fn: function (aBlock){
  21997. var self=this;
  21998. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  21999. return $core.withContext(function($ctx1) {
  22000. //>>excludeEnd("ctx");
  22001. $recv((function(){
  22002. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22003. return $core.withContext(function($ctx2) {
  22004. //>>excludeEnd("ctx");
  22005. return self._atEnd();
  22006. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22007. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  22008. //>>excludeEnd("ctx");
  22009. }))._whileFalse_((function(){
  22010. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22011. return $core.withContext(function($ctx2) {
  22012. //>>excludeEnd("ctx");
  22013. return $recv(aBlock)._value_(self._next());
  22014. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22015. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
  22016. //>>excludeEnd("ctx");
  22017. }));
  22018. return self;
  22019. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22020. }, function($ctx1) {$ctx1.fill(self,"do:",{aBlock:aBlock},$globals.Stream)});
  22021. //>>excludeEnd("ctx");
  22022. },
  22023. //>>excludeStart("ide", pragmas.excludeIdeData);
  22024. args: ["aBlock"],
  22025. source: "do: aBlock\x0a\x09[ self atEnd ] whileFalse: [ aBlock value: self next ]",
  22026. referencedClasses: [],
  22027. //>>excludeEnd("ide");
  22028. messageSends: ["whileFalse:", "atEnd", "value:", "next"]
  22029. }),
  22030. $globals.Stream);
  22031. $core.addMethod(
  22032. $core.method({
  22033. selector: "flush",
  22034. protocol: 'actions',
  22035. fn: function (){
  22036. var self=this;
  22037. return self;
  22038. },
  22039. //>>excludeStart("ide", pragmas.excludeIdeData);
  22040. args: [],
  22041. source: "flush",
  22042. referencedClasses: [],
  22043. //>>excludeEnd("ide");
  22044. messageSends: []
  22045. }),
  22046. $globals.Stream);
  22047. $core.addMethod(
  22048. $core.method({
  22049. selector: "isEmpty",
  22050. protocol: 'testing',
  22051. fn: function (){
  22052. var self=this;
  22053. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22054. return $core.withContext(function($ctx1) {
  22055. //>>excludeEnd("ctx");
  22056. var $1;
  22057. $1=$recv(self._size()).__eq((0));
  22058. return $1;
  22059. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22060. }, function($ctx1) {$ctx1.fill(self,"isEmpty",{},$globals.Stream)});
  22061. //>>excludeEnd("ctx");
  22062. },
  22063. //>>excludeStart("ide", pragmas.excludeIdeData);
  22064. args: [],
  22065. source: "isEmpty\x0a\x09^ self size = 0",
  22066. referencedClasses: [],
  22067. //>>excludeEnd("ide");
  22068. messageSends: ["=", "size"]
  22069. }),
  22070. $globals.Stream);
  22071. $core.addMethod(
  22072. $core.method({
  22073. selector: "next",
  22074. protocol: 'reading',
  22075. fn: function (){
  22076. var self=this;
  22077. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22078. return $core.withContext(function($ctx1) {
  22079. //>>excludeEnd("ctx");
  22080. var $2,$4,$3,$1;
  22081. $2=self._atEnd();
  22082. if($core.assert($2)){
  22083. $1=nil;
  22084. } else {
  22085. $4=self._position();
  22086. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22087. $ctx1.sendIdx["position"]=1;
  22088. //>>excludeEnd("ctx");
  22089. $3=$recv($4).__plus((1));
  22090. self._position_($3);
  22091. $1=$recv(self["@collection"])._at_(self._position());
  22092. };
  22093. return $1;
  22094. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22095. }, function($ctx1) {$ctx1.fill(self,"next",{},$globals.Stream)});
  22096. //>>excludeEnd("ctx");
  22097. },
  22098. //>>excludeStart("ide", pragmas.excludeIdeData);
  22099. args: [],
  22100. 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 ]",
  22101. referencedClasses: [],
  22102. //>>excludeEnd("ide");
  22103. messageSends: ["ifTrue:ifFalse:", "atEnd", "position:", "+", "position", "at:"]
  22104. }),
  22105. $globals.Stream);
  22106. $core.addMethod(
  22107. $core.method({
  22108. selector: "next:",
  22109. protocol: 'reading',
  22110. fn: function (anInteger){
  22111. var self=this;
  22112. var tempCollection;
  22113. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22114. return $core.withContext(function($ctx1) {
  22115. //>>excludeEnd("ctx");
  22116. var $1,$2;
  22117. tempCollection=$recv($recv(self._collection())._class())._new();
  22118. $recv(anInteger)._timesRepeat_((function(){
  22119. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22120. return $core.withContext(function($ctx2) {
  22121. //>>excludeEnd("ctx");
  22122. $1=self._atEnd();
  22123. if(!$core.assert($1)){
  22124. return $recv(tempCollection)._add_(self._next());
  22125. };
  22126. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22127. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  22128. //>>excludeEnd("ctx");
  22129. }));
  22130. $2=tempCollection;
  22131. return $2;
  22132. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22133. }, function($ctx1) {$ctx1.fill(self,"next:",{anInteger:anInteger,tempCollection:tempCollection},$globals.Stream)});
  22134. //>>excludeEnd("ctx");
  22135. },
  22136. //>>excludeStart("ide", pragmas.excludeIdeData);
  22137. args: ["anInteger"],
  22138. 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",
  22139. referencedClasses: [],
  22140. //>>excludeEnd("ide");
  22141. messageSends: ["new", "class", "collection", "timesRepeat:", "ifFalse:", "atEnd", "add:", "next"]
  22142. }),
  22143. $globals.Stream);
  22144. $core.addMethod(
  22145. $core.method({
  22146. selector: "nextPut:",
  22147. protocol: 'writing',
  22148. fn: function (anObject){
  22149. var self=this;
  22150. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22151. return $core.withContext(function($ctx1) {
  22152. //>>excludeEnd("ctx");
  22153. var $2,$1,$3,$4;
  22154. $2=self._position();
  22155. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22156. $ctx1.sendIdx["position"]=1;
  22157. //>>excludeEnd("ctx");
  22158. $1=$recv($2).__plus((1));
  22159. self._position_($1);
  22160. $3=self._collection();
  22161. $4=self._position();
  22162. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22163. $ctx1.sendIdx["position"]=2;
  22164. //>>excludeEnd("ctx");
  22165. $recv($3)._at_put_($4,anObject);
  22166. self._setStreamSize_($recv(self._streamSize())._max_(self._position()));
  22167. return self;
  22168. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22169. }, function($ctx1) {$ctx1.fill(self,"nextPut:",{anObject:anObject},$globals.Stream)});
  22170. //>>excludeEnd("ctx");
  22171. },
  22172. //>>excludeStart("ide", pragmas.excludeIdeData);
  22173. args: ["anObject"],
  22174. 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)",
  22175. referencedClasses: [],
  22176. //>>excludeEnd("ide");
  22177. messageSends: ["position:", "+", "position", "at:put:", "collection", "setStreamSize:", "max:", "streamSize"]
  22178. }),
  22179. $globals.Stream);
  22180. $core.addMethod(
  22181. $core.method({
  22182. selector: "nextPutAll:",
  22183. protocol: 'writing',
  22184. fn: function (aCollection){
  22185. var self=this;
  22186. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22187. return $core.withContext(function($ctx1) {
  22188. //>>excludeEnd("ctx");
  22189. $recv(aCollection)._do_((function(each){
  22190. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22191. return $core.withContext(function($ctx2) {
  22192. //>>excludeEnd("ctx");
  22193. return self._nextPut_(each);
  22194. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22195. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  22196. //>>excludeEnd("ctx");
  22197. }));
  22198. return self;
  22199. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22200. }, function($ctx1) {$ctx1.fill(self,"nextPutAll:",{aCollection:aCollection},$globals.Stream)});
  22201. //>>excludeEnd("ctx");
  22202. },
  22203. //>>excludeStart("ide", pragmas.excludeIdeData);
  22204. args: ["aCollection"],
  22205. source: "nextPutAll: aCollection\x0a\x09aCollection do: [ :each |\x0a\x09\x09self nextPut: each ]",
  22206. referencedClasses: [],
  22207. //>>excludeEnd("ide");
  22208. messageSends: ["do:", "nextPut:"]
  22209. }),
  22210. $globals.Stream);
  22211. $core.addMethod(
  22212. $core.method({
  22213. selector: "nextPutString:",
  22214. protocol: 'writing',
  22215. fn: function (aString){
  22216. var self=this;
  22217. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22218. return $core.withContext(function($ctx1) {
  22219. //>>excludeEnd("ctx");
  22220. self._nextPut_(aString);
  22221. return self;
  22222. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22223. }, function($ctx1) {$ctx1.fill(self,"nextPutString:",{aString:aString},$globals.Stream)});
  22224. //>>excludeEnd("ctx");
  22225. },
  22226. //>>excludeStart("ide", pragmas.excludeIdeData);
  22227. args: ["aString"],
  22228. source: "nextPutString: aString\x0a\x09self nextPut: aString",
  22229. referencedClasses: [],
  22230. //>>excludeEnd("ide");
  22231. messageSends: ["nextPut:"]
  22232. }),
  22233. $globals.Stream);
  22234. $core.addMethod(
  22235. $core.method({
  22236. selector: "peek",
  22237. protocol: 'reading',
  22238. fn: function (){
  22239. var self=this;
  22240. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22241. return $core.withContext(function($ctx1) {
  22242. //>>excludeEnd("ctx");
  22243. var $2,$1;
  22244. $2=self._atEnd();
  22245. if(!$core.assert($2)){
  22246. $1=$recv(self._collection())._at_($recv(self._position()).__plus((1)));
  22247. };
  22248. return $1;
  22249. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22250. }, function($ctx1) {$ctx1.fill(self,"peek",{},$globals.Stream)});
  22251. //>>excludeEnd("ctx");
  22252. },
  22253. //>>excludeStart("ide", pragmas.excludeIdeData);
  22254. args: [],
  22255. source: "peek\x0a\x09^ self atEnd ifFalse: [\x0a\x09\x09self collection at: self position + 1 ]",
  22256. referencedClasses: [],
  22257. //>>excludeEnd("ide");
  22258. messageSends: ["ifFalse:", "atEnd", "at:", "collection", "+", "position"]
  22259. }),
  22260. $globals.Stream);
  22261. $core.addMethod(
  22262. $core.method({
  22263. selector: "position",
  22264. protocol: 'accessing',
  22265. fn: function (){
  22266. var self=this;
  22267. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22268. return $core.withContext(function($ctx1) {
  22269. //>>excludeEnd("ctx");
  22270. var $2,$1,$receiver;
  22271. $2=self["@position"];
  22272. if(($receiver = $2) == null || $receiver.isNil){
  22273. self["@position"]=(0);
  22274. $1=self["@position"];
  22275. } else {
  22276. $1=$2;
  22277. };
  22278. return $1;
  22279. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22280. }, function($ctx1) {$ctx1.fill(self,"position",{},$globals.Stream)});
  22281. //>>excludeEnd("ctx");
  22282. },
  22283. //>>excludeStart("ide", pragmas.excludeIdeData);
  22284. args: [],
  22285. source: "position\x0a\x09^ position ifNil: [ position := 0 ]",
  22286. referencedClasses: [],
  22287. //>>excludeEnd("ide");
  22288. messageSends: ["ifNil:"]
  22289. }),
  22290. $globals.Stream);
  22291. $core.addMethod(
  22292. $core.method({
  22293. selector: "position:",
  22294. protocol: 'accessing',
  22295. fn: function (anInteger){
  22296. var self=this;
  22297. self["@position"]=anInteger;
  22298. return self;
  22299. },
  22300. //>>excludeStart("ide", pragmas.excludeIdeData);
  22301. args: ["anInteger"],
  22302. source: "position: anInteger\x0a\x09position := anInteger",
  22303. referencedClasses: [],
  22304. //>>excludeEnd("ide");
  22305. messageSends: []
  22306. }),
  22307. $globals.Stream);
  22308. $core.addMethod(
  22309. $core.method({
  22310. selector: "reset",
  22311. protocol: 'actions',
  22312. fn: function (){
  22313. var self=this;
  22314. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22315. return $core.withContext(function($ctx1) {
  22316. //>>excludeEnd("ctx");
  22317. self._position_((0));
  22318. return self;
  22319. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22320. }, function($ctx1) {$ctx1.fill(self,"reset",{},$globals.Stream)});
  22321. //>>excludeEnd("ctx");
  22322. },
  22323. //>>excludeStart("ide", pragmas.excludeIdeData);
  22324. args: [],
  22325. source: "reset\x0a\x09self position: 0",
  22326. referencedClasses: [],
  22327. //>>excludeEnd("ide");
  22328. messageSends: ["position:"]
  22329. }),
  22330. $globals.Stream);
  22331. $core.addMethod(
  22332. $core.method({
  22333. selector: "resetContents",
  22334. protocol: 'actions',
  22335. fn: function (){
  22336. var self=this;
  22337. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22338. return $core.withContext(function($ctx1) {
  22339. //>>excludeEnd("ctx");
  22340. self._reset();
  22341. self._setStreamSize_((0));
  22342. return self;
  22343. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22344. }, function($ctx1) {$ctx1.fill(self,"resetContents",{},$globals.Stream)});
  22345. //>>excludeEnd("ctx");
  22346. },
  22347. //>>excludeStart("ide", pragmas.excludeIdeData);
  22348. args: [],
  22349. source: "resetContents\x0a\x09self reset.\x0a\x09self setStreamSize: 0",
  22350. referencedClasses: [],
  22351. //>>excludeEnd("ide");
  22352. messageSends: ["reset", "setStreamSize:"]
  22353. }),
  22354. $globals.Stream);
  22355. $core.addMethod(
  22356. $core.method({
  22357. selector: "setCollection:",
  22358. protocol: 'accessing',
  22359. fn: function (aCollection){
  22360. var self=this;
  22361. self["@collection"]=aCollection;
  22362. return self;
  22363. },
  22364. //>>excludeStart("ide", pragmas.excludeIdeData);
  22365. args: ["aCollection"],
  22366. source: "setCollection: aCollection\x0a\x09collection := aCollection",
  22367. referencedClasses: [],
  22368. //>>excludeEnd("ide");
  22369. messageSends: []
  22370. }),
  22371. $globals.Stream);
  22372. $core.addMethod(
  22373. $core.method({
  22374. selector: "setStreamSize:",
  22375. protocol: 'accessing',
  22376. fn: function (anInteger){
  22377. var self=this;
  22378. self["@streamSize"]=anInteger;
  22379. return self;
  22380. },
  22381. //>>excludeStart("ide", pragmas.excludeIdeData);
  22382. args: ["anInteger"],
  22383. source: "setStreamSize: anInteger\x0a\x09streamSize := anInteger",
  22384. referencedClasses: [],
  22385. //>>excludeEnd("ide");
  22386. messageSends: []
  22387. }),
  22388. $globals.Stream);
  22389. $core.addMethod(
  22390. $core.method({
  22391. selector: "setToEnd",
  22392. protocol: 'positioning',
  22393. fn: function (){
  22394. var self=this;
  22395. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22396. return $core.withContext(function($ctx1) {
  22397. //>>excludeEnd("ctx");
  22398. self._position_(self._size());
  22399. return self;
  22400. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22401. }, function($ctx1) {$ctx1.fill(self,"setToEnd",{},$globals.Stream)});
  22402. //>>excludeEnd("ctx");
  22403. },
  22404. //>>excludeStart("ide", pragmas.excludeIdeData);
  22405. args: [],
  22406. source: "setToEnd\x0a\x09self position: self size",
  22407. referencedClasses: [],
  22408. //>>excludeEnd("ide");
  22409. messageSends: ["position:", "size"]
  22410. }),
  22411. $globals.Stream);
  22412. $core.addMethod(
  22413. $core.method({
  22414. selector: "size",
  22415. protocol: 'accessing',
  22416. fn: function (){
  22417. var self=this;
  22418. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22419. return $core.withContext(function($ctx1) {
  22420. //>>excludeEnd("ctx");
  22421. var $1;
  22422. $1=self._streamSize();
  22423. return $1;
  22424. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22425. }, function($ctx1) {$ctx1.fill(self,"size",{},$globals.Stream)});
  22426. //>>excludeEnd("ctx");
  22427. },
  22428. //>>excludeStart("ide", pragmas.excludeIdeData);
  22429. args: [],
  22430. source: "size\x0a\x09^ self streamSize",
  22431. referencedClasses: [],
  22432. //>>excludeEnd("ide");
  22433. messageSends: ["streamSize"]
  22434. }),
  22435. $globals.Stream);
  22436. $core.addMethod(
  22437. $core.method({
  22438. selector: "skip:",
  22439. protocol: 'positioning',
  22440. fn: function (anInteger){
  22441. var self=this;
  22442. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22443. return $core.withContext(function($ctx1) {
  22444. //>>excludeEnd("ctx");
  22445. self._position_($recv($recv(self._position()).__plus(anInteger))._min_max_(self._size(),(0)));
  22446. return self;
  22447. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22448. }, function($ctx1) {$ctx1.fill(self,"skip:",{anInteger:anInteger},$globals.Stream)});
  22449. //>>excludeEnd("ctx");
  22450. },
  22451. //>>excludeStart("ide", pragmas.excludeIdeData);
  22452. args: ["anInteger"],
  22453. source: "skip: anInteger\x0a\x09self position: ((self position + anInteger) min: self size max: 0)",
  22454. referencedClasses: [],
  22455. //>>excludeEnd("ide");
  22456. messageSends: ["position:", "min:max:", "+", "position", "size"]
  22457. }),
  22458. $globals.Stream);
  22459. $core.addMethod(
  22460. $core.method({
  22461. selector: "streamSize",
  22462. protocol: 'accessing',
  22463. fn: function (){
  22464. var self=this;
  22465. var $1;
  22466. $1=self["@streamSize"];
  22467. return $1;
  22468. },
  22469. //>>excludeStart("ide", pragmas.excludeIdeData);
  22470. args: [],
  22471. source: "streamSize\x0a\x09^ streamSize",
  22472. referencedClasses: [],
  22473. //>>excludeEnd("ide");
  22474. messageSends: []
  22475. }),
  22476. $globals.Stream);
  22477. $core.addMethod(
  22478. $core.method({
  22479. selector: "write:",
  22480. protocol: 'writing',
  22481. fn: function (anObject){
  22482. var self=this;
  22483. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22484. return $core.withContext(function($ctx1) {
  22485. //>>excludeEnd("ctx");
  22486. $recv(anObject)._putOn_(self);
  22487. return self;
  22488. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22489. }, function($ctx1) {$ctx1.fill(self,"write:",{anObject:anObject},$globals.Stream)});
  22490. //>>excludeEnd("ctx");
  22491. },
  22492. //>>excludeStart("ide", pragmas.excludeIdeData);
  22493. args: ["anObject"],
  22494. source: "write: anObject\x0a\x09anObject putOn: self",
  22495. referencedClasses: [],
  22496. //>>excludeEnd("ide");
  22497. messageSends: ["putOn:"]
  22498. }),
  22499. $globals.Stream);
  22500. $core.addMethod(
  22501. $core.method({
  22502. selector: "on:",
  22503. protocol: 'instance creation',
  22504. fn: function (aCollection){
  22505. var self=this;
  22506. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22507. return $core.withContext(function($ctx1) {
  22508. //>>excludeEnd("ctx");
  22509. var $2,$3,$1;
  22510. $2=self._new();
  22511. $recv($2)._setCollection_(aCollection);
  22512. $recv($2)._setStreamSize_($recv(aCollection)._size());
  22513. $3=$recv($2)._yourself();
  22514. $1=$3;
  22515. return $1;
  22516. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22517. }, function($ctx1) {$ctx1.fill(self,"on:",{aCollection:aCollection},$globals.Stream.klass)});
  22518. //>>excludeEnd("ctx");
  22519. },
  22520. //>>excludeStart("ide", pragmas.excludeIdeData);
  22521. args: ["aCollection"],
  22522. source: "on: aCollection\x0a\x09\x09^ self new\x0a\x09\x09setCollection: aCollection;\x0a\x09\x09setStreamSize: aCollection size;\x0a\x09\x09yourself",
  22523. referencedClasses: [],
  22524. //>>excludeEnd("ide");
  22525. messageSends: ["setCollection:", "new", "setStreamSize:", "size", "yourself"]
  22526. }),
  22527. $globals.Stream.klass);
  22528. $core.addClass('StringStream', $globals.Stream, [], 'Kernel-Collections');
  22529. //>>excludeStart("ide", pragmas.excludeIdeData);
  22530. $globals.StringStream.comment="I am a Stream specific to `String` objects.";
  22531. //>>excludeEnd("ide");
  22532. $core.addMethod(
  22533. $core.method({
  22534. selector: "cr",
  22535. protocol: 'writing',
  22536. fn: function (){
  22537. var self=this;
  22538. function $String(){return $globals.String||(typeof String=="undefined"?nil:String)}
  22539. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22540. return $core.withContext(function($ctx1) {
  22541. //>>excludeEnd("ctx");
  22542. var $1;
  22543. $1=self._nextPutAll_($recv($String())._cr());
  22544. return $1;
  22545. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22546. }, function($ctx1) {$ctx1.fill(self,"cr",{},$globals.StringStream)});
  22547. //>>excludeEnd("ctx");
  22548. },
  22549. //>>excludeStart("ide", pragmas.excludeIdeData);
  22550. args: [],
  22551. source: "cr\x0a\x09^ self nextPutAll: String cr",
  22552. referencedClasses: ["String"],
  22553. //>>excludeEnd("ide");
  22554. messageSends: ["nextPutAll:", "cr"]
  22555. }),
  22556. $globals.StringStream);
  22557. $core.addMethod(
  22558. $core.method({
  22559. selector: "crlf",
  22560. protocol: 'writing',
  22561. fn: function (){
  22562. var self=this;
  22563. function $String(){return $globals.String||(typeof String=="undefined"?nil:String)}
  22564. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22565. return $core.withContext(function($ctx1) {
  22566. //>>excludeEnd("ctx");
  22567. var $1;
  22568. $1=self._nextPutAll_($recv($String())._crlf());
  22569. return $1;
  22570. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22571. }, function($ctx1) {$ctx1.fill(self,"crlf",{},$globals.StringStream)});
  22572. //>>excludeEnd("ctx");
  22573. },
  22574. //>>excludeStart("ide", pragmas.excludeIdeData);
  22575. args: [],
  22576. source: "crlf\x0a\x09^ self nextPutAll: String crlf",
  22577. referencedClasses: ["String"],
  22578. //>>excludeEnd("ide");
  22579. messageSends: ["nextPutAll:", "crlf"]
  22580. }),
  22581. $globals.StringStream);
  22582. $core.addMethod(
  22583. $core.method({
  22584. selector: "lf",
  22585. protocol: 'writing',
  22586. fn: function (){
  22587. var self=this;
  22588. function $String(){return $globals.String||(typeof String=="undefined"?nil:String)}
  22589. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22590. return $core.withContext(function($ctx1) {
  22591. //>>excludeEnd("ctx");
  22592. var $1;
  22593. $1=self._nextPutAll_($recv($String())._lf());
  22594. return $1;
  22595. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22596. }, function($ctx1) {$ctx1.fill(self,"lf",{},$globals.StringStream)});
  22597. //>>excludeEnd("ctx");
  22598. },
  22599. //>>excludeStart("ide", pragmas.excludeIdeData);
  22600. args: [],
  22601. source: "lf\x0a\x09^ self nextPutAll: String lf",
  22602. referencedClasses: ["String"],
  22603. //>>excludeEnd("ide");
  22604. messageSends: ["nextPutAll:", "lf"]
  22605. }),
  22606. $globals.StringStream);
  22607. $core.addMethod(
  22608. $core.method({
  22609. selector: "next:",
  22610. protocol: 'reading',
  22611. fn: function (anInteger){
  22612. var self=this;
  22613. var tempCollection;
  22614. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22615. return $core.withContext(function($ctx1) {
  22616. //>>excludeEnd("ctx");
  22617. var $1,$2;
  22618. tempCollection=$recv($recv(self._collection())._class())._new();
  22619. $recv(anInteger)._timesRepeat_((function(){
  22620. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22621. return $core.withContext(function($ctx2) {
  22622. //>>excludeEnd("ctx");
  22623. $1=self._atEnd();
  22624. if(!$core.assert($1)){
  22625. tempCollection=$recv(tempCollection).__comma(self._next());
  22626. return tempCollection;
  22627. };
  22628. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22629. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  22630. //>>excludeEnd("ctx");
  22631. }));
  22632. $2=tempCollection;
  22633. return $2;
  22634. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22635. }, function($ctx1) {$ctx1.fill(self,"next:",{anInteger:anInteger,tempCollection:tempCollection},$globals.StringStream)});
  22636. //>>excludeEnd("ctx");
  22637. },
  22638. //>>excludeStart("ide", pragmas.excludeIdeData);
  22639. args: ["anInteger"],
  22640. 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",
  22641. referencedClasses: [],
  22642. //>>excludeEnd("ide");
  22643. messageSends: ["new", "class", "collection", "timesRepeat:", "ifFalse:", "atEnd", ",", "next"]
  22644. }),
  22645. $globals.StringStream);
  22646. $core.addMethod(
  22647. $core.method({
  22648. selector: "nextPut:",
  22649. protocol: 'writing',
  22650. fn: function (aString){
  22651. var self=this;
  22652. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22653. return $core.withContext(function($ctx1) {
  22654. //>>excludeEnd("ctx");
  22655. self._nextPutAll_(aString);
  22656. return self;
  22657. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22658. }, function($ctx1) {$ctx1.fill(self,"nextPut:",{aString:aString},$globals.StringStream)});
  22659. //>>excludeEnd("ctx");
  22660. },
  22661. //>>excludeStart("ide", pragmas.excludeIdeData);
  22662. args: ["aString"],
  22663. source: "nextPut: aString\x0a\x09self nextPutAll: aString",
  22664. referencedClasses: [],
  22665. //>>excludeEnd("ide");
  22666. messageSends: ["nextPutAll:"]
  22667. }),
  22668. $globals.StringStream);
  22669. $core.addMethod(
  22670. $core.method({
  22671. selector: "nextPutAll:",
  22672. protocol: 'writing',
  22673. fn: function (aString){
  22674. var self=this;
  22675. var pre,post;
  22676. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22677. return $core.withContext(function($ctx1) {
  22678. //>>excludeEnd("ctx");
  22679. var $1,$3,$2,$4,$5,$6,$9,$8,$10,$7,$11,$12,$14,$13;
  22680. $1=self._atEnd();
  22681. if($core.assert($1)){
  22682. $3=self._collection();
  22683. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22684. $ctx1.sendIdx["collection"]=1;
  22685. //>>excludeEnd("ctx");
  22686. $2=$recv($3).__comma(aString);
  22687. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22688. $ctx1.sendIdx[","]=1;
  22689. //>>excludeEnd("ctx");
  22690. self._setCollection_($2);
  22691. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22692. $ctx1.sendIdx["setCollection:"]=1;
  22693. //>>excludeEnd("ctx");
  22694. } else {
  22695. $4=self._collection();
  22696. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22697. $ctx1.sendIdx["collection"]=2;
  22698. //>>excludeEnd("ctx");
  22699. $5=self._position();
  22700. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22701. $ctx1.sendIdx["position"]=1;
  22702. //>>excludeEnd("ctx");
  22703. pre=$recv($4)._copyFrom_to_((1),$5);
  22704. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22705. $ctx1.sendIdx["copyFrom:to:"]=1;
  22706. //>>excludeEnd("ctx");
  22707. pre;
  22708. $6=self._collection();
  22709. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22710. $ctx1.sendIdx["collection"]=3;
  22711. //>>excludeEnd("ctx");
  22712. $9=self._position();
  22713. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22714. $ctx1.sendIdx["position"]=2;
  22715. //>>excludeEnd("ctx");
  22716. $8=$recv($9).__plus((1));
  22717. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22718. $ctx1.sendIdx["+"]=2;
  22719. //>>excludeEnd("ctx");
  22720. $10=$recv(aString)._size();
  22721. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22722. $ctx1.sendIdx["size"]=1;
  22723. //>>excludeEnd("ctx");
  22724. $7=$recv($8).__plus($10);
  22725. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22726. $ctx1.sendIdx["+"]=1;
  22727. //>>excludeEnd("ctx");
  22728. $11=$recv(self._collection())._size();
  22729. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22730. $ctx1.sendIdx["size"]=2;
  22731. //>>excludeEnd("ctx");
  22732. post=$recv($6)._copyFrom_to_($7,$11);
  22733. post;
  22734. $12=$recv($recv(pre).__comma(aString)).__comma(post);
  22735. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22736. $ctx1.sendIdx[","]=2;
  22737. //>>excludeEnd("ctx");
  22738. self._setCollection_($12);
  22739. };
  22740. $14=self._position();
  22741. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22742. $ctx1.sendIdx["position"]=3;
  22743. //>>excludeEnd("ctx");
  22744. $13=$recv($14).__plus($recv(aString)._size());
  22745. self._position_($13);
  22746. self._setStreamSize_($recv(self._streamSize())._max_(self._position()));
  22747. return self;
  22748. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22749. }, function($ctx1) {$ctx1.fill(self,"nextPutAll:",{aString:aString,pre:pre,post:post},$globals.StringStream)});
  22750. //>>excludeEnd("ctx");
  22751. },
  22752. //>>excludeStart("ide", pragmas.excludeIdeData);
  22753. args: ["aString"],
  22754. source: "nextPutAll: aString\x0a\x09| pre post |\x0a\x09self atEnd 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)",
  22755. referencedClasses: [],
  22756. //>>excludeEnd("ide");
  22757. messageSends: ["ifTrue:ifFalse:", "atEnd", "setCollection:", ",", "collection", "copyFrom:to:", "position", "+", "size", "position:", "setStreamSize:", "max:", "streamSize"]
  22758. }),
  22759. $globals.StringStream);
  22760. $core.addMethod(
  22761. $core.method({
  22762. selector: "nextPutString:",
  22763. protocol: 'writing',
  22764. fn: function (aString){
  22765. var self=this;
  22766. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22767. return $core.withContext(function($ctx1) {
  22768. //>>excludeEnd("ctx");
  22769. self._nextPutAll_(aString);
  22770. return self;
  22771. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22772. }, function($ctx1) {$ctx1.fill(self,"nextPutString:",{aString:aString},$globals.StringStream)});
  22773. //>>excludeEnd("ctx");
  22774. },
  22775. //>>excludeStart("ide", pragmas.excludeIdeData);
  22776. args: ["aString"],
  22777. source: "nextPutString: aString\x0a\x09self nextPutAll: aString",
  22778. referencedClasses: [],
  22779. //>>excludeEnd("ide");
  22780. messageSends: ["nextPutAll:"]
  22781. }),
  22782. $globals.StringStream);
  22783. $core.addMethod(
  22784. $core.method({
  22785. selector: "space",
  22786. protocol: 'writing',
  22787. fn: function (){
  22788. var self=this;
  22789. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22790. return $core.withContext(function($ctx1) {
  22791. //>>excludeEnd("ctx");
  22792. self._nextPut_(" ");
  22793. return self;
  22794. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22795. }, function($ctx1) {$ctx1.fill(self,"space",{},$globals.StringStream)});
  22796. //>>excludeEnd("ctx");
  22797. },
  22798. //>>excludeStart("ide", pragmas.excludeIdeData);
  22799. args: [],
  22800. source: "space\x0a\x09self nextPut: ' '",
  22801. referencedClasses: [],
  22802. //>>excludeEnd("ide");
  22803. messageSends: ["nextPut:"]
  22804. }),
  22805. $globals.StringStream);
  22806. $core.addMethod(
  22807. $core.method({
  22808. selector: "tab",
  22809. protocol: 'writing',
  22810. fn: function (){
  22811. var self=this;
  22812. function $String(){return $globals.String||(typeof String=="undefined"?nil:String)}
  22813. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22814. return $core.withContext(function($ctx1) {
  22815. //>>excludeEnd("ctx");
  22816. var $1;
  22817. $1=self._nextPutAll_($recv($String())._tab());
  22818. return $1;
  22819. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22820. }, function($ctx1) {$ctx1.fill(self,"tab",{},$globals.StringStream)});
  22821. //>>excludeEnd("ctx");
  22822. },
  22823. //>>excludeStart("ide", pragmas.excludeIdeData);
  22824. args: [],
  22825. source: "tab\x0a\x09^ self nextPutAll: String tab",
  22826. referencedClasses: ["String"],
  22827. //>>excludeEnd("ide");
  22828. messageSends: ["nextPutAll:", "tab"]
  22829. }),
  22830. $globals.StringStream);
  22831. });
  22832. define("amber_core/Kernel-Infrastructure", ["amber/boot", "amber_core/Kernel-Objects", "amber_core/Kernel-Collections"], function($boot){
  22833. var $core=$boot.api,nil=$boot.nil,$recv=$boot.asReceiver,$globals=$boot.globals;
  22834. var smalltalk=$core,_st=$recv,globals=$globals;
  22835. $core.addPackage('Kernel-Infrastructure');
  22836. $core.packages["Kernel-Infrastructure"].transport = {"type":"amd","amdNamespace":"amber_core"};
  22837. $core.addClass('ConsoleErrorHandler', $globals.Object, [], 'Kernel-Infrastructure');
  22838. //>>excludeStart("ide", pragmas.excludeIdeData);
  22839. $globals.ConsoleErrorHandler.comment="I am manage Smalltalk errors, displaying the stack in the console.";
  22840. //>>excludeEnd("ide");
  22841. $core.addMethod(
  22842. $core.method({
  22843. selector: "handleError:",
  22844. protocol: 'error handling',
  22845. fn: function (anError){
  22846. var self=this;
  22847. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22848. return $core.withContext(function($ctx1) {
  22849. //>>excludeEnd("ctx");
  22850. var $1,$receiver;
  22851. $1=$recv(anError)._context();
  22852. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22853. $ctx1.sendIdx["context"]=1;
  22854. //>>excludeEnd("ctx");
  22855. if(($receiver = $1) == null || $receiver.isNil){
  22856. $1;
  22857. } else {
  22858. self._logErrorContext_($recv(anError)._context());
  22859. };
  22860. self._logError_(anError);
  22861. return self;
  22862. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22863. }, function($ctx1) {$ctx1.fill(self,"handleError:",{anError:anError},$globals.ConsoleErrorHandler)});
  22864. //>>excludeEnd("ctx");
  22865. },
  22866. //>>excludeStart("ide", pragmas.excludeIdeData);
  22867. args: ["anError"],
  22868. source: "handleError: anError\x0a\x09anError context ifNotNil: [ self logErrorContext: anError context ].\x0a\x09self logError: anError",
  22869. referencedClasses: [],
  22870. //>>excludeEnd("ide");
  22871. messageSends: ["ifNotNil:", "context", "logErrorContext:", "logError:"]
  22872. }),
  22873. $globals.ConsoleErrorHandler);
  22874. $core.addMethod(
  22875. $core.method({
  22876. selector: "log:",
  22877. protocol: 'private',
  22878. fn: function (aString){
  22879. var self=this;
  22880. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22881. return $core.withContext(function($ctx1) {
  22882. //>>excludeEnd("ctx");
  22883. $recv(console)._log_(aString);
  22884. return self;
  22885. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22886. }, function($ctx1) {$ctx1.fill(self,"log:",{aString:aString},$globals.ConsoleErrorHandler)});
  22887. //>>excludeEnd("ctx");
  22888. },
  22889. //>>excludeStart("ide", pragmas.excludeIdeData);
  22890. args: ["aString"],
  22891. source: "log: aString\x0a\x09console log: aString",
  22892. referencedClasses: [],
  22893. //>>excludeEnd("ide");
  22894. messageSends: ["log:"]
  22895. }),
  22896. $globals.ConsoleErrorHandler);
  22897. $core.addMethod(
  22898. $core.method({
  22899. selector: "logContext:",
  22900. protocol: 'private',
  22901. fn: function (aContext){
  22902. var self=this;
  22903. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22904. return $core.withContext(function($ctx1) {
  22905. //>>excludeEnd("ctx");
  22906. var $1,$receiver;
  22907. $1=$recv(aContext)._home();
  22908. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22909. $ctx1.sendIdx["home"]=1;
  22910. //>>excludeEnd("ctx");
  22911. if(($receiver = $1) == null || $receiver.isNil){
  22912. $1;
  22913. } else {
  22914. self._logContext_($recv(aContext)._home());
  22915. };
  22916. self._log_($recv(aContext)._asString());
  22917. return self;
  22918. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22919. }, function($ctx1) {$ctx1.fill(self,"logContext:",{aContext:aContext},$globals.ConsoleErrorHandler)});
  22920. //>>excludeEnd("ctx");
  22921. },
  22922. //>>excludeStart("ide", pragmas.excludeIdeData);
  22923. args: ["aContext"],
  22924. source: "logContext: aContext\x0a\x09aContext home ifNotNil: [\x0a\x09\x09self logContext: aContext home ].\x0a\x09self log: aContext asString",
  22925. referencedClasses: [],
  22926. //>>excludeEnd("ide");
  22927. messageSends: ["ifNotNil:", "home", "logContext:", "log:", "asString"]
  22928. }),
  22929. $globals.ConsoleErrorHandler);
  22930. $core.addMethod(
  22931. $core.method({
  22932. selector: "logError:",
  22933. protocol: 'private',
  22934. fn: function (anError){
  22935. var self=this;
  22936. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22937. return $core.withContext(function($ctx1) {
  22938. //>>excludeEnd("ctx");
  22939. self._log_($recv(anError)._messageText());
  22940. return self;
  22941. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22942. }, function($ctx1) {$ctx1.fill(self,"logError:",{anError:anError},$globals.ConsoleErrorHandler)});
  22943. //>>excludeEnd("ctx");
  22944. },
  22945. //>>excludeStart("ide", pragmas.excludeIdeData);
  22946. args: ["anError"],
  22947. source: "logError: anError\x0a\x09self log: anError messageText",
  22948. referencedClasses: [],
  22949. //>>excludeEnd("ide");
  22950. messageSends: ["log:", "messageText"]
  22951. }),
  22952. $globals.ConsoleErrorHandler);
  22953. $core.addMethod(
  22954. $core.method({
  22955. selector: "logErrorContext:",
  22956. protocol: 'private',
  22957. fn: function (aContext){
  22958. var self=this;
  22959. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22960. return $core.withContext(function($ctx1) {
  22961. //>>excludeEnd("ctx");
  22962. var $1,$receiver;
  22963. if(($receiver = aContext) == null || $receiver.isNil){
  22964. aContext;
  22965. } else {
  22966. $1=$recv(aContext)._home();
  22967. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22968. $ctx1.sendIdx["home"]=1;
  22969. //>>excludeEnd("ctx");
  22970. if(($receiver = $1) == null || $receiver.isNil){
  22971. $1;
  22972. } else {
  22973. self._logContext_($recv(aContext)._home());
  22974. };
  22975. };
  22976. return self;
  22977. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22978. }, function($ctx1) {$ctx1.fill(self,"logErrorContext:",{aContext:aContext},$globals.ConsoleErrorHandler)});
  22979. //>>excludeEnd("ctx");
  22980. },
  22981. //>>excludeStart("ide", pragmas.excludeIdeData);
  22982. args: ["aContext"],
  22983. source: "logErrorContext: aContext\x0a\x09aContext ifNotNil: [\x0a\x09\x09aContext home ifNotNil: [\x0a\x09\x09\x09self logContext: aContext home ]]",
  22984. referencedClasses: [],
  22985. //>>excludeEnd("ide");
  22986. messageSends: ["ifNotNil:", "home", "logContext:"]
  22987. }),
  22988. $globals.ConsoleErrorHandler);
  22989. $globals.ConsoleErrorHandler.klass.iVarNames = ['current'];
  22990. $core.addMethod(
  22991. $core.method({
  22992. selector: "initialize",
  22993. protocol: 'initialization',
  22994. fn: function (){
  22995. var self=this;
  22996. function $ErrorHandler(){return $globals.ErrorHandler||(typeof ErrorHandler=="undefined"?nil:ErrorHandler)}
  22997. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  22998. return $core.withContext(function($ctx1) {
  22999. //>>excludeEnd("ctx");
  23000. $recv($ErrorHandler())._registerIfNone_(self._new());
  23001. return self;
  23002. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23003. }, function($ctx1) {$ctx1.fill(self,"initialize",{},$globals.ConsoleErrorHandler.klass)});
  23004. //>>excludeEnd("ctx");
  23005. },
  23006. //>>excludeStart("ide", pragmas.excludeIdeData);
  23007. args: [],
  23008. source: "initialize\x0a\x09ErrorHandler registerIfNone: self new",
  23009. referencedClasses: ["ErrorHandler"],
  23010. //>>excludeEnd("ide");
  23011. messageSends: ["registerIfNone:", "new"]
  23012. }),
  23013. $globals.ConsoleErrorHandler.klass);
  23014. $core.addClass('InterfacingObject', $globals.Object, [], 'Kernel-Infrastructure');
  23015. //>>excludeStart("ide", pragmas.excludeIdeData);
  23016. $globals.InterfacingObject.comment="I am superclass of all object that interface with user or environment. `Widget` and a few other classes are subclasses of me. I delegate all of the above APIs to `PlatformInterface`.\x0a\x0a## API\x0a\x0a self alert: 'Hey, there is a problem'.\x0a self confirm: 'Affirmative?'.\x0a self prompt: 'Your name:'.\x0a\x0a self ajax: #{\x0a 'url' -> '/patch.js'. 'type' -> 'GET'. dataType->'script'\x0a }.";
  23017. //>>excludeEnd("ide");
  23018. $core.addMethod(
  23019. $core.method({
  23020. selector: "ajax:",
  23021. protocol: 'actions',
  23022. fn: function (anObject){
  23023. var self=this;
  23024. function $PlatformInterface(){return $globals.PlatformInterface||(typeof PlatformInterface=="undefined"?nil:PlatformInterface)}
  23025. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23026. return $core.withContext(function($ctx1) {
  23027. //>>excludeEnd("ctx");
  23028. var $1;
  23029. $1=$recv($PlatformInterface())._ajax_(anObject);
  23030. return $1;
  23031. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23032. }, function($ctx1) {$ctx1.fill(self,"ajax:",{anObject:anObject},$globals.InterfacingObject)});
  23033. //>>excludeEnd("ctx");
  23034. },
  23035. //>>excludeStart("ide", pragmas.excludeIdeData);
  23036. args: ["anObject"],
  23037. source: "ajax: anObject\x0a\x09^ PlatformInterface ajax: anObject",
  23038. referencedClasses: ["PlatformInterface"],
  23039. //>>excludeEnd("ide");
  23040. messageSends: ["ajax:"]
  23041. }),
  23042. $globals.InterfacingObject);
  23043. $core.addMethod(
  23044. $core.method({
  23045. selector: "alert:",
  23046. protocol: 'actions',
  23047. fn: function (aString){
  23048. var self=this;
  23049. function $PlatformInterface(){return $globals.PlatformInterface||(typeof PlatformInterface=="undefined"?nil:PlatformInterface)}
  23050. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23051. return $core.withContext(function($ctx1) {
  23052. //>>excludeEnd("ctx");
  23053. var $1;
  23054. $1=$recv($PlatformInterface())._alert_(aString);
  23055. return $1;
  23056. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23057. }, function($ctx1) {$ctx1.fill(self,"alert:",{aString:aString},$globals.InterfacingObject)});
  23058. //>>excludeEnd("ctx");
  23059. },
  23060. //>>excludeStart("ide", pragmas.excludeIdeData);
  23061. args: ["aString"],
  23062. source: "alert: aString\x0a\x09^ PlatformInterface alert: aString",
  23063. referencedClasses: ["PlatformInterface"],
  23064. //>>excludeEnd("ide");
  23065. messageSends: ["alert:"]
  23066. }),
  23067. $globals.InterfacingObject);
  23068. $core.addMethod(
  23069. $core.method({
  23070. selector: "confirm:",
  23071. protocol: 'actions',
  23072. fn: function (aString){
  23073. var self=this;
  23074. function $PlatformInterface(){return $globals.PlatformInterface||(typeof PlatformInterface=="undefined"?nil:PlatformInterface)}
  23075. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23076. return $core.withContext(function($ctx1) {
  23077. //>>excludeEnd("ctx");
  23078. var $1;
  23079. $1=$recv($PlatformInterface())._confirm_(aString);
  23080. return $1;
  23081. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23082. }, function($ctx1) {$ctx1.fill(self,"confirm:",{aString:aString},$globals.InterfacingObject)});
  23083. //>>excludeEnd("ctx");
  23084. },
  23085. //>>excludeStart("ide", pragmas.excludeIdeData);
  23086. args: ["aString"],
  23087. source: "confirm: aString\x0a\x09^ PlatformInterface confirm: aString",
  23088. referencedClasses: ["PlatformInterface"],
  23089. //>>excludeEnd("ide");
  23090. messageSends: ["confirm:"]
  23091. }),
  23092. $globals.InterfacingObject);
  23093. $core.addMethod(
  23094. $core.method({
  23095. selector: "prompt:",
  23096. protocol: 'actions',
  23097. fn: function (aString){
  23098. var self=this;
  23099. function $PlatformInterface(){return $globals.PlatformInterface||(typeof PlatformInterface=="undefined"?nil:PlatformInterface)}
  23100. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23101. return $core.withContext(function($ctx1) {
  23102. //>>excludeEnd("ctx");
  23103. var $1;
  23104. $1=$recv($PlatformInterface())._prompt_(aString);
  23105. return $1;
  23106. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23107. }, function($ctx1) {$ctx1.fill(self,"prompt:",{aString:aString},$globals.InterfacingObject)});
  23108. //>>excludeEnd("ctx");
  23109. },
  23110. //>>excludeStart("ide", pragmas.excludeIdeData);
  23111. args: ["aString"],
  23112. source: "prompt: aString\x0a\x09^ PlatformInterface prompt: aString",
  23113. referencedClasses: ["PlatformInterface"],
  23114. //>>excludeEnd("ide");
  23115. messageSends: ["prompt:"]
  23116. }),
  23117. $globals.InterfacingObject);
  23118. $core.addMethod(
  23119. $core.method({
  23120. selector: "prompt:default:",
  23121. protocol: 'actions',
  23122. fn: function (aString,defaultString){
  23123. var self=this;
  23124. function $PlatformInterface(){return $globals.PlatformInterface||(typeof PlatformInterface=="undefined"?nil:PlatformInterface)}
  23125. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23126. return $core.withContext(function($ctx1) {
  23127. //>>excludeEnd("ctx");
  23128. var $1;
  23129. $1=$recv($PlatformInterface())._prompt_default_(aString,defaultString);
  23130. return $1;
  23131. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23132. }, function($ctx1) {$ctx1.fill(self,"prompt:default:",{aString:aString,defaultString:defaultString},$globals.InterfacingObject)});
  23133. //>>excludeEnd("ctx");
  23134. },
  23135. //>>excludeStart("ide", pragmas.excludeIdeData);
  23136. args: ["aString", "defaultString"],
  23137. source: "prompt: aString default: defaultString\x0a\x09^ PlatformInterface prompt: aString default: defaultString",
  23138. referencedClasses: ["PlatformInterface"],
  23139. //>>excludeEnd("ide");
  23140. messageSends: ["prompt:default:"]
  23141. }),
  23142. $globals.InterfacingObject);
  23143. $core.addClass('Environment', $globals.InterfacingObject, [], 'Kernel-Infrastructure');
  23144. //>>excludeStart("ide", pragmas.excludeIdeData);
  23145. $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.";
  23146. //>>excludeEnd("ide");
  23147. $core.addMethod(
  23148. $core.method({
  23149. selector: "addInstVarNamed:to:",
  23150. protocol: 'compiling',
  23151. fn: function (aString,aClass){
  23152. var self=this;
  23153. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23154. return $core.withContext(function($ctx1) {
  23155. //>>excludeEnd("ctx");
  23156. var $1,$2,$3,$4,$5;
  23157. $1=self._classBuilder();
  23158. $2=$recv(aClass)._superclass();
  23159. $3=$recv(aClass)._name();
  23160. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23161. $ctx1.sendIdx["name"]=1;
  23162. //>>excludeEnd("ctx");
  23163. $4=$recv($recv(aClass)._instanceVariableNames())._copy();
  23164. $recv($4)._add_(aString);
  23165. $5=$recv($4)._yourself();
  23166. $recv($1)._addSubclassOf_named_instanceVariableNames_package_($2,$3,$5,$recv($recv(aClass)._package())._name());
  23167. return self;
  23168. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23169. }, function($ctx1) {$ctx1.fill(self,"addInstVarNamed:to:",{aString:aString,aClass:aClass},$globals.Environment)});
  23170. //>>excludeEnd("ctx");
  23171. },
  23172. //>>excludeStart("ide", pragmas.excludeIdeData);
  23173. args: ["aString", "aClass"],
  23174. source: "addInstVarNamed: aString to: aClass\x0a\x09self classBuilder\x0a\x09\x09addSubclassOf: aClass superclass \x0a\x09\x09named: aClass name \x0a\x09\x09instanceVariableNames: (aClass instanceVariableNames copy add: aString; yourself)\x0a\x09\x09package: aClass package name",
  23175. referencedClasses: [],
  23176. //>>excludeEnd("ide");
  23177. messageSends: ["addSubclassOf:named:instanceVariableNames:package:", "classBuilder", "superclass", "name", "add:", "copy", "instanceVariableNames", "yourself", "package"]
  23178. }),
  23179. $globals.Environment);
  23180. $core.addMethod(
  23181. $core.method({
  23182. selector: "allSelectors",
  23183. protocol: 'accessing',
  23184. fn: function (){
  23185. var self=this;
  23186. function $Smalltalk(){return $globals.Smalltalk||(typeof Smalltalk=="undefined"?nil:Smalltalk)}
  23187. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23188. return $core.withContext(function($ctx1) {
  23189. //>>excludeEnd("ctx");
  23190. var $1;
  23191. $1=$recv($recv($Smalltalk())._core())._allSelectors();
  23192. return $1;
  23193. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23194. }, function($ctx1) {$ctx1.fill(self,"allSelectors",{},$globals.Environment)});
  23195. //>>excludeEnd("ctx");
  23196. },
  23197. //>>excludeStart("ide", pragmas.excludeIdeData);
  23198. args: [],
  23199. source: "allSelectors\x0a\x09^ Smalltalk core allSelectors",
  23200. referencedClasses: ["Smalltalk"],
  23201. //>>excludeEnd("ide");
  23202. messageSends: ["allSelectors", "core"]
  23203. }),
  23204. $globals.Environment);
  23205. $core.addMethod(
  23206. $core.method({
  23207. selector: "availableClassNames",
  23208. protocol: 'accessing',
  23209. fn: function (){
  23210. var self=this;
  23211. function $Smalltalk(){return $globals.Smalltalk||(typeof Smalltalk=="undefined"?nil:Smalltalk)}
  23212. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23213. return $core.withContext(function($ctx1) {
  23214. //>>excludeEnd("ctx");
  23215. var $1;
  23216. $1=$recv($recv($Smalltalk())._classes())._collect_((function(each){
  23217. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23218. return $core.withContext(function($ctx2) {
  23219. //>>excludeEnd("ctx");
  23220. return $recv(each)._name();
  23221. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23222. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  23223. //>>excludeEnd("ctx");
  23224. }));
  23225. return $1;
  23226. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23227. }, function($ctx1) {$ctx1.fill(self,"availableClassNames",{},$globals.Environment)});
  23228. //>>excludeEnd("ctx");
  23229. },
  23230. //>>excludeStart("ide", pragmas.excludeIdeData);
  23231. args: [],
  23232. source: "availableClassNames\x0a\x09^ Smalltalk classes \x0a\x09\x09collect: [ :each | each name ]",
  23233. referencedClasses: ["Smalltalk"],
  23234. //>>excludeEnd("ide");
  23235. messageSends: ["collect:", "classes", "name"]
  23236. }),
  23237. $globals.Environment);
  23238. $core.addMethod(
  23239. $core.method({
  23240. selector: "availablePackageNames",
  23241. protocol: 'accessing',
  23242. fn: function (){
  23243. var self=this;
  23244. function $Smalltalk(){return $globals.Smalltalk||(typeof Smalltalk=="undefined"?nil:Smalltalk)}
  23245. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23246. return $core.withContext(function($ctx1) {
  23247. //>>excludeEnd("ctx");
  23248. var $1;
  23249. $1=$recv($recv($Smalltalk())._packages())._collect_((function(each){
  23250. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23251. return $core.withContext(function($ctx2) {
  23252. //>>excludeEnd("ctx");
  23253. return $recv(each)._name();
  23254. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23255. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  23256. //>>excludeEnd("ctx");
  23257. }));
  23258. return $1;
  23259. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23260. }, function($ctx1) {$ctx1.fill(self,"availablePackageNames",{},$globals.Environment)});
  23261. //>>excludeEnd("ctx");
  23262. },
  23263. //>>excludeStart("ide", pragmas.excludeIdeData);
  23264. args: [],
  23265. source: "availablePackageNames\x0a\x09^ Smalltalk packages \x0a\x09\x09collect: [ :each | each name ]",
  23266. referencedClasses: ["Smalltalk"],
  23267. //>>excludeEnd("ide");
  23268. messageSends: ["collect:", "packages", "name"]
  23269. }),
  23270. $globals.Environment);
  23271. $core.addMethod(
  23272. $core.method({
  23273. selector: "availableProtocolsFor:",
  23274. protocol: 'accessing',
  23275. fn: function (aClass){
  23276. var self=this;
  23277. var protocols;
  23278. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23279. return $core.withContext(function($ctx1) {
  23280. //>>excludeEnd("ctx");
  23281. var $1,$2,$receiver;
  23282. protocols=$recv(aClass)._protocols();
  23283. $1=$recv(aClass)._superclass();
  23284. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23285. $ctx1.sendIdx["superclass"]=1;
  23286. //>>excludeEnd("ctx");
  23287. if(($receiver = $1) == null || $receiver.isNil){
  23288. $1;
  23289. } else {
  23290. $recv(protocols)._addAll_(self._availableProtocolsFor_($recv(aClass)._superclass()));
  23291. };
  23292. $2=$recv($recv($recv(protocols)._asSet())._asArray())._sort();
  23293. return $2;
  23294. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23295. }, function($ctx1) {$ctx1.fill(self,"availableProtocolsFor:",{aClass:aClass,protocols:protocols},$globals.Environment)});
  23296. //>>excludeEnd("ctx");
  23297. },
  23298. //>>excludeStart("ide", pragmas.excludeIdeData);
  23299. args: ["aClass"],
  23300. 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",
  23301. referencedClasses: [],
  23302. //>>excludeEnd("ide");
  23303. messageSends: ["protocols", "ifNotNil:", "superclass", "addAll:", "availableProtocolsFor:", "sort", "asArray", "asSet"]
  23304. }),
  23305. $globals.Environment);
  23306. $core.addMethod(
  23307. $core.method({
  23308. selector: "classBuilder",
  23309. protocol: 'accessing',
  23310. fn: function (){
  23311. var self=this;
  23312. function $ClassBuilder(){return $globals.ClassBuilder||(typeof ClassBuilder=="undefined"?nil:ClassBuilder)}
  23313. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23314. return $core.withContext(function($ctx1) {
  23315. //>>excludeEnd("ctx");
  23316. var $1;
  23317. $1=$recv($ClassBuilder())._new();
  23318. return $1;
  23319. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23320. }, function($ctx1) {$ctx1.fill(self,"classBuilder",{},$globals.Environment)});
  23321. //>>excludeEnd("ctx");
  23322. },
  23323. //>>excludeStart("ide", pragmas.excludeIdeData);
  23324. args: [],
  23325. source: "classBuilder\x0a\x09^ ClassBuilder new",
  23326. referencedClasses: ["ClassBuilder"],
  23327. //>>excludeEnd("ide");
  23328. messageSends: ["new"]
  23329. }),
  23330. $globals.Environment);
  23331. $core.addMethod(
  23332. $core.method({
  23333. selector: "classNamed:",
  23334. protocol: 'accessing',
  23335. fn: function (aString){
  23336. var self=this;
  23337. function $Smalltalk(){return $globals.Smalltalk||(typeof Smalltalk=="undefined"?nil:Smalltalk)}
  23338. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23339. return $core.withContext(function($ctx1) {
  23340. //>>excludeEnd("ctx");
  23341. var $2,$1,$receiver;
  23342. $2=$recv($recv($Smalltalk())._globals())._at_($recv(aString)._asSymbol());
  23343. if(($receiver = $2) == null || $receiver.isNil){
  23344. $1=self._error_("Invalid class name");
  23345. } else {
  23346. $1=$2;
  23347. };
  23348. return $1;
  23349. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23350. }, function($ctx1) {$ctx1.fill(self,"classNamed:",{aString:aString},$globals.Environment)});
  23351. //>>excludeEnd("ctx");
  23352. },
  23353. //>>excludeStart("ide", pragmas.excludeIdeData);
  23354. args: ["aString"],
  23355. source: "classNamed: aString\x0a\x09^ (Smalltalk globals at: aString asSymbol)\x0a\x09\x09ifNil: [ self error: 'Invalid class name' ]",
  23356. referencedClasses: ["Smalltalk"],
  23357. //>>excludeEnd("ide");
  23358. messageSends: ["ifNil:", "at:", "globals", "asSymbol", "error:"]
  23359. }),
  23360. $globals.Environment);
  23361. $core.addMethod(
  23362. $core.method({
  23363. selector: "classes",
  23364. protocol: 'accessing',
  23365. fn: function (){
  23366. var self=this;
  23367. function $Smalltalk(){return $globals.Smalltalk||(typeof Smalltalk=="undefined"?nil:Smalltalk)}
  23368. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23369. return $core.withContext(function($ctx1) {
  23370. //>>excludeEnd("ctx");
  23371. var $1;
  23372. $1=$recv($Smalltalk())._classes();
  23373. return $1;
  23374. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23375. }, function($ctx1) {$ctx1.fill(self,"classes",{},$globals.Environment)});
  23376. //>>excludeEnd("ctx");
  23377. },
  23378. //>>excludeStart("ide", pragmas.excludeIdeData);
  23379. args: [],
  23380. source: "classes\x0a\x09^ Smalltalk classes",
  23381. referencedClasses: ["Smalltalk"],
  23382. //>>excludeEnd("ide");
  23383. messageSends: ["classes"]
  23384. }),
  23385. $globals.Environment);
  23386. $core.addMethod(
  23387. $core.method({
  23388. selector: "commitPackage:onSuccess:onError:",
  23389. protocol: 'actions',
  23390. fn: function (aPackage,aBlock,anotherBlock){
  23391. var self=this;
  23392. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23393. return $core.withContext(function($ctx1) {
  23394. //>>excludeEnd("ctx");
  23395. $recv($recv(aPackage)._transport())._commitOnSuccess_onError_(aBlock,anotherBlock);
  23396. return self;
  23397. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23398. }, function($ctx1) {$ctx1.fill(self,"commitPackage:onSuccess:onError:",{aPackage:aPackage,aBlock:aBlock,anotherBlock:anotherBlock},$globals.Environment)});
  23399. //>>excludeEnd("ctx");
  23400. },
  23401. //>>excludeStart("ide", pragmas.excludeIdeData);
  23402. args: ["aPackage", "aBlock", "anotherBlock"],
  23403. source: "commitPackage: aPackage onSuccess: aBlock onError: anotherBlock\x0a\x09aPackage transport\x0a\x09\x09commitOnSuccess: aBlock\x0a\x09\x09onError: anotherBlock",
  23404. referencedClasses: [],
  23405. //>>excludeEnd("ide");
  23406. messageSends: ["commitOnSuccess:onError:", "transport"]
  23407. }),
  23408. $globals.Environment);
  23409. $core.addMethod(
  23410. $core.method({
  23411. selector: "compileClassComment:for:",
  23412. protocol: 'compiling',
  23413. fn: function (aString,aClass){
  23414. var self=this;
  23415. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23416. return $core.withContext(function($ctx1) {
  23417. //>>excludeEnd("ctx");
  23418. $recv(aClass)._comment_(aString);
  23419. return self;
  23420. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23421. }, function($ctx1) {$ctx1.fill(self,"compileClassComment:for:",{aString:aString,aClass:aClass},$globals.Environment)});
  23422. //>>excludeEnd("ctx");
  23423. },
  23424. //>>excludeStart("ide", pragmas.excludeIdeData);
  23425. args: ["aString", "aClass"],
  23426. source: "compileClassComment: aString for: aClass\x0a\x09aClass comment: aString",
  23427. referencedClasses: [],
  23428. //>>excludeEnd("ide");
  23429. messageSends: ["comment:"]
  23430. }),
  23431. $globals.Environment);
  23432. $core.addMethod(
  23433. $core.method({
  23434. selector: "compileClassDefinition:",
  23435. protocol: 'compiling',
  23436. fn: function (aString){
  23437. var self=this;
  23438. function $DoIt(){return $globals.DoIt||(typeof DoIt=="undefined"?nil:DoIt)}
  23439. function $Error(){return $globals.Error||(typeof Error=="undefined"?nil:Error)}
  23440. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23441. return $core.withContext(function($ctx1) {
  23442. //>>excludeEnd("ctx");
  23443. $recv((function(){
  23444. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23445. return $core.withContext(function($ctx2) {
  23446. //>>excludeEnd("ctx");
  23447. return self._evaluate_for_(aString,$recv($DoIt())._new());
  23448. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23449. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  23450. //>>excludeEnd("ctx");
  23451. }))._on_do_($Error(),(function(error){
  23452. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23453. return $core.withContext(function($ctx2) {
  23454. //>>excludeEnd("ctx");
  23455. return self._alert_($recv(error)._messageText());
  23456. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23457. }, function($ctx2) {$ctx2.fillBlock({error:error},$ctx1,2)});
  23458. //>>excludeEnd("ctx");
  23459. }));
  23460. return self;
  23461. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23462. }, function($ctx1) {$ctx1.fill(self,"compileClassDefinition:",{aString:aString},$globals.Environment)});
  23463. //>>excludeEnd("ctx");
  23464. },
  23465. //>>excludeStart("ide", pragmas.excludeIdeData);
  23466. args: ["aString"],
  23467. source: "compileClassDefinition: aString\x0a\x09[ self evaluate: aString for: DoIt new ]\x0a\x09\x09on: Error\x0a\x09\x09do: [ :error | self alert: error messageText ]",
  23468. referencedClasses: ["DoIt", "Error"],
  23469. //>>excludeEnd("ide");
  23470. messageSends: ["on:do:", "evaluate:for:", "new", "alert:", "messageText"]
  23471. }),
  23472. $globals.Environment);
  23473. $core.addMethod(
  23474. $core.method({
  23475. selector: "compileMethod:for:protocol:",
  23476. protocol: 'compiling',
  23477. fn: function (sourceCode,class_,protocol){
  23478. var self=this;
  23479. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23480. return $core.withContext(function($ctx1) {
  23481. //>>excludeEnd("ctx");
  23482. var $1;
  23483. $1=$recv(class_)._compile_protocol_(sourceCode,protocol);
  23484. return $1;
  23485. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23486. }, function($ctx1) {$ctx1.fill(self,"compileMethod:for:protocol:",{sourceCode:sourceCode,class_:class_,protocol:protocol},$globals.Environment)});
  23487. //>>excludeEnd("ctx");
  23488. },
  23489. //>>excludeStart("ide", pragmas.excludeIdeData);
  23490. args: ["sourceCode", "class", "protocol"],
  23491. source: "compileMethod: sourceCode for: class protocol: protocol\x0a\x09^ class\x0a\x09\x09compile: sourceCode\x0a\x09\x09protocol: protocol",
  23492. referencedClasses: [],
  23493. //>>excludeEnd("ide");
  23494. messageSends: ["compile:protocol:"]
  23495. }),
  23496. $globals.Environment);
  23497. $core.addMethod(
  23498. $core.method({
  23499. selector: "copyClass:to:",
  23500. protocol: 'actions',
  23501. fn: function (aClass,aClassName){
  23502. var self=this;
  23503. function $Smalltalk(){return $globals.Smalltalk||(typeof Smalltalk=="undefined"?nil:Smalltalk)}
  23504. function $ClassBuilder(){return $globals.ClassBuilder||(typeof ClassBuilder=="undefined"?nil:ClassBuilder)}
  23505. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23506. return $core.withContext(function($ctx1) {
  23507. //>>excludeEnd("ctx");
  23508. var $1,$2,$receiver;
  23509. $1=$recv($recv($Smalltalk())._globals())._at_(aClassName);
  23510. if(($receiver = $1) == null || $receiver.isNil){
  23511. $1;
  23512. } else {
  23513. $2=$recv("A class named ".__comma(aClassName)).__comma(" already exists");
  23514. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23515. $ctx1.sendIdx[","]=1;
  23516. //>>excludeEnd("ctx");
  23517. self._error_($2);
  23518. };
  23519. $recv($recv($ClassBuilder())._new())._copyClass_named_(aClass,aClassName);
  23520. return self;
  23521. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23522. }, function($ctx1) {$ctx1.fill(self,"copyClass:to:",{aClass:aClass,aClassName:aClassName},$globals.Environment)});
  23523. //>>excludeEnd("ctx");
  23524. },
  23525. //>>excludeStart("ide", pragmas.excludeIdeData);
  23526. args: ["aClass", "aClassName"],
  23527. 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",
  23528. referencedClasses: ["Smalltalk", "ClassBuilder"],
  23529. //>>excludeEnd("ide");
  23530. messageSends: ["ifNotNil:", "at:", "globals", "error:", ",", "copyClass:named:", "new"]
  23531. }),
  23532. $globals.Environment);
  23533. $core.addMethod(
  23534. $core.method({
  23535. selector: "doItReceiver",
  23536. protocol: 'accessing',
  23537. fn: function (){
  23538. var self=this;
  23539. function $DoIt(){return $globals.DoIt||(typeof DoIt=="undefined"?nil:DoIt)}
  23540. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23541. return $core.withContext(function($ctx1) {
  23542. //>>excludeEnd("ctx");
  23543. var $1;
  23544. $1=$recv($DoIt())._new();
  23545. return $1;
  23546. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23547. }, function($ctx1) {$ctx1.fill(self,"doItReceiver",{},$globals.Environment)});
  23548. //>>excludeEnd("ctx");
  23549. },
  23550. //>>excludeStart("ide", pragmas.excludeIdeData);
  23551. args: [],
  23552. source: "doItReceiver\x0a\x09^ DoIt new",
  23553. referencedClasses: ["DoIt"],
  23554. //>>excludeEnd("ide");
  23555. messageSends: ["new"]
  23556. }),
  23557. $globals.Environment);
  23558. $core.addMethod(
  23559. $core.method({
  23560. selector: "evaluate:for:",
  23561. protocol: 'evaluating',
  23562. fn: function (aString,anObject){
  23563. var self=this;
  23564. function $Evaluator(){return $globals.Evaluator||(typeof Evaluator=="undefined"?nil:Evaluator)}
  23565. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23566. return $core.withContext(function($ctx1) {
  23567. //>>excludeEnd("ctx");
  23568. var $1;
  23569. $1=$recv($Evaluator())._evaluate_for_(aString,anObject);
  23570. return $1;
  23571. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23572. }, function($ctx1) {$ctx1.fill(self,"evaluate:for:",{aString:aString,anObject:anObject},$globals.Environment)});
  23573. //>>excludeEnd("ctx");
  23574. },
  23575. //>>excludeStart("ide", pragmas.excludeIdeData);
  23576. args: ["aString", "anObject"],
  23577. source: "evaluate: aString for: anObject\x0a\x09^ Evaluator evaluate: aString for: anObject",
  23578. referencedClasses: ["Evaluator"],
  23579. //>>excludeEnd("ide");
  23580. messageSends: ["evaluate:for:"]
  23581. }),
  23582. $globals.Environment);
  23583. $core.addMethod(
  23584. $core.method({
  23585. selector: "evaluate:on:do:",
  23586. protocol: 'error handling',
  23587. fn: function (aBlock,anErrorClass,exceptionBlock){
  23588. var self=this;
  23589. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23590. return $core.withContext(function($ctx1) {
  23591. //>>excludeEnd("ctx");
  23592. var $1;
  23593. $recv(aBlock)._tryCatch_((function(exception){
  23594. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23595. return $core.withContext(function($ctx2) {
  23596. //>>excludeEnd("ctx");
  23597. $1=$recv(exception)._isKindOf_(self._classNamed_($recv(anErrorClass)._name()));
  23598. if($core.assert($1)){
  23599. return $recv(exceptionBlock)._value_(exception);
  23600. } else {
  23601. return $recv(exception)._signal();
  23602. };
  23603. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23604. }, function($ctx2) {$ctx2.fillBlock({exception:exception},$ctx1,1)});
  23605. //>>excludeEnd("ctx");
  23606. }));
  23607. return self;
  23608. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23609. }, function($ctx1) {$ctx1.fill(self,"evaluate:on:do:",{aBlock:aBlock,anErrorClass:anErrorClass,exceptionBlock:exceptionBlock},$globals.Environment)});
  23610. //>>excludeEnd("ctx");
  23611. },
  23612. //>>excludeStart("ide", pragmas.excludeIdeData);
  23613. args: ["aBlock", "anErrorClass", "exceptionBlock"],
  23614. source: "evaluate: aBlock on: anErrorClass do: exceptionBlock\x0a\x09\x22Evaluate a block and catch exceptions happening on the environment stack\x22\x0a\x09\x0a\x09aBlock tryCatch: [ :exception | \x0a\x09\x09(exception isKindOf: (self classNamed: anErrorClass name))\x0a\x09\x09\x09ifTrue: [ exceptionBlock value: exception ]\x0a \x09\x09\x09ifFalse: [ exception signal ] ]",
  23615. referencedClasses: [],
  23616. //>>excludeEnd("ide");
  23617. messageSends: ["tryCatch:", "ifTrue:ifFalse:", "isKindOf:", "classNamed:", "name", "value:", "signal"]
  23618. }),
  23619. $globals.Environment);
  23620. $core.addMethod(
  23621. $core.method({
  23622. selector: "inspect:",
  23623. protocol: 'actions',
  23624. fn: function (anObject){
  23625. var self=this;
  23626. function $Inspector(){return $globals.Inspector||(typeof Inspector=="undefined"?nil:Inspector)}
  23627. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23628. return $core.withContext(function($ctx1) {
  23629. //>>excludeEnd("ctx");
  23630. $recv($Inspector())._inspect_(anObject);
  23631. return self;
  23632. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23633. }, function($ctx1) {$ctx1.fill(self,"inspect:",{anObject:anObject},$globals.Environment)});
  23634. //>>excludeEnd("ctx");
  23635. },
  23636. //>>excludeStart("ide", pragmas.excludeIdeData);
  23637. args: ["anObject"],
  23638. source: "inspect: anObject\x0a\x09Inspector inspect: anObject",
  23639. referencedClasses: ["Inspector"],
  23640. //>>excludeEnd("ide");
  23641. messageSends: ["inspect:"]
  23642. }),
  23643. $globals.Environment);
  23644. $core.addMethod(
  23645. $core.method({
  23646. selector: "moveClass:toPackage:",
  23647. protocol: 'actions',
  23648. fn: function (aClass,aPackageName){
  23649. var self=this;
  23650. var package_;
  23651. function $Package(){return $globals.Package||(typeof Package=="undefined"?nil:Package)}
  23652. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23653. return $core.withContext(function($ctx1) {
  23654. //>>excludeEnd("ctx");
  23655. var $1,$2,$receiver;
  23656. package_=$recv($Package())._named_(aPackageName);
  23657. $1=package_;
  23658. if(($receiver = $1) == null || $receiver.isNil){
  23659. self._error_("Invalid package name");
  23660. } else {
  23661. $1;
  23662. };
  23663. $2=$recv(package_).__eq_eq($recv(aClass)._package());
  23664. if($core.assert($2)){
  23665. return self;
  23666. };
  23667. $recv(aClass)._package_(package_);
  23668. return self;
  23669. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23670. }, function($ctx1) {$ctx1.fill(self,"moveClass:toPackage:",{aClass:aClass,aPackageName:aPackageName,package_:package_},$globals.Environment)});
  23671. //>>excludeEnd("ctx");
  23672. },
  23673. //>>excludeStart("ide", pragmas.excludeIdeData);
  23674. args: ["aClass", "aPackageName"],
  23675. 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",
  23676. referencedClasses: ["Package"],
  23677. //>>excludeEnd("ide");
  23678. messageSends: ["named:", "ifNil:", "error:", "ifTrue:", "==", "package", "package:"]
  23679. }),
  23680. $globals.Environment);
  23681. $core.addMethod(
  23682. $core.method({
  23683. selector: "moveMethod:toClass:",
  23684. protocol: 'actions',
  23685. fn: function (aMethod,aClassName){
  23686. var self=this;
  23687. var destinationClass;
  23688. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23689. return $core.withContext(function($ctx1) {
  23690. //>>excludeEnd("ctx");
  23691. var $2,$3,$1,$5,$4;
  23692. destinationClass=self._classNamed_(aClassName);
  23693. $2=destinationClass;
  23694. $3=$recv(aMethod)._methodClass();
  23695. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23696. $ctx1.sendIdx["methodClass"]=1;
  23697. //>>excludeEnd("ctx");
  23698. $1=$recv($2).__eq_eq($3);
  23699. if($core.assert($1)){
  23700. return self;
  23701. };
  23702. $5=$recv(aMethod)._methodClass();
  23703. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23704. $ctx1.sendIdx["methodClass"]=2;
  23705. //>>excludeEnd("ctx");
  23706. $4=$recv($5)._isMetaclass();
  23707. if($core.assert($4)){
  23708. destinationClass=$recv(destinationClass)._class();
  23709. destinationClass;
  23710. };
  23711. $recv(destinationClass)._compile_protocol_($recv(aMethod)._source(),$recv(aMethod)._protocol());
  23712. $recv($recv(aMethod)._methodClass())._removeCompiledMethod_(aMethod);
  23713. return self;
  23714. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23715. }, function($ctx1) {$ctx1.fill(self,"moveMethod:toClass:",{aMethod:aMethod,aClassName:aClassName,destinationClass:destinationClass},$globals.Environment)});
  23716. //>>excludeEnd("ctx");
  23717. },
  23718. //>>excludeStart("ide", pragmas.excludeIdeData);
  23719. args: ["aMethod", "aClassName"],
  23720. source: "moveMethod: aMethod toClass: aClassName\x0a\x09| destinationClass |\x0a\x09\x0a\x09destinationClass := self classNamed: aClassName.\x0a\x09destinationClass == aMethod methodClass ifTrue: [ ^ self ].\x0a\x09\x0a\x09aMethod methodClass isMetaclass ifTrue: [ \x0a\x09\x09destinationClass := destinationClass class ].\x0a\x09\x0a\x09destinationClass \x0a\x09\x09compile: aMethod source\x0a\x09\x09protocol: aMethod protocol.\x0a\x09aMethod methodClass \x0a\x09\x09removeCompiledMethod: aMethod",
  23721. referencedClasses: [],
  23722. //>>excludeEnd("ide");
  23723. messageSends: ["classNamed:", "ifTrue:", "==", "methodClass", "isMetaclass", "class", "compile:protocol:", "source", "protocol", "removeCompiledMethod:"]
  23724. }),
  23725. $globals.Environment);
  23726. $core.addMethod(
  23727. $core.method({
  23728. selector: "moveMethod:toProtocol:",
  23729. protocol: 'actions',
  23730. fn: function (aMethod,aProtocol){
  23731. var self=this;
  23732. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23733. return $core.withContext(function($ctx1) {
  23734. //>>excludeEnd("ctx");
  23735. $recv(aMethod)._protocol_(aProtocol);
  23736. return self;
  23737. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23738. }, function($ctx1) {$ctx1.fill(self,"moveMethod:toProtocol:",{aMethod:aMethod,aProtocol:aProtocol},$globals.Environment)});
  23739. //>>excludeEnd("ctx");
  23740. },
  23741. //>>excludeStart("ide", pragmas.excludeIdeData);
  23742. args: ["aMethod", "aProtocol"],
  23743. source: "moveMethod: aMethod toProtocol: aProtocol\x0a\x09aMethod protocol: aProtocol",
  23744. referencedClasses: [],
  23745. //>>excludeEnd("ide");
  23746. messageSends: ["protocol:"]
  23747. }),
  23748. $globals.Environment);
  23749. $core.addMethod(
  23750. $core.method({
  23751. selector: "packages",
  23752. protocol: 'accessing',
  23753. fn: function (){
  23754. var self=this;
  23755. function $Smalltalk(){return $globals.Smalltalk||(typeof Smalltalk=="undefined"?nil:Smalltalk)}
  23756. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23757. return $core.withContext(function($ctx1) {
  23758. //>>excludeEnd("ctx");
  23759. var $1;
  23760. $1=$recv($Smalltalk())._packages();
  23761. return $1;
  23762. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23763. }, function($ctx1) {$ctx1.fill(self,"packages",{},$globals.Environment)});
  23764. //>>excludeEnd("ctx");
  23765. },
  23766. //>>excludeStart("ide", pragmas.excludeIdeData);
  23767. args: [],
  23768. source: "packages\x0a\x09^ Smalltalk packages",
  23769. referencedClasses: ["Smalltalk"],
  23770. //>>excludeEnd("ide");
  23771. messageSends: ["packages"]
  23772. }),
  23773. $globals.Environment);
  23774. $core.addMethod(
  23775. $core.method({
  23776. selector: "registerErrorHandler:",
  23777. protocol: 'services',
  23778. fn: function (anErrorHandler){
  23779. var self=this;
  23780. function $ErrorHandler(){return $globals.ErrorHandler||(typeof ErrorHandler=="undefined"?nil:ErrorHandler)}
  23781. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23782. return $core.withContext(function($ctx1) {
  23783. //>>excludeEnd("ctx");
  23784. $recv($ErrorHandler())._register_(anErrorHandler);
  23785. return self;
  23786. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23787. }, function($ctx1) {$ctx1.fill(self,"registerErrorHandler:",{anErrorHandler:anErrorHandler},$globals.Environment)});
  23788. //>>excludeEnd("ctx");
  23789. },
  23790. //>>excludeStart("ide", pragmas.excludeIdeData);
  23791. args: ["anErrorHandler"],
  23792. source: "registerErrorHandler: anErrorHandler\x0a\x09ErrorHandler register: anErrorHandler",
  23793. referencedClasses: ["ErrorHandler"],
  23794. //>>excludeEnd("ide");
  23795. messageSends: ["register:"]
  23796. }),
  23797. $globals.Environment);
  23798. $core.addMethod(
  23799. $core.method({
  23800. selector: "registerFinder:",
  23801. protocol: 'services',
  23802. fn: function (aFinder){
  23803. var self=this;
  23804. function $Finder(){return $globals.Finder||(typeof Finder=="undefined"?nil:Finder)}
  23805. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23806. return $core.withContext(function($ctx1) {
  23807. //>>excludeEnd("ctx");
  23808. $recv($Finder())._register_(aFinder);
  23809. return self;
  23810. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23811. }, function($ctx1) {$ctx1.fill(self,"registerFinder:",{aFinder:aFinder},$globals.Environment)});
  23812. //>>excludeEnd("ctx");
  23813. },
  23814. //>>excludeStart("ide", pragmas.excludeIdeData);
  23815. args: ["aFinder"],
  23816. source: "registerFinder: aFinder\x0a\x09Finder register: aFinder",
  23817. referencedClasses: ["Finder"],
  23818. //>>excludeEnd("ide");
  23819. messageSends: ["register:"]
  23820. }),
  23821. $globals.Environment);
  23822. $core.addMethod(
  23823. $core.method({
  23824. selector: "registerInspector:",
  23825. protocol: 'services',
  23826. fn: function (anInspector){
  23827. var self=this;
  23828. function $Inspector(){return $globals.Inspector||(typeof Inspector=="undefined"?nil:Inspector)}
  23829. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23830. return $core.withContext(function($ctx1) {
  23831. //>>excludeEnd("ctx");
  23832. $recv($Inspector())._register_(anInspector);
  23833. return self;
  23834. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23835. }, function($ctx1) {$ctx1.fill(self,"registerInspector:",{anInspector:anInspector},$globals.Environment)});
  23836. //>>excludeEnd("ctx");
  23837. },
  23838. //>>excludeStart("ide", pragmas.excludeIdeData);
  23839. args: ["anInspector"],
  23840. source: "registerInspector: anInspector\x0a\x09Inspector register: anInspector",
  23841. referencedClasses: ["Inspector"],
  23842. //>>excludeEnd("ide");
  23843. messageSends: ["register:"]
  23844. }),
  23845. $globals.Environment);
  23846. $core.addMethod(
  23847. $core.method({
  23848. selector: "registerProgressHandler:",
  23849. protocol: 'services',
  23850. fn: function (aProgressHandler){
  23851. var self=this;
  23852. function $ProgressHandler(){return $globals.ProgressHandler||(typeof ProgressHandler=="undefined"?nil:ProgressHandler)}
  23853. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23854. return $core.withContext(function($ctx1) {
  23855. //>>excludeEnd("ctx");
  23856. $recv($ProgressHandler())._register_(aProgressHandler);
  23857. return self;
  23858. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23859. }, function($ctx1) {$ctx1.fill(self,"registerProgressHandler:",{aProgressHandler:aProgressHandler},$globals.Environment)});
  23860. //>>excludeEnd("ctx");
  23861. },
  23862. //>>excludeStart("ide", pragmas.excludeIdeData);
  23863. args: ["aProgressHandler"],
  23864. source: "registerProgressHandler: aProgressHandler\x0a\x09ProgressHandler register: aProgressHandler",
  23865. referencedClasses: ["ProgressHandler"],
  23866. //>>excludeEnd("ide");
  23867. messageSends: ["register:"]
  23868. }),
  23869. $globals.Environment);
  23870. $core.addMethod(
  23871. $core.method({
  23872. selector: "registerTranscript:",
  23873. protocol: 'services',
  23874. fn: function (aTranscript){
  23875. var self=this;
  23876. function $Transcript(){return $globals.Transcript||(typeof Transcript=="undefined"?nil:Transcript)}
  23877. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23878. return $core.withContext(function($ctx1) {
  23879. //>>excludeEnd("ctx");
  23880. $recv($Transcript())._register_(aTranscript);
  23881. return self;
  23882. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23883. }, function($ctx1) {$ctx1.fill(self,"registerTranscript:",{aTranscript:aTranscript},$globals.Environment)});
  23884. //>>excludeEnd("ctx");
  23885. },
  23886. //>>excludeStart("ide", pragmas.excludeIdeData);
  23887. args: ["aTranscript"],
  23888. source: "registerTranscript: aTranscript\x0a\x09Transcript register: aTranscript",
  23889. referencedClasses: ["Transcript"],
  23890. //>>excludeEnd("ide");
  23891. messageSends: ["register:"]
  23892. }),
  23893. $globals.Environment);
  23894. $core.addMethod(
  23895. $core.method({
  23896. selector: "removeClass:",
  23897. protocol: 'actions',
  23898. fn: function (aClass){
  23899. var self=this;
  23900. function $Smalltalk(){return $globals.Smalltalk||(typeof Smalltalk=="undefined"?nil:Smalltalk)}
  23901. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23902. return $core.withContext(function($ctx1) {
  23903. //>>excludeEnd("ctx");
  23904. $recv($Smalltalk())._removeClass_(aClass);
  23905. return self;
  23906. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23907. }, function($ctx1) {$ctx1.fill(self,"removeClass:",{aClass:aClass},$globals.Environment)});
  23908. //>>excludeEnd("ctx");
  23909. },
  23910. //>>excludeStart("ide", pragmas.excludeIdeData);
  23911. args: ["aClass"],
  23912. source: "removeClass: aClass\x0a\x09Smalltalk removeClass: aClass",
  23913. referencedClasses: ["Smalltalk"],
  23914. //>>excludeEnd("ide");
  23915. messageSends: ["removeClass:"]
  23916. }),
  23917. $globals.Environment);
  23918. $core.addMethod(
  23919. $core.method({
  23920. selector: "removeMethod:",
  23921. protocol: 'actions',
  23922. fn: function (aMethod){
  23923. var self=this;
  23924. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23925. return $core.withContext(function($ctx1) {
  23926. //>>excludeEnd("ctx");
  23927. $recv($recv(aMethod)._methodClass())._removeCompiledMethod_(aMethod);
  23928. return self;
  23929. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23930. }, function($ctx1) {$ctx1.fill(self,"removeMethod:",{aMethod:aMethod},$globals.Environment)});
  23931. //>>excludeEnd("ctx");
  23932. },
  23933. //>>excludeStart("ide", pragmas.excludeIdeData);
  23934. args: ["aMethod"],
  23935. source: "removeMethod: aMethod\x0a\x09aMethod methodClass removeCompiledMethod: aMethod",
  23936. referencedClasses: [],
  23937. //>>excludeEnd("ide");
  23938. messageSends: ["removeCompiledMethod:", "methodClass"]
  23939. }),
  23940. $globals.Environment);
  23941. $core.addMethod(
  23942. $core.method({
  23943. selector: "removeProtocol:from:",
  23944. protocol: 'actions',
  23945. fn: function (aString,aClass){
  23946. var self=this;
  23947. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23948. return $core.withContext(function($ctx1) {
  23949. //>>excludeEnd("ctx");
  23950. $recv($recv(aClass)._methodsInProtocol_(aString))._do_((function(each){
  23951. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23952. return $core.withContext(function($ctx2) {
  23953. //>>excludeEnd("ctx");
  23954. return $recv(aClass)._removeCompiledMethod_(each);
  23955. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23956. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  23957. //>>excludeEnd("ctx");
  23958. }));
  23959. return self;
  23960. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23961. }, function($ctx1) {$ctx1.fill(self,"removeProtocol:from:",{aString:aString,aClass:aClass},$globals.Environment)});
  23962. //>>excludeEnd("ctx");
  23963. },
  23964. //>>excludeStart("ide", pragmas.excludeIdeData);
  23965. args: ["aString", "aClass"],
  23966. source: "removeProtocol: aString from: aClass\x0a\x09(aClass methodsInProtocol: aString)\x0a\x09\x09do: [ :each | aClass removeCompiledMethod: each ]",
  23967. referencedClasses: [],
  23968. //>>excludeEnd("ide");
  23969. messageSends: ["do:", "methodsInProtocol:", "removeCompiledMethod:"]
  23970. }),
  23971. $globals.Environment);
  23972. $core.addMethod(
  23973. $core.method({
  23974. selector: "renameClass:to:",
  23975. protocol: 'actions',
  23976. fn: function (aClass,aClassName){
  23977. var self=this;
  23978. function $Smalltalk(){return $globals.Smalltalk||(typeof Smalltalk=="undefined"?nil:Smalltalk)}
  23979. function $ClassBuilder(){return $globals.ClassBuilder||(typeof ClassBuilder=="undefined"?nil:ClassBuilder)}
  23980. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23981. return $core.withContext(function($ctx1) {
  23982. //>>excludeEnd("ctx");
  23983. var $1,$2,$receiver;
  23984. $1=$recv($recv($Smalltalk())._globals())._at_(aClassName);
  23985. if(($receiver = $1) == null || $receiver.isNil){
  23986. $1;
  23987. } else {
  23988. $2=$recv("A class named ".__comma(aClassName)).__comma(" already exists");
  23989. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23990. $ctx1.sendIdx[","]=1;
  23991. //>>excludeEnd("ctx");
  23992. self._error_($2);
  23993. };
  23994. $recv($recv($ClassBuilder())._new())._renameClass_to_(aClass,aClassName);
  23995. return self;
  23996. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  23997. }, function($ctx1) {$ctx1.fill(self,"renameClass:to:",{aClass:aClass,aClassName:aClassName},$globals.Environment)});
  23998. //>>excludeEnd("ctx");
  23999. },
  24000. //>>excludeStart("ide", pragmas.excludeIdeData);
  24001. args: ["aClass", "aClassName"],
  24002. 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",
  24003. referencedClasses: ["Smalltalk", "ClassBuilder"],
  24004. //>>excludeEnd("ide");
  24005. messageSends: ["ifNotNil:", "at:", "globals", "error:", ",", "renameClass:to:", "new"]
  24006. }),
  24007. $globals.Environment);
  24008. $core.addMethod(
  24009. $core.method({
  24010. selector: "renameProtocol:to:in:",
  24011. protocol: 'actions',
  24012. fn: function (aString,anotherString,aClass){
  24013. var self=this;
  24014. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24015. return $core.withContext(function($ctx1) {
  24016. //>>excludeEnd("ctx");
  24017. $recv($recv(aClass)._methodsInProtocol_(aString))._do_((function(each){
  24018. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24019. return $core.withContext(function($ctx2) {
  24020. //>>excludeEnd("ctx");
  24021. return $recv(each)._protocol_(anotherString);
  24022. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24023. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  24024. //>>excludeEnd("ctx");
  24025. }));
  24026. return self;
  24027. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24028. }, function($ctx1) {$ctx1.fill(self,"renameProtocol:to:in:",{aString:aString,anotherString:anotherString,aClass:aClass},$globals.Environment)});
  24029. //>>excludeEnd("ctx");
  24030. },
  24031. //>>excludeStart("ide", pragmas.excludeIdeData);
  24032. args: ["aString", "anotherString", "aClass"],
  24033. source: "renameProtocol: aString to: anotherString in: aClass\x0a\x09(aClass methodsInProtocol: aString)\x0a\x09\x09do: [ :each | each protocol: anotherString ]",
  24034. referencedClasses: [],
  24035. //>>excludeEnd("ide");
  24036. messageSends: ["do:", "methodsInProtocol:", "protocol:"]
  24037. }),
  24038. $globals.Environment);
  24039. $core.addMethod(
  24040. $core.method({
  24041. selector: "setClassCommentOf:to:",
  24042. protocol: 'actions',
  24043. fn: function (aClass,aString){
  24044. var self=this;
  24045. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24046. return $core.withContext(function($ctx1) {
  24047. //>>excludeEnd("ctx");
  24048. $recv(aClass)._comment_(aString);
  24049. return self;
  24050. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24051. }, function($ctx1) {$ctx1.fill(self,"setClassCommentOf:to:",{aClass:aClass,aString:aString},$globals.Environment)});
  24052. //>>excludeEnd("ctx");
  24053. },
  24054. //>>excludeStart("ide", pragmas.excludeIdeData);
  24055. args: ["aClass", "aString"],
  24056. source: "setClassCommentOf: aClass to: aString\x0a\x09aClass comment: aString",
  24057. referencedClasses: [],
  24058. //>>excludeEnd("ide");
  24059. messageSends: ["comment:"]
  24060. }),
  24061. $globals.Environment);
  24062. $core.addMethod(
  24063. $core.method({
  24064. selector: "systemAnnouncer",
  24065. protocol: 'accessing',
  24066. fn: function (){
  24067. var self=this;
  24068. function $Smalltalk(){return $globals.Smalltalk||(typeof Smalltalk=="undefined"?nil:Smalltalk)}
  24069. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24070. return $core.withContext(function($ctx1) {
  24071. //>>excludeEnd("ctx");
  24072. var $1;
  24073. $1=$recv($recv($recv($Smalltalk())._globals())._at_("SystemAnnouncer"))._current();
  24074. return $1;
  24075. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24076. }, function($ctx1) {$ctx1.fill(self,"systemAnnouncer",{},$globals.Environment)});
  24077. //>>excludeEnd("ctx");
  24078. },
  24079. //>>excludeStart("ide", pragmas.excludeIdeData);
  24080. args: [],
  24081. source: "systemAnnouncer\x0a\x09^ (Smalltalk globals at: #SystemAnnouncer) current",
  24082. referencedClasses: ["Smalltalk"],
  24083. //>>excludeEnd("ide");
  24084. messageSends: ["current", "at:", "globals"]
  24085. }),
  24086. $globals.Environment);
  24087. $core.addClass('JSObjectProxy', $globals.ProtoObject, ['jsObject'], 'Kernel-Infrastructure');
  24088. //>>excludeStart("ide", pragmas.excludeIdeData);
  24089. $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`.";
  24090. //>>excludeEnd("ide");
  24091. $core.addMethod(
  24092. $core.method({
  24093. selector: "=",
  24094. protocol: 'comparing',
  24095. fn: function (anObject){
  24096. var self=this;
  24097. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24098. return $core.withContext(function($ctx1) {
  24099. //>>excludeEnd("ctx");
  24100. var $2,$1,$3;
  24101. $2=$recv(anObject)._class();
  24102. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24103. $ctx1.sendIdx["class"]=1;
  24104. //>>excludeEnd("ctx");
  24105. $1=$recv($2).__eq_eq(self._class());
  24106. if(!$core.assert($1)){
  24107. return false;
  24108. };
  24109. $3=self._compareJSObjectWith_($recv(anObject)._jsObject());
  24110. return $3;
  24111. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24112. }, function($ctx1) {$ctx1.fill(self,"=",{anObject:anObject},$globals.JSObjectProxy)});
  24113. //>>excludeEnd("ctx");
  24114. },
  24115. //>>excludeStart("ide", pragmas.excludeIdeData);
  24116. args: ["anObject"],
  24117. source: "= anObject\x0a\x09anObject class == self class ifFalse: [ ^ false ].\x0a\x09^ self compareJSObjectWith: anObject jsObject",
  24118. referencedClasses: [],
  24119. //>>excludeEnd("ide");
  24120. messageSends: ["ifFalse:", "==", "class", "compareJSObjectWith:", "jsObject"]
  24121. }),
  24122. $globals.JSObjectProxy);
  24123. $core.addMethod(
  24124. $core.method({
  24125. selector: "addObjectVariablesTo:",
  24126. protocol: 'proxy',
  24127. fn: function (aDictionary){
  24128. var self=this;
  24129. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24130. return $core.withContext(function($ctx1) {
  24131. //>>excludeEnd("ctx");
  24132. for(var i in self['@jsObject']) {
  24133. aDictionary._at_put_(i, self['@jsObject'][i]);
  24134. }
  24135. ;
  24136. return self;
  24137. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24138. }, function($ctx1) {$ctx1.fill(self,"addObjectVariablesTo:",{aDictionary:aDictionary},$globals.JSObjectProxy)});
  24139. //>>excludeEnd("ctx");
  24140. },
  24141. //>>excludeStart("ide", pragmas.excludeIdeData);
  24142. args: ["aDictionary"],
  24143. source: "addObjectVariablesTo: aDictionary\x0a\x09<\x0a\x09\x09for(var i in self['@jsObject']) {\x0a\x09\x09\x09aDictionary._at_put_(i, self['@jsObject'][i]);\x0a\x09\x09}\x0a\x09>",
  24144. referencedClasses: [],
  24145. //>>excludeEnd("ide");
  24146. messageSends: []
  24147. }),
  24148. $globals.JSObjectProxy);
  24149. $core.addMethod(
  24150. $core.method({
  24151. selector: "asJSON",
  24152. protocol: 'enumerating',
  24153. fn: function (){
  24154. var self=this;
  24155. var $1;
  24156. $1=self["@jsObject"];
  24157. return $1;
  24158. },
  24159. //>>excludeStart("ide", pragmas.excludeIdeData);
  24160. args: [],
  24161. source: "asJSON\x0a\x09\x22Answers the receiver in a stringyfy-friendly fashion\x22\x0a\x0a\x09^ jsObject",
  24162. referencedClasses: [],
  24163. //>>excludeEnd("ide");
  24164. messageSends: []
  24165. }),
  24166. $globals.JSObjectProxy);
  24167. $core.addMethod(
  24168. $core.method({
  24169. selector: "at:",
  24170. protocol: 'accessing',
  24171. fn: function (aString){
  24172. var self=this;
  24173. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24174. return $core.withContext(function($ctx1) {
  24175. //>>excludeEnd("ctx");
  24176. return self['@jsObject'][aString];
  24177. return self;
  24178. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24179. }, function($ctx1) {$ctx1.fill(self,"at:",{aString:aString},$globals.JSObjectProxy)});
  24180. //>>excludeEnd("ctx");
  24181. },
  24182. //>>excludeStart("ide", pragmas.excludeIdeData);
  24183. args: ["aString"],
  24184. source: "at: aString\x0a\x09<return self['@jsObject'][aString]>",
  24185. referencedClasses: [],
  24186. //>>excludeEnd("ide");
  24187. messageSends: []
  24188. }),
  24189. $globals.JSObjectProxy);
  24190. $core.addMethod(
  24191. $core.method({
  24192. selector: "at:ifAbsent:",
  24193. protocol: 'accessing',
  24194. fn: function (aString,aBlock){
  24195. var self=this;
  24196. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24197. return $core.withContext(function($ctx1) {
  24198. //>>excludeEnd("ctx");
  24199. var obj = self['@jsObject'];
  24200. return aString in obj ? obj[aString] : aBlock._value();
  24201. ;
  24202. return self;
  24203. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24204. }, function($ctx1) {$ctx1.fill(self,"at:ifAbsent:",{aString:aString,aBlock:aBlock},$globals.JSObjectProxy)});
  24205. //>>excludeEnd("ctx");
  24206. },
  24207. //>>excludeStart("ide", pragmas.excludeIdeData);
  24208. args: ["aString", "aBlock"],
  24209. 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<\x0a\x09\x09var obj = self['@jsObject'];\x0a\x09\x09return aString in obj ? obj[aString] : aBlock._value();\x0a\x09>",
  24210. referencedClasses: [],
  24211. //>>excludeEnd("ide");
  24212. messageSends: []
  24213. }),
  24214. $globals.JSObjectProxy);
  24215. $core.addMethod(
  24216. $core.method({
  24217. selector: "at:ifPresent:",
  24218. protocol: 'accessing',
  24219. fn: function (aString,aBlock){
  24220. var self=this;
  24221. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24222. return $core.withContext(function($ctx1) {
  24223. //>>excludeEnd("ctx");
  24224. var obj = self['@jsObject'];
  24225. return aString in obj ? aBlock._value_(obj[aString]) : nil;
  24226. ;
  24227. return self;
  24228. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24229. }, function($ctx1) {$ctx1.fill(self,"at:ifPresent:",{aString:aString,aBlock:aBlock},$globals.JSObjectProxy)});
  24230. //>>excludeEnd("ctx");
  24231. },
  24232. //>>excludeStart("ide", pragmas.excludeIdeData);
  24233. args: ["aString", "aBlock"],
  24234. 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<\x0a\x09\x09var obj = self['@jsObject'];\x0a\x09\x09return aString in obj ? aBlock._value_(obj[aString]) : nil;\x0a\x09>",
  24235. referencedClasses: [],
  24236. //>>excludeEnd("ide");
  24237. messageSends: []
  24238. }),
  24239. $globals.JSObjectProxy);
  24240. $core.addMethod(
  24241. $core.method({
  24242. selector: "at:ifPresent:ifAbsent:",
  24243. protocol: 'accessing',
  24244. fn: function (aString,aBlock,anotherBlock){
  24245. var self=this;
  24246. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24247. return $core.withContext(function($ctx1) {
  24248. //>>excludeEnd("ctx");
  24249. var obj = self['@jsObject'];
  24250. return aString in obj ? aBlock._value_(obj[aString]) : anotherBlock._value();
  24251. ;
  24252. return self;
  24253. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24254. }, function($ctx1) {$ctx1.fill(self,"at:ifPresent:ifAbsent:",{aString:aString,aBlock:aBlock,anotherBlock:anotherBlock},$globals.JSObjectProxy)});
  24255. //>>excludeEnd("ctx");
  24256. },
  24257. //>>excludeStart("ide", pragmas.excludeIdeData);
  24258. args: ["aString", "aBlock", "anotherBlock"],
  24259. 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<\x0a\x09\x09var obj = self['@jsObject'];\x0a\x09\x09return aString in obj ? aBlock._value_(obj[aString]) : anotherBlock._value();\x0a\x09>",
  24260. referencedClasses: [],
  24261. //>>excludeEnd("ide");
  24262. messageSends: []
  24263. }),
  24264. $globals.JSObjectProxy);
  24265. $core.addMethod(
  24266. $core.method({
  24267. selector: "at:put:",
  24268. protocol: 'accessing',
  24269. fn: function (aString,anObject){
  24270. var self=this;
  24271. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24272. return $core.withContext(function($ctx1) {
  24273. //>>excludeEnd("ctx");
  24274. return self['@jsObject'][aString] = anObject;
  24275. return self;
  24276. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24277. }, function($ctx1) {$ctx1.fill(self,"at:put:",{aString:aString,anObject:anObject},$globals.JSObjectProxy)});
  24278. //>>excludeEnd("ctx");
  24279. },
  24280. //>>excludeStart("ide", pragmas.excludeIdeData);
  24281. args: ["aString", "anObject"],
  24282. source: "at: aString put: anObject\x0a\x09<return self['@jsObject'][aString] = anObject>",
  24283. referencedClasses: [],
  24284. //>>excludeEnd("ide");
  24285. messageSends: []
  24286. }),
  24287. $globals.JSObjectProxy);
  24288. $core.addMethod(
  24289. $core.method({
  24290. selector: "compareJSObjectWith:",
  24291. protocol: 'private',
  24292. fn: function (aJSObject){
  24293. var self=this;
  24294. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24295. return $core.withContext(function($ctx1) {
  24296. //>>excludeEnd("ctx");
  24297. return self["@jsObject"] === aJSObject;
  24298. return self;
  24299. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24300. }, function($ctx1) {$ctx1.fill(self,"compareJSObjectWith:",{aJSObject:aJSObject},$globals.JSObjectProxy)});
  24301. //>>excludeEnd("ctx");
  24302. },
  24303. //>>excludeStart("ide", pragmas.excludeIdeData);
  24304. args: ["aJSObject"],
  24305. source: "compareJSObjectWith: aJSObject\x0a \x09<return self[\x22@jsObject\x22] === aJSObject>",
  24306. referencedClasses: [],
  24307. //>>excludeEnd("ide");
  24308. messageSends: []
  24309. }),
  24310. $globals.JSObjectProxy);
  24311. $core.addMethod(
  24312. $core.method({
  24313. selector: "doesNotUnderstand:",
  24314. protocol: 'proxy',
  24315. fn: function (aMessage){
  24316. var self=this;
  24317. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24318. return $core.withContext(function($ctx1) {
  24319. //>>excludeEnd("ctx");
  24320. var $2,$1,$receiver;
  24321. $2=self._lookupProperty_($recv($recv(aMessage)._selector())._asJavaScriptPropertyName());
  24322. if(($receiver = $2) == null || $receiver.isNil){
  24323. $1=(
  24324. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24325. $ctx1.supercall = true,
  24326. //>>excludeEnd("ctx");
  24327. $globals.JSObjectProxy.superclass.fn.prototype._doesNotUnderstand_.apply($recv(self), [aMessage]));
  24328. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24329. $ctx1.supercall = false;
  24330. //>>excludeEnd("ctx");;
  24331. } else {
  24332. var jsSelector;
  24333. jsSelector=$receiver;
  24334. $1=self._forwardMessage_withArguments_(jsSelector,$recv(aMessage)._arguments());
  24335. };
  24336. return $1;
  24337. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24338. }, function($ctx1) {$ctx1.fill(self,"doesNotUnderstand:",{aMessage:aMessage},$globals.JSObjectProxy)});
  24339. //>>excludeEnd("ctx");
  24340. },
  24341. //>>excludeStart("ide", pragmas.excludeIdeData);
  24342. args: ["aMessage"],
  24343. source: "doesNotUnderstand: aMessage\x0a\x09^ (self lookupProperty: aMessage selector asJavaScriptPropertyName)\x0a\x09\x09ifNil: [ super doesNotUnderstand: aMessage ]\x0a\x09\x09ifNotNil: [ :jsSelector | \x0a\x09\x09\x09self \x0a\x09\x09\x09\x09forwardMessage: jsSelector \x0a\x09\x09\x09\x09withArguments: aMessage arguments ]",
  24344. referencedClasses: [],
  24345. //>>excludeEnd("ide");
  24346. messageSends: ["ifNil:ifNotNil:", "lookupProperty:", "asJavaScriptPropertyName", "selector", "doesNotUnderstand:", "forwardMessage:withArguments:", "arguments"]
  24347. }),
  24348. $globals.JSObjectProxy);
  24349. $core.addMethod(
  24350. $core.method({
  24351. selector: "forwardMessage:withArguments:",
  24352. protocol: 'proxy',
  24353. fn: function (aString,anArray){
  24354. var self=this;
  24355. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24356. return $core.withContext(function($ctx1) {
  24357. //>>excludeEnd("ctx");
  24358. return $core.accessJavaScript(self._jsObject(), aString, anArray);
  24359. ;
  24360. return self;
  24361. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24362. }, function($ctx1) {$ctx1.fill(self,"forwardMessage:withArguments:",{aString:aString,anArray:anArray},$globals.JSObjectProxy)});
  24363. //>>excludeEnd("ctx");
  24364. },
  24365. //>>excludeStart("ide", pragmas.excludeIdeData);
  24366. args: ["aString", "anArray"],
  24367. source: "forwardMessage: aString withArguments: anArray\x0a\x09<\x0a\x09\x09return $core.accessJavaScript(self._jsObject(), aString, anArray);\x0a\x09>",
  24368. referencedClasses: [],
  24369. //>>excludeEnd("ide");
  24370. messageSends: []
  24371. }),
  24372. $globals.JSObjectProxy);
  24373. $core.addMethod(
  24374. $core.method({
  24375. selector: "inspectOn:",
  24376. protocol: 'proxy',
  24377. fn: function (anInspector){
  24378. var self=this;
  24379. var variables;
  24380. function $Dictionary(){return $globals.Dictionary||(typeof Dictionary=="undefined"?nil:Dictionary)}
  24381. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24382. return $core.withContext(function($ctx1) {
  24383. //>>excludeEnd("ctx");
  24384. variables=$recv($Dictionary())._new();
  24385. $recv(variables)._at_put_("#self",self._jsObject());
  24386. $recv(anInspector)._setLabel_(self._printString());
  24387. self._addObjectVariablesTo_(variables);
  24388. $recv(anInspector)._setVariables_(variables);
  24389. return self;
  24390. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24391. }, function($ctx1) {$ctx1.fill(self,"inspectOn:",{anInspector:anInspector,variables:variables},$globals.JSObjectProxy)});
  24392. //>>excludeEnd("ctx");
  24393. },
  24394. //>>excludeStart("ide", pragmas.excludeIdeData);
  24395. args: ["anInspector"],
  24396. source: "inspectOn: anInspector\x0a\x09| variables |\x0a\x09variables := Dictionary new.\x0a\x09variables at: '#self' put: self jsObject.\x0a\x09anInspector setLabel: self printString.\x0a\x09self addObjectVariablesTo: variables.\x0a\x09anInspector setVariables: variables",
  24397. referencedClasses: ["Dictionary"],
  24398. //>>excludeEnd("ide");
  24399. messageSends: ["new", "at:put:", "jsObject", "setLabel:", "printString", "addObjectVariablesTo:", "setVariables:"]
  24400. }),
  24401. $globals.JSObjectProxy);
  24402. $core.addMethod(
  24403. $core.method({
  24404. selector: "jsObject",
  24405. protocol: 'accessing',
  24406. fn: function (){
  24407. var self=this;
  24408. var $1;
  24409. $1=self["@jsObject"];
  24410. return $1;
  24411. },
  24412. //>>excludeStart("ide", pragmas.excludeIdeData);
  24413. args: [],
  24414. source: "jsObject\x0a\x09^ jsObject",
  24415. referencedClasses: [],
  24416. //>>excludeEnd("ide");
  24417. messageSends: []
  24418. }),
  24419. $globals.JSObjectProxy);
  24420. $core.addMethod(
  24421. $core.method({
  24422. selector: "jsObject:",
  24423. protocol: 'accessing',
  24424. fn: function (aJSObject){
  24425. var self=this;
  24426. self["@jsObject"]=aJSObject;
  24427. return self;
  24428. },
  24429. //>>excludeStart("ide", pragmas.excludeIdeData);
  24430. args: ["aJSObject"],
  24431. source: "jsObject: aJSObject\x0a\x09jsObject := aJSObject",
  24432. referencedClasses: [],
  24433. //>>excludeEnd("ide");
  24434. messageSends: []
  24435. }),
  24436. $globals.JSObjectProxy);
  24437. $core.addMethod(
  24438. $core.method({
  24439. selector: "keysAndValuesDo:",
  24440. protocol: 'enumerating',
  24441. fn: function (aBlock){
  24442. var self=this;
  24443. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24444. return $core.withContext(function($ctx1) {
  24445. //>>excludeEnd("ctx");
  24446. var o = self['@jsObject'];
  24447. for(var i in o) {
  24448. aBlock._value_value_(i, o[i]);
  24449. }
  24450. ;
  24451. return self;
  24452. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24453. }, function($ctx1) {$ctx1.fill(self,"keysAndValuesDo:",{aBlock:aBlock},$globals.JSObjectProxy)});
  24454. //>>excludeEnd("ctx");
  24455. },
  24456. //>>excludeStart("ide", pragmas.excludeIdeData);
  24457. args: ["aBlock"],
  24458. source: "keysAndValuesDo: aBlock\x0a\x09<\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>",
  24459. referencedClasses: [],
  24460. //>>excludeEnd("ide");
  24461. messageSends: []
  24462. }),
  24463. $globals.JSObjectProxy);
  24464. $core.addMethod(
  24465. $core.method({
  24466. selector: "lookupProperty:",
  24467. protocol: 'accessing',
  24468. fn: function (aString){
  24469. var self=this;
  24470. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24471. return $core.withContext(function($ctx1) {
  24472. //>>excludeEnd("ctx");
  24473. return aString in self._jsObject() ? aString : nil;
  24474. return self;
  24475. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24476. }, function($ctx1) {$ctx1.fill(self,"lookupProperty:",{aString:aString},$globals.JSObjectProxy)});
  24477. //>>excludeEnd("ctx");
  24478. },
  24479. //>>excludeStart("ide", pragmas.excludeIdeData);
  24480. args: ["aString"],
  24481. source: "lookupProperty: aString\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<return aString in self._jsObject() ? aString : nil>",
  24482. referencedClasses: [],
  24483. //>>excludeEnd("ide");
  24484. messageSends: []
  24485. }),
  24486. $globals.JSObjectProxy);
  24487. $core.addMethod(
  24488. $core.method({
  24489. selector: "printOn:",
  24490. protocol: 'printing',
  24491. fn: function (aStream){
  24492. var self=this;
  24493. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24494. return $core.withContext(function($ctx1) {
  24495. //>>excludeEnd("ctx");
  24496. $recv(aStream)._nextPutAll_(self._printString());
  24497. return self;
  24498. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24499. }, function($ctx1) {$ctx1.fill(self,"printOn:",{aStream:aStream},$globals.JSObjectProxy)});
  24500. //>>excludeEnd("ctx");
  24501. },
  24502. //>>excludeStart("ide", pragmas.excludeIdeData);
  24503. args: ["aStream"],
  24504. source: "printOn: aStream\x0a\x09aStream nextPutAll: self printString",
  24505. referencedClasses: [],
  24506. //>>excludeEnd("ide");
  24507. messageSends: ["nextPutAll:", "printString"]
  24508. }),
  24509. $globals.JSObjectProxy);
  24510. $core.addMethod(
  24511. $core.method({
  24512. selector: "printString",
  24513. protocol: 'printing',
  24514. fn: function (){
  24515. var self=this;
  24516. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24517. return $core.withContext(function($ctx1) {
  24518. //>>excludeEnd("ctx");
  24519. var js = self['@jsObject'];
  24520. return js.toString
  24521. ? js.toString()
  24522. : Object.prototype.toString.call(js)
  24523. ;
  24524. return self;
  24525. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24526. }, function($ctx1) {$ctx1.fill(self,"printString",{},$globals.JSObjectProxy)});
  24527. //>>excludeEnd("ctx");
  24528. },
  24529. //>>excludeStart("ide", pragmas.excludeIdeData);
  24530. args: [],
  24531. source: "printString\x0a\x09<\x0a\x09\x09var js = self['@jsObject'];\x0a\x09\x09return js.toString\x0a\x09\x09\x09? js.toString()\x0a\x09\x09\x09: Object.prototype.toString.call(js)\x0a\x09>",
  24532. referencedClasses: [],
  24533. //>>excludeEnd("ide");
  24534. messageSends: []
  24535. }),
  24536. $globals.JSObjectProxy);
  24537. $core.addMethod(
  24538. $core.method({
  24539. selector: "on:",
  24540. protocol: 'instance creation',
  24541. fn: function (aJSObject){
  24542. var self=this;
  24543. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24544. return $core.withContext(function($ctx1) {
  24545. //>>excludeEnd("ctx");
  24546. var $2,$3,$1;
  24547. $2=self._new();
  24548. $recv($2)._jsObject_(aJSObject);
  24549. $3=$recv($2)._yourself();
  24550. $1=$3;
  24551. return $1;
  24552. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24553. }, function($ctx1) {$ctx1.fill(self,"on:",{aJSObject:aJSObject},$globals.JSObjectProxy.klass)});
  24554. //>>excludeEnd("ctx");
  24555. },
  24556. //>>excludeStart("ide", pragmas.excludeIdeData);
  24557. args: ["aJSObject"],
  24558. source: "on: aJSObject\x0a\x09^ self new\x0a\x09\x09jsObject: aJSObject;\x0a\x09\x09yourself",
  24559. referencedClasses: [],
  24560. //>>excludeEnd("ide");
  24561. messageSends: ["jsObject:", "new", "yourself"]
  24562. }),
  24563. $globals.JSObjectProxy.klass);
  24564. $core.addClass('NullProgressHandler', $globals.Object, [], 'Kernel-Infrastructure');
  24565. //>>excludeStart("ide", pragmas.excludeIdeData);
  24566. $globals.NullProgressHandler.comment="I am the default progress handler. I do not display any progress, and simply iterate over the collection.";
  24567. //>>excludeEnd("ide");
  24568. $core.addMethod(
  24569. $core.method({
  24570. selector: "do:on:displaying:",
  24571. protocol: 'progress handling',
  24572. fn: function (aBlock,aCollection,aString){
  24573. var self=this;
  24574. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24575. return $core.withContext(function($ctx1) {
  24576. //>>excludeEnd("ctx");
  24577. $recv(aCollection)._do_(aBlock);
  24578. return self;
  24579. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24580. }, function($ctx1) {$ctx1.fill(self,"do:on:displaying:",{aBlock:aBlock,aCollection:aCollection,aString:aString},$globals.NullProgressHandler)});
  24581. //>>excludeEnd("ctx");
  24582. },
  24583. //>>excludeStart("ide", pragmas.excludeIdeData);
  24584. args: ["aBlock", "aCollection", "aString"],
  24585. source: "do: aBlock on: aCollection displaying: aString\x0a\x09aCollection do: aBlock",
  24586. referencedClasses: [],
  24587. //>>excludeEnd("ide");
  24588. messageSends: ["do:"]
  24589. }),
  24590. $globals.NullProgressHandler);
  24591. $globals.NullProgressHandler.klass.iVarNames = ['current'];
  24592. $core.addMethod(
  24593. $core.method({
  24594. selector: "initialize",
  24595. protocol: 'initialization',
  24596. fn: function (){
  24597. var self=this;
  24598. function $ProgressHandler(){return $globals.ProgressHandler||(typeof ProgressHandler=="undefined"?nil:ProgressHandler)}
  24599. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24600. return $core.withContext(function($ctx1) {
  24601. //>>excludeEnd("ctx");
  24602. $recv($ProgressHandler())._registerIfNone_(self._new());
  24603. return self;
  24604. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24605. }, function($ctx1) {$ctx1.fill(self,"initialize",{},$globals.NullProgressHandler.klass)});
  24606. //>>excludeEnd("ctx");
  24607. },
  24608. //>>excludeStart("ide", pragmas.excludeIdeData);
  24609. args: [],
  24610. source: "initialize\x0a\x09ProgressHandler registerIfNone: self new",
  24611. referencedClasses: ["ProgressHandler"],
  24612. //>>excludeEnd("ide");
  24613. messageSends: ["registerIfNone:", "new"]
  24614. }),
  24615. $globals.NullProgressHandler.klass);
  24616. $core.addClass('Organizer', $globals.Object, [], 'Kernel-Infrastructure');
  24617. //>>excludeStart("ide", pragmas.excludeIdeData);
  24618. $globals.Organizer.comment="I represent categorization information. \x0a\x0a## API\x0a\x0aUse `#addElement:` and `#removeElement:` to manipulate instances.";
  24619. //>>excludeEnd("ide");
  24620. $core.addMethod(
  24621. $core.method({
  24622. selector: "addElement:",
  24623. protocol: 'accessing',
  24624. fn: function (anObject){
  24625. var self=this;
  24626. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24627. return $core.withContext(function($ctx1) {
  24628. //>>excludeEnd("ctx");
  24629. self.elements.addElement(anObject);
  24630. return self;
  24631. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24632. }, function($ctx1) {$ctx1.fill(self,"addElement:",{anObject:anObject},$globals.Organizer)});
  24633. //>>excludeEnd("ctx");
  24634. },
  24635. //>>excludeStart("ide", pragmas.excludeIdeData);
  24636. args: ["anObject"],
  24637. source: "addElement: anObject\x0a\x09<self.elements.addElement(anObject)>",
  24638. referencedClasses: [],
  24639. //>>excludeEnd("ide");
  24640. messageSends: []
  24641. }),
  24642. $globals.Organizer);
  24643. $core.addMethod(
  24644. $core.method({
  24645. selector: "elements",
  24646. protocol: 'accessing',
  24647. fn: function (){
  24648. var self=this;
  24649. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24650. return $core.withContext(function($ctx1) {
  24651. //>>excludeEnd("ctx");
  24652. var $1;
  24653. $1=$recv(self._basicAt_("elements"))._copy();
  24654. return $1;
  24655. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24656. }, function($ctx1) {$ctx1.fill(self,"elements",{},$globals.Organizer)});
  24657. //>>excludeEnd("ctx");
  24658. },
  24659. //>>excludeStart("ide", pragmas.excludeIdeData);
  24660. args: [],
  24661. source: "elements\x0a\x09^ (self basicAt: 'elements') copy",
  24662. referencedClasses: [],
  24663. //>>excludeEnd("ide");
  24664. messageSends: ["copy", "basicAt:"]
  24665. }),
  24666. $globals.Organizer);
  24667. $core.addMethod(
  24668. $core.method({
  24669. selector: "removeElement:",
  24670. protocol: 'accessing',
  24671. fn: function (anObject){
  24672. var self=this;
  24673. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24674. return $core.withContext(function($ctx1) {
  24675. //>>excludeEnd("ctx");
  24676. self.elements.removeElement(anObject);
  24677. return self;
  24678. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24679. }, function($ctx1) {$ctx1.fill(self,"removeElement:",{anObject:anObject},$globals.Organizer)});
  24680. //>>excludeEnd("ctx");
  24681. },
  24682. //>>excludeStart("ide", pragmas.excludeIdeData);
  24683. args: ["anObject"],
  24684. source: "removeElement: anObject\x0a\x09<self.elements.removeElement(anObject)>",
  24685. referencedClasses: [],
  24686. //>>excludeEnd("ide");
  24687. messageSends: []
  24688. }),
  24689. $globals.Organizer);
  24690. $core.addClass('ClassOrganizer', $globals.Organizer, [], 'Kernel-Infrastructure');
  24691. //>>excludeStart("ide", pragmas.excludeIdeData);
  24692. $globals.ClassOrganizer.comment="I am an organizer specific to classes. I hold method categorization information for classes.";
  24693. //>>excludeEnd("ide");
  24694. $core.addMethod(
  24695. $core.method({
  24696. selector: "addElement:",
  24697. protocol: 'accessing',
  24698. fn: function (aString){
  24699. var self=this;
  24700. function $SystemAnnouncer(){return $globals.SystemAnnouncer||(typeof SystemAnnouncer=="undefined"?nil:SystemAnnouncer)}
  24701. function $ProtocolAdded(){return $globals.ProtocolAdded||(typeof ProtocolAdded=="undefined"?nil:ProtocolAdded)}
  24702. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24703. return $core.withContext(function($ctx1) {
  24704. //>>excludeEnd("ctx");
  24705. var $1,$2;
  24706. (
  24707. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24708. $ctx1.supercall = true,
  24709. //>>excludeEnd("ctx");
  24710. $globals.ClassOrganizer.superclass.fn.prototype._addElement_.apply($recv(self), [aString]));
  24711. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24712. $ctx1.supercall = false;
  24713. //>>excludeEnd("ctx");;
  24714. $1=$recv($ProtocolAdded())._new();
  24715. $recv($1)._protocol_(aString);
  24716. $recv($1)._theClass_(self._theClass());
  24717. $2=$recv($1)._yourself();
  24718. $recv($recv($SystemAnnouncer())._current())._announce_($2);
  24719. return self;
  24720. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24721. }, function($ctx1) {$ctx1.fill(self,"addElement:",{aString:aString},$globals.ClassOrganizer)});
  24722. //>>excludeEnd("ctx");
  24723. },
  24724. //>>excludeStart("ide", pragmas.excludeIdeData);
  24725. args: ["aString"],
  24726. 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)",
  24727. referencedClasses: ["SystemAnnouncer", "ProtocolAdded"],
  24728. //>>excludeEnd("ide");
  24729. messageSends: ["addElement:", "announce:", "current", "protocol:", "new", "theClass:", "theClass", "yourself"]
  24730. }),
  24731. $globals.ClassOrganizer);
  24732. $core.addMethod(
  24733. $core.method({
  24734. selector: "removeElement:",
  24735. protocol: 'accessing',
  24736. fn: function (aString){
  24737. var self=this;
  24738. function $SystemAnnouncer(){return $globals.SystemAnnouncer||(typeof SystemAnnouncer=="undefined"?nil:SystemAnnouncer)}
  24739. function $ProtocolRemoved(){return $globals.ProtocolRemoved||(typeof ProtocolRemoved=="undefined"?nil:ProtocolRemoved)}
  24740. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24741. return $core.withContext(function($ctx1) {
  24742. //>>excludeEnd("ctx");
  24743. var $1,$2;
  24744. (
  24745. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24746. $ctx1.supercall = true,
  24747. //>>excludeEnd("ctx");
  24748. $globals.ClassOrganizer.superclass.fn.prototype._removeElement_.apply($recv(self), [aString]));
  24749. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24750. $ctx1.supercall = false;
  24751. //>>excludeEnd("ctx");;
  24752. $1=$recv($ProtocolRemoved())._new();
  24753. $recv($1)._protocol_(aString);
  24754. $recv($1)._theClass_(self._theClass());
  24755. $2=$recv($1)._yourself();
  24756. $recv($recv($SystemAnnouncer())._current())._announce_($2);
  24757. return self;
  24758. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24759. }, function($ctx1) {$ctx1.fill(self,"removeElement:",{aString:aString},$globals.ClassOrganizer)});
  24760. //>>excludeEnd("ctx");
  24761. },
  24762. //>>excludeStart("ide", pragmas.excludeIdeData);
  24763. args: ["aString"],
  24764. 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)",
  24765. referencedClasses: ["SystemAnnouncer", "ProtocolRemoved"],
  24766. //>>excludeEnd("ide");
  24767. messageSends: ["removeElement:", "announce:", "current", "protocol:", "new", "theClass:", "theClass", "yourself"]
  24768. }),
  24769. $globals.ClassOrganizer);
  24770. $core.addMethod(
  24771. $core.method({
  24772. selector: "theClass",
  24773. protocol: 'accessing',
  24774. fn: function (){
  24775. var self=this;
  24776. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24777. return $core.withContext(function($ctx1) {
  24778. //>>excludeEnd("ctx");
  24779. return self.theClass ;
  24780. return self;
  24781. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24782. }, function($ctx1) {$ctx1.fill(self,"theClass",{},$globals.ClassOrganizer)});
  24783. //>>excludeEnd("ctx");
  24784. },
  24785. //>>excludeStart("ide", pragmas.excludeIdeData);
  24786. args: [],
  24787. source: "theClass\x0a\x09< return self.theClass >",
  24788. referencedClasses: [],
  24789. //>>excludeEnd("ide");
  24790. messageSends: []
  24791. }),
  24792. $globals.ClassOrganizer);
  24793. $core.addClass('PackageOrganizer', $globals.Organizer, [], 'Kernel-Infrastructure');
  24794. //>>excludeStart("ide", pragmas.excludeIdeData);
  24795. $globals.PackageOrganizer.comment="I am an organizer specific to packages. I hold classes categorization information.";
  24796. //>>excludeEnd("ide");
  24797. $core.addClass('Package', $globals.Object, ['transport', 'dirty'], 'Kernel-Infrastructure');
  24798. //>>excludeStart("ide", pragmas.excludeIdeData);
  24799. $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'";
  24800. //>>excludeEnd("ide");
  24801. $core.addMethod(
  24802. $core.method({
  24803. selector: "basicName:",
  24804. protocol: 'private',
  24805. fn: function (aString){
  24806. var self=this;
  24807. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24808. return $core.withContext(function($ctx1) {
  24809. //>>excludeEnd("ctx");
  24810. self.pkgName = aString;
  24811. return self;
  24812. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24813. }, function($ctx1) {$ctx1.fill(self,"basicName:",{aString:aString},$globals.Package)});
  24814. //>>excludeEnd("ctx");
  24815. },
  24816. //>>excludeStart("ide", pragmas.excludeIdeData);
  24817. args: ["aString"],
  24818. source: "basicName: aString\x0a\x09<self.pkgName = aString>",
  24819. referencedClasses: [],
  24820. //>>excludeEnd("ide");
  24821. messageSends: []
  24822. }),
  24823. $globals.Package);
  24824. $core.addMethod(
  24825. $core.method({
  24826. selector: "basicTransport",
  24827. protocol: 'private',
  24828. fn: function (){
  24829. var self=this;
  24830. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24831. return $core.withContext(function($ctx1) {
  24832. //>>excludeEnd("ctx");
  24833. return self.transport;
  24834. return self;
  24835. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24836. }, function($ctx1) {$ctx1.fill(self,"basicTransport",{},$globals.Package)});
  24837. //>>excludeEnd("ctx");
  24838. },
  24839. //>>excludeStart("ide", pragmas.excludeIdeData);
  24840. args: [],
  24841. source: "basicTransport\x0a\x09\x22Answer the transport literal JavaScript object as setup in the JavaScript file, if any\x22\x0a\x09\x0a\x09<return self.transport>",
  24842. referencedClasses: [],
  24843. //>>excludeEnd("ide");
  24844. messageSends: []
  24845. }),
  24846. $globals.Package);
  24847. $core.addMethod(
  24848. $core.method({
  24849. selector: "beClean",
  24850. protocol: 'accessing',
  24851. fn: function (){
  24852. var self=this;
  24853. function $SystemAnnouncer(){return $globals.SystemAnnouncer||(typeof SystemAnnouncer=="undefined"?nil:SystemAnnouncer)}
  24854. function $PackageClean(){return $globals.PackageClean||(typeof PackageClean=="undefined"?nil:PackageClean)}
  24855. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24856. return $core.withContext(function($ctx1) {
  24857. //>>excludeEnd("ctx");
  24858. var $1,$2;
  24859. self["@dirty"]=false;
  24860. $1=$recv($PackageClean())._new();
  24861. $recv($1)._package_(self);
  24862. $2=$recv($1)._yourself();
  24863. $recv($recv($SystemAnnouncer())._current())._announce_($2);
  24864. return self;
  24865. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24866. }, function($ctx1) {$ctx1.fill(self,"beClean",{},$globals.Package)});
  24867. //>>excludeEnd("ctx");
  24868. },
  24869. //>>excludeStart("ide", pragmas.excludeIdeData);
  24870. args: [],
  24871. source: "beClean\x0a\x09dirty := false.\x0a\x09\x0a\x09SystemAnnouncer current announce: (PackageClean new\x0a\x09\x09package: self;\x0a\x09\x09yourself)",
  24872. referencedClasses: ["SystemAnnouncer", "PackageClean"],
  24873. //>>excludeEnd("ide");
  24874. messageSends: ["announce:", "current", "package:", "new", "yourself"]
  24875. }),
  24876. $globals.Package);
  24877. $core.addMethod(
  24878. $core.method({
  24879. selector: "beDirty",
  24880. protocol: 'accessing',
  24881. fn: function (){
  24882. var self=this;
  24883. function $SystemAnnouncer(){return $globals.SystemAnnouncer||(typeof SystemAnnouncer=="undefined"?nil:SystemAnnouncer)}
  24884. function $PackageDirty(){return $globals.PackageDirty||(typeof PackageDirty=="undefined"?nil:PackageDirty)}
  24885. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24886. return $core.withContext(function($ctx1) {
  24887. //>>excludeEnd("ctx");
  24888. var $1,$2;
  24889. self["@dirty"]=true;
  24890. $1=$recv($PackageDirty())._new();
  24891. $recv($1)._package_(self);
  24892. $2=$recv($1)._yourself();
  24893. $recv($recv($SystemAnnouncer())._current())._announce_($2);
  24894. return self;
  24895. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24896. }, function($ctx1) {$ctx1.fill(self,"beDirty",{},$globals.Package)});
  24897. //>>excludeEnd("ctx");
  24898. },
  24899. //>>excludeStart("ide", pragmas.excludeIdeData);
  24900. args: [],
  24901. source: "beDirty\x0a\x09dirty := true.\x0a\x09\x0a\x09SystemAnnouncer current announce: (PackageDirty new\x0a\x09\x09package: self;\x0a\x09\x09yourself)",
  24902. referencedClasses: ["SystemAnnouncer", "PackageDirty"],
  24903. //>>excludeEnd("ide");
  24904. messageSends: ["announce:", "current", "package:", "new", "yourself"]
  24905. }),
  24906. $globals.Package);
  24907. $core.addMethod(
  24908. $core.method({
  24909. selector: "classTemplate",
  24910. protocol: 'accessing',
  24911. fn: function (){
  24912. var self=this;
  24913. function $String(){return $globals.String||(typeof String=="undefined"?nil:String)}
  24914. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24915. return $core.withContext(function($ctx1) {
  24916. //>>excludeEnd("ctx");
  24917. var $3,$4,$2,$5,$6,$7,$1;
  24918. $1=$recv($String())._streamContents_((function(stream){
  24919. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24920. return $core.withContext(function($ctx2) {
  24921. //>>excludeEnd("ctx");
  24922. $recv(stream)._nextPutAll_("Object");
  24923. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24924. $ctx2.sendIdx["nextPutAll:"]=1;
  24925. //>>excludeEnd("ctx");
  24926. $recv(stream)._nextPutAll_(" subclass: #NameOfSubclass");
  24927. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24928. $ctx2.sendIdx["nextPutAll:"]=2;
  24929. //>>excludeEnd("ctx");
  24930. $3=$recv($String())._lf();
  24931. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24932. $ctx2.sendIdx["lf"]=1;
  24933. //>>excludeEnd("ctx");
  24934. $4=$recv($String())._tab();
  24935. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24936. $ctx2.sendIdx["tab"]=1;
  24937. //>>excludeEnd("ctx");
  24938. $2=$recv($3).__comma($4);
  24939. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24940. $ctx2.sendIdx[","]=1;
  24941. //>>excludeEnd("ctx");
  24942. $recv(stream)._nextPutAll_($2);
  24943. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24944. $ctx2.sendIdx["nextPutAll:"]=3;
  24945. //>>excludeEnd("ctx");
  24946. $5=$recv(stream)._nextPutAll_("instanceVariableNames: ''");
  24947. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24948. $ctx2.sendIdx["nextPutAll:"]=4;
  24949. //>>excludeEnd("ctx");
  24950. $5;
  24951. $6=$recv("'".__comma($recv($String())._lf())).__comma($recv($String())._tab());
  24952. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24953. $ctx2.sendIdx[","]=2;
  24954. //>>excludeEnd("ctx");
  24955. $recv(stream)._nextPutAll_($6);
  24956. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24957. $ctx2.sendIdx["nextPutAll:"]=5;
  24958. //>>excludeEnd("ctx");
  24959. $recv(stream)._nextPutAll_("package: '");
  24960. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24961. $ctx2.sendIdx["nextPutAll:"]=6;
  24962. //>>excludeEnd("ctx");
  24963. $recv(stream)._nextPutAll_(self._name());
  24964. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24965. $ctx2.sendIdx["nextPutAll:"]=7;
  24966. //>>excludeEnd("ctx");
  24967. $7=$recv(stream)._nextPutAll_("'");
  24968. return $7;
  24969. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24970. }, function($ctx2) {$ctx2.fillBlock({stream:stream},$ctx1,1)});
  24971. //>>excludeEnd("ctx");
  24972. }));
  24973. return $1;
  24974. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24975. }, function($ctx1) {$ctx1.fill(self,"classTemplate",{},$globals.Package)});
  24976. //>>excludeEnd("ctx");
  24977. },
  24978. //>>excludeStart("ide", pragmas.excludeIdeData);
  24979. args: [],
  24980. source: "classTemplate\x0a\x09^ String streamContents: [ :stream |\x0a\x09\x09stream\x0a\x09\x09\x09nextPutAll: 'Object';\x0a\x09\x09\x09nextPutAll: ' subclass: #NameOfSubclass';\x0a\x09\x09\x09nextPutAll: String lf, String tab;\x0a\x09\x09\x09nextPutAll: 'instanceVariableNames: '''''.\x0a\x09\x09stream\x0a\x09\x09\x09nextPutAll: '''', String lf, String tab;\x0a\x09\x09\x09nextPutAll: 'package: ''';\x0a\x09\x09\x09nextPutAll: self name;\x0a\x09\x09\x09nextPutAll: '''' ]",
  24981. referencedClasses: ["String"],
  24982. //>>excludeEnd("ide");
  24983. messageSends: ["streamContents:", "nextPutAll:", ",", "lf", "tab", "name"]
  24984. }),
  24985. $globals.Package);
  24986. $core.addMethod(
  24987. $core.method({
  24988. selector: "classes",
  24989. protocol: 'classes',
  24990. fn: function (){
  24991. var self=this;
  24992. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24993. return $core.withContext(function($ctx1) {
  24994. //>>excludeEnd("ctx");
  24995. var $1;
  24996. $1=$recv(self._organization())._elements();
  24997. return $1;
  24998. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  24999. }, function($ctx1) {$ctx1.fill(self,"classes",{},$globals.Package)});
  25000. //>>excludeEnd("ctx");
  25001. },
  25002. //>>excludeStart("ide", pragmas.excludeIdeData);
  25003. args: [],
  25004. source: "classes\x0a\x09^ self organization elements",
  25005. referencedClasses: [],
  25006. //>>excludeEnd("ide");
  25007. messageSends: ["elements", "organization"]
  25008. }),
  25009. $globals.Package);
  25010. $core.addMethod(
  25011. $core.method({
  25012. selector: "definition",
  25013. protocol: 'accessing',
  25014. fn: function (){
  25015. var self=this;
  25016. function $String(){return $globals.String||(typeof String=="undefined"?nil:String)}
  25017. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25018. return $core.withContext(function($ctx1) {
  25019. //>>excludeEnd("ctx");
  25020. var $2,$4,$5,$3,$7,$6,$8,$9,$1;
  25021. $1=$recv($String())._streamContents_((function(stream){
  25022. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25023. return $core.withContext(function($ctx2) {
  25024. //>>excludeEnd("ctx");
  25025. $2=$recv(self._class())._name();
  25026. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25027. $ctx2.sendIdx["name"]=1;
  25028. //>>excludeEnd("ctx");
  25029. $recv(stream)._nextPutAll_($2);
  25030. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25031. $ctx2.sendIdx["nextPutAll:"]=1;
  25032. //>>excludeEnd("ctx");
  25033. $4=$recv($String())._lf();
  25034. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25035. $ctx2.sendIdx["lf"]=1;
  25036. //>>excludeEnd("ctx");
  25037. $5=$recv($String())._tab();
  25038. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25039. $ctx2.sendIdx["tab"]=1;
  25040. //>>excludeEnd("ctx");
  25041. $3=$recv($4).__comma($5);
  25042. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25043. $ctx2.sendIdx[","]=1;
  25044. //>>excludeEnd("ctx");
  25045. $recv(stream)._nextPutAll_($3);
  25046. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25047. $ctx2.sendIdx["nextPutAll:"]=2;
  25048. //>>excludeEnd("ctx");
  25049. $recv(stream)._nextPutAll_(" named: ");
  25050. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25051. $ctx2.sendIdx["nextPutAll:"]=3;
  25052. //>>excludeEnd("ctx");
  25053. $7="'".__comma(self._name());
  25054. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25055. $ctx2.sendIdx[","]=3;
  25056. //>>excludeEnd("ctx");
  25057. $6=$recv($7).__comma("'");
  25058. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25059. $ctx2.sendIdx[","]=2;
  25060. //>>excludeEnd("ctx");
  25061. $recv(stream)._nextPutAll_($6);
  25062. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25063. $ctx2.sendIdx["nextPutAll:"]=4;
  25064. //>>excludeEnd("ctx");
  25065. $8=$recv($recv($String())._lf()).__comma($recv($String())._tab());
  25066. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25067. $ctx2.sendIdx[","]=4;
  25068. //>>excludeEnd("ctx");
  25069. $recv(stream)._nextPutAll_($8);
  25070. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25071. $ctx2.sendIdx["nextPutAll:"]=5;
  25072. //>>excludeEnd("ctx");
  25073. $recv(stream)._nextPutAll_(" transport: (");
  25074. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25075. $ctx2.sendIdx["nextPutAll:"]=6;
  25076. //>>excludeEnd("ctx");
  25077. $9=$recv(stream)._nextPutAll_($recv($recv(self._transport())._definition()).__comma(")"));
  25078. return $9;
  25079. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25080. }, function($ctx2) {$ctx2.fillBlock({stream:stream},$ctx1,1)});
  25081. //>>excludeEnd("ctx");
  25082. }));
  25083. return $1;
  25084. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25085. }, function($ctx1) {$ctx1.fill(self,"definition",{},$globals.Package)});
  25086. //>>excludeEnd("ctx");
  25087. },
  25088. //>>excludeStart("ide", pragmas.excludeIdeData);
  25089. args: [],
  25090. source: "definition\x0a\x09^ String streamContents: [ :stream |\x0a\x09\x09stream \x0a\x09\x09\x09nextPutAll: self class name;\x0a\x09\x09\x09nextPutAll: String lf, String tab;\x0a\x09\x09\x09nextPutAll: ' named: ';\x0a\x09\x09\x09nextPutAll: '''', self name, '''';\x0a\x09\x09\x09nextPutAll: String lf, String tab;\x0a\x09\x09\x09nextPutAll: ' transport: (';\x0a\x09\x09\x09nextPutAll: self transport definition, ')' ]",
  25091. referencedClasses: ["String"],
  25092. //>>excludeEnd("ide");
  25093. messageSends: ["streamContents:", "nextPutAll:", "name", "class", ",", "lf", "tab", "definition", "transport"]
  25094. }),
  25095. $globals.Package);
  25096. $core.addMethod(
  25097. $core.method({
  25098. selector: "isDirty",
  25099. protocol: 'testing',
  25100. fn: function (){
  25101. var self=this;
  25102. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25103. return $core.withContext(function($ctx1) {
  25104. //>>excludeEnd("ctx");
  25105. var $2,$1,$receiver;
  25106. $2=self["@dirty"];
  25107. if(($receiver = $2) == null || $receiver.isNil){
  25108. $1=false;
  25109. } else {
  25110. $1=$2;
  25111. };
  25112. return $1;
  25113. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25114. }, function($ctx1) {$ctx1.fill(self,"isDirty",{},$globals.Package)});
  25115. //>>excludeEnd("ctx");
  25116. },
  25117. //>>excludeStart("ide", pragmas.excludeIdeData);
  25118. args: [],
  25119. source: "isDirty\x0a\x09^ dirty ifNil: [ false ]",
  25120. referencedClasses: [],
  25121. //>>excludeEnd("ide");
  25122. messageSends: ["ifNil:"]
  25123. }),
  25124. $globals.Package);
  25125. $core.addMethod(
  25126. $core.method({
  25127. selector: "isPackage",
  25128. protocol: 'testing',
  25129. fn: function (){
  25130. var self=this;
  25131. return true;
  25132. },
  25133. //>>excludeStart("ide", pragmas.excludeIdeData);
  25134. args: [],
  25135. source: "isPackage\x0a\x09^ true",
  25136. referencedClasses: [],
  25137. //>>excludeEnd("ide");
  25138. messageSends: []
  25139. }),
  25140. $globals.Package);
  25141. $core.addMethod(
  25142. $core.method({
  25143. selector: "loadDependencies",
  25144. protocol: 'dependencies',
  25145. fn: function (){
  25146. var self=this;
  25147. var classes,packages;
  25148. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25149. return $core.withContext(function($ctx1) {
  25150. //>>excludeEnd("ctx");
  25151. var $2,$3,$1;
  25152. classes=self._loadDependencyClasses();
  25153. $2=$recv($recv(classes)._collect_((function(each){
  25154. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25155. return $core.withContext(function($ctx2) {
  25156. //>>excludeEnd("ctx");
  25157. return $recv(each)._package();
  25158. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25159. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  25160. //>>excludeEnd("ctx");
  25161. })))._asSet();
  25162. $recv($2)._remove_ifAbsent_(self,(function(){
  25163. }));
  25164. $3=$recv($2)._yourself();
  25165. $1=$3;
  25166. return $1;
  25167. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25168. }, function($ctx1) {$ctx1.fill(self,"loadDependencies",{classes:classes,packages:packages},$globals.Package)});
  25169. //>>excludeEnd("ctx");
  25170. },
  25171. //>>excludeStart("ide", pragmas.excludeIdeData);
  25172. args: [],
  25173. 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",
  25174. referencedClasses: [],
  25175. //>>excludeEnd("ide");
  25176. messageSends: ["loadDependencyClasses", "remove:ifAbsent:", "asSet", "collect:", "package", "yourself"]
  25177. }),
  25178. $globals.Package);
  25179. $core.addMethod(
  25180. $core.method({
  25181. selector: "loadDependencyClasses",
  25182. protocol: 'dependencies',
  25183. fn: function (){
  25184. var self=this;
  25185. var starCategoryName;
  25186. function $Smalltalk(){return $globals.Smalltalk||(typeof Smalltalk=="undefined"?nil:Smalltalk)}
  25187. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25188. return $core.withContext(function($ctx1) {
  25189. //>>excludeEnd("ctx");
  25190. var $4,$3,$2,$6,$5,$7,$1;
  25191. starCategoryName="*".__comma(self._name());
  25192. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25193. $ctx1.sendIdx[","]=1;
  25194. //>>excludeEnd("ctx");
  25195. $4=self._classes();
  25196. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25197. $ctx1.sendIdx["classes"]=1;
  25198. //>>excludeEnd("ctx");
  25199. $3=$recv($4)._collect_((function(each){
  25200. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25201. return $core.withContext(function($ctx2) {
  25202. //>>excludeEnd("ctx");
  25203. return $recv(each)._superclass();
  25204. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25205. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  25206. //>>excludeEnd("ctx");
  25207. }));
  25208. $2=$recv($3)._asSet();
  25209. $recv($2)._remove_ifAbsent_(nil,(function(){
  25210. }));
  25211. $recv($2)._addAll_($recv($recv($Smalltalk())._classes())._select_((function(each){
  25212. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25213. return $core.withContext(function($ctx2) {
  25214. //>>excludeEnd("ctx");
  25215. $6=$recv(each)._protocols();
  25216. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25217. $ctx2.sendIdx["protocols"]=1;
  25218. //>>excludeEnd("ctx");
  25219. $5=$recv($6).__comma($recv($recv(each)._class())._protocols());
  25220. return $recv($5)._includes_(starCategoryName);
  25221. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25222. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,3)});
  25223. //>>excludeEnd("ctx");
  25224. })));
  25225. $7=$recv($2)._yourself();
  25226. $1=$7;
  25227. return $1;
  25228. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25229. }, function($ctx1) {$ctx1.fill(self,"loadDependencyClasses",{starCategoryName:starCategoryName},$globals.Package)});
  25230. //>>excludeEnd("ctx");
  25231. },
  25232. //>>excludeStart("ide", pragmas.excludeIdeData);
  25233. args: [],
  25234. 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\x22\x0a\x09\x0a\x09| starCategoryName |\x0a\x09starCategoryName := '*', self name.\x0a\x09^ (self classes collect: [ :each | each superclass ]) asSet\x0a\x09\x09remove: nil ifAbsent: [];\x0a\x09\x09addAll: (Smalltalk classes select: [ :each | each protocols, each class protocols includes: starCategoryName ]);\x0a\x09\x09yourself",
  25235. referencedClasses: ["Smalltalk"],
  25236. //>>excludeEnd("ide");
  25237. messageSends: [",", "name", "remove:ifAbsent:", "asSet", "collect:", "classes", "superclass", "addAll:", "select:", "includes:", "protocols", "class", "yourself"]
  25238. }),
  25239. $globals.Package);
  25240. $core.addMethod(
  25241. $core.method({
  25242. selector: "name",
  25243. protocol: 'accessing',
  25244. fn: function (){
  25245. var self=this;
  25246. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25247. return $core.withContext(function($ctx1) {
  25248. //>>excludeEnd("ctx");
  25249. return self.pkgName;
  25250. return self;
  25251. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25252. }, function($ctx1) {$ctx1.fill(self,"name",{},$globals.Package)});
  25253. //>>excludeEnd("ctx");
  25254. },
  25255. //>>excludeStart("ide", pragmas.excludeIdeData);
  25256. args: [],
  25257. source: "name\x0a\x09<return self.pkgName>",
  25258. referencedClasses: [],
  25259. //>>excludeEnd("ide");
  25260. messageSends: []
  25261. }),
  25262. $globals.Package);
  25263. $core.addMethod(
  25264. $core.method({
  25265. selector: "name:",
  25266. protocol: 'accessing',
  25267. fn: function (aString){
  25268. var self=this;
  25269. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25270. return $core.withContext(function($ctx1) {
  25271. //>>excludeEnd("ctx");
  25272. self._basicName_(aString);
  25273. self._beDirty();
  25274. return self;
  25275. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25276. }, function($ctx1) {$ctx1.fill(self,"name:",{aString:aString},$globals.Package)});
  25277. //>>excludeEnd("ctx");
  25278. },
  25279. //>>excludeStart("ide", pragmas.excludeIdeData);
  25280. args: ["aString"],
  25281. source: "name: aString\x0a\x09self basicName: aString.\x0a\x09self beDirty",
  25282. referencedClasses: [],
  25283. //>>excludeEnd("ide");
  25284. messageSends: ["basicName:", "beDirty"]
  25285. }),
  25286. $globals.Package);
  25287. $core.addMethod(
  25288. $core.method({
  25289. selector: "organization",
  25290. protocol: 'accessing',
  25291. fn: function (){
  25292. var self=this;
  25293. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25294. return $core.withContext(function($ctx1) {
  25295. //>>excludeEnd("ctx");
  25296. var $1;
  25297. $1=self._basicAt_("organization");
  25298. return $1;
  25299. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25300. }, function($ctx1) {$ctx1.fill(self,"organization",{},$globals.Package)});
  25301. //>>excludeEnd("ctx");
  25302. },
  25303. //>>excludeStart("ide", pragmas.excludeIdeData);
  25304. args: [],
  25305. source: "organization\x0a\x09^ self basicAt: 'organization'",
  25306. referencedClasses: [],
  25307. //>>excludeEnd("ide");
  25308. messageSends: ["basicAt:"]
  25309. }),
  25310. $globals.Package);
  25311. $core.addMethod(
  25312. $core.method({
  25313. selector: "printOn:",
  25314. protocol: 'printing',
  25315. fn: function (aStream){
  25316. var self=this;
  25317. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25318. return $core.withContext(function($ctx1) {
  25319. //>>excludeEnd("ctx");
  25320. var $1;
  25321. (
  25322. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25323. $ctx1.supercall = true,
  25324. //>>excludeEnd("ctx");
  25325. $globals.Package.superclass.fn.prototype._printOn_.apply($recv(self), [aStream]));
  25326. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25327. $ctx1.supercall = false;
  25328. //>>excludeEnd("ctx");;
  25329. $recv(aStream)._nextPutAll_(" (");
  25330. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25331. $ctx1.sendIdx["nextPutAll:"]=1;
  25332. //>>excludeEnd("ctx");
  25333. $recv(aStream)._nextPutAll_(self._name());
  25334. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25335. $ctx1.sendIdx["nextPutAll:"]=2;
  25336. //>>excludeEnd("ctx");
  25337. $1=$recv(aStream)._nextPutAll_(")");
  25338. return self;
  25339. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25340. }, function($ctx1) {$ctx1.fill(self,"printOn:",{aStream:aStream},$globals.Package)});
  25341. //>>excludeEnd("ctx");
  25342. },
  25343. //>>excludeStart("ide", pragmas.excludeIdeData);
  25344. args: ["aStream"],
  25345. source: "printOn: aStream\x0a\x09super printOn: aStream.\x0a\x09aStream \x0a\x09\x09nextPutAll: ' (';\x0a\x09\x09nextPutAll: self name;\x0a\x09\x09nextPutAll: ')'",
  25346. referencedClasses: [],
  25347. //>>excludeEnd("ide");
  25348. messageSends: ["printOn:", "nextPutAll:", "name"]
  25349. }),
  25350. $globals.Package);
  25351. $core.addMethod(
  25352. $core.method({
  25353. selector: "setupClasses",
  25354. protocol: 'classes',
  25355. fn: function (){
  25356. var self=this;
  25357. function $ClassBuilder(){return $globals.ClassBuilder||(typeof ClassBuilder=="undefined"?nil:ClassBuilder)}
  25358. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25359. return $core.withContext(function($ctx1) {
  25360. //>>excludeEnd("ctx");
  25361. var $1,$2;
  25362. $1=self._classes();
  25363. $recv($1)._do_((function(each){
  25364. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25365. return $core.withContext(function($ctx2) {
  25366. //>>excludeEnd("ctx");
  25367. return $recv($recv($ClassBuilder())._new())._setupClass_(each);
  25368. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25369. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  25370. //>>excludeEnd("ctx");
  25371. }));
  25372. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25373. $ctx1.sendIdx["do:"]=1;
  25374. //>>excludeEnd("ctx");
  25375. $2=$recv($1)._do_((function(each){
  25376. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25377. return $core.withContext(function($ctx2) {
  25378. //>>excludeEnd("ctx");
  25379. return $recv(each)._initialize();
  25380. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25381. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,2)});
  25382. //>>excludeEnd("ctx");
  25383. }));
  25384. return self;
  25385. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25386. }, function($ctx1) {$ctx1.fill(self,"setupClasses",{},$globals.Package)});
  25387. //>>excludeEnd("ctx");
  25388. },
  25389. //>>excludeStart("ide", pragmas.excludeIdeData);
  25390. args: [],
  25391. source: "setupClasses\x0a\x09self classes\x0a\x09\x09do: [ :each | ClassBuilder new setupClass: each ];\x0a\x09\x09do: [ :each | each initialize ]",
  25392. referencedClasses: ["ClassBuilder"],
  25393. //>>excludeEnd("ide");
  25394. messageSends: ["do:", "classes", "setupClass:", "new", "initialize"]
  25395. }),
  25396. $globals.Package);
  25397. $core.addMethod(
  25398. $core.method({
  25399. selector: "sortedClasses",
  25400. protocol: 'classes',
  25401. fn: function (){
  25402. var self=this;
  25403. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25404. return $core.withContext(function($ctx1) {
  25405. //>>excludeEnd("ctx");
  25406. var $1;
  25407. $1=$recv(self._class())._sortedClasses_(self._classes());
  25408. return $1;
  25409. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25410. }, function($ctx1) {$ctx1.fill(self,"sortedClasses",{},$globals.Package)});
  25411. //>>excludeEnd("ctx");
  25412. },
  25413. //>>excludeStart("ide", pragmas.excludeIdeData);
  25414. args: [],
  25415. 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",
  25416. referencedClasses: [],
  25417. //>>excludeEnd("ide");
  25418. messageSends: ["sortedClasses:", "class", "classes"]
  25419. }),
  25420. $globals.Package);
  25421. $core.addMethod(
  25422. $core.method({
  25423. selector: "transport",
  25424. protocol: 'accessing',
  25425. fn: function (){
  25426. var self=this;
  25427. function $PackageTransport(){return $globals.PackageTransport||(typeof PackageTransport=="undefined"?nil:PackageTransport)}
  25428. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25429. return $core.withContext(function($ctx1) {
  25430. //>>excludeEnd("ctx");
  25431. var $2,$3,$4,$1,$receiver;
  25432. $2=self["@transport"];
  25433. if(($receiver = $2) == null || $receiver.isNil){
  25434. $3=$recv($PackageTransport())._fromJson_(self._basicTransport());
  25435. $recv($3)._package_(self);
  25436. $4=$recv($3)._yourself();
  25437. self["@transport"]=$4;
  25438. $1=self["@transport"];
  25439. } else {
  25440. $1=$2;
  25441. };
  25442. return $1;
  25443. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25444. }, function($ctx1) {$ctx1.fill(self,"transport",{},$globals.Package)});
  25445. //>>excludeEnd("ctx");
  25446. },
  25447. //>>excludeStart("ide", pragmas.excludeIdeData);
  25448. args: [],
  25449. source: "transport\x0a\x09^ transport ifNil: [ \x0a\x09\x09transport := (PackageTransport fromJson: self basicTransport)\x0a\x09\x09\x09package: self;\x0a\x09\x09\x09yourself ]",
  25450. referencedClasses: ["PackageTransport"],
  25451. //>>excludeEnd("ide");
  25452. messageSends: ["ifNil:", "package:", "fromJson:", "basicTransport", "yourself"]
  25453. }),
  25454. $globals.Package);
  25455. $core.addMethod(
  25456. $core.method({
  25457. selector: "transport:",
  25458. protocol: 'accessing',
  25459. fn: function (aPackageTransport){
  25460. var self=this;
  25461. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25462. return $core.withContext(function($ctx1) {
  25463. //>>excludeEnd("ctx");
  25464. self["@transport"]=aPackageTransport;
  25465. $recv(aPackageTransport)._package_(self);
  25466. return self;
  25467. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25468. }, function($ctx1) {$ctx1.fill(self,"transport:",{aPackageTransport:aPackageTransport},$globals.Package)});
  25469. //>>excludeEnd("ctx");
  25470. },
  25471. //>>excludeStart("ide", pragmas.excludeIdeData);
  25472. args: ["aPackageTransport"],
  25473. source: "transport: aPackageTransport\x0a\x09transport := aPackageTransport.\x0a\x09aPackageTransport package: self",
  25474. referencedClasses: [],
  25475. //>>excludeEnd("ide");
  25476. messageSends: ["package:"]
  25477. }),
  25478. $globals.Package);
  25479. $globals.Package.klass.iVarNames = ['defaultCommitPathJs','defaultCommitPathSt'];
  25480. $core.addMethod(
  25481. $core.method({
  25482. selector: "named:",
  25483. protocol: 'accessing',
  25484. fn: function (aPackageName){
  25485. var self=this;
  25486. function $Smalltalk(){return $globals.Smalltalk||(typeof Smalltalk=="undefined"?nil:Smalltalk)}
  25487. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25488. return $core.withContext(function($ctx1) {
  25489. //>>excludeEnd("ctx");
  25490. var $1;
  25491. $1=$recv($Smalltalk())._packageAt_ifAbsent_(aPackageName,(function(){
  25492. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25493. return $core.withContext(function($ctx2) {
  25494. //>>excludeEnd("ctx");
  25495. return $recv($Smalltalk())._createPackage_(aPackageName);
  25496. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25497. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  25498. //>>excludeEnd("ctx");
  25499. }));
  25500. return $1;
  25501. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25502. }, function($ctx1) {$ctx1.fill(self,"named:",{aPackageName:aPackageName},$globals.Package.klass)});
  25503. //>>excludeEnd("ctx");
  25504. },
  25505. //>>excludeStart("ide", pragmas.excludeIdeData);
  25506. args: ["aPackageName"],
  25507. source: "named: aPackageName\x0a\x09^ Smalltalk \x0a\x09\x09packageAt: aPackageName\x0a\x09\x09ifAbsent: [ \x0a\x09\x09\x09Smalltalk createPackage: aPackageName ]",
  25508. referencedClasses: ["Smalltalk"],
  25509. //>>excludeEnd("ide");
  25510. messageSends: ["packageAt:ifAbsent:", "createPackage:"]
  25511. }),
  25512. $globals.Package.klass);
  25513. $core.addMethod(
  25514. $core.method({
  25515. selector: "named:ifAbsent:",
  25516. protocol: 'accessing',
  25517. fn: function (aPackageName,aBlock){
  25518. var self=this;
  25519. function $Smalltalk(){return $globals.Smalltalk||(typeof Smalltalk=="undefined"?nil:Smalltalk)}
  25520. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25521. return $core.withContext(function($ctx1) {
  25522. //>>excludeEnd("ctx");
  25523. var $1;
  25524. $1=$recv($Smalltalk())._packageAt_ifAbsent_(aPackageName,aBlock);
  25525. return $1;
  25526. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25527. }, function($ctx1) {$ctx1.fill(self,"named:ifAbsent:",{aPackageName:aPackageName,aBlock:aBlock},$globals.Package.klass)});
  25528. //>>excludeEnd("ctx");
  25529. },
  25530. //>>excludeStart("ide", pragmas.excludeIdeData);
  25531. args: ["aPackageName", "aBlock"],
  25532. source: "named: aPackageName ifAbsent: aBlock\x0a\x09^ Smalltalk packageAt: aPackageName ifAbsent: aBlock",
  25533. referencedClasses: ["Smalltalk"],
  25534. //>>excludeEnd("ide");
  25535. messageSends: ["packageAt:ifAbsent:"]
  25536. }),
  25537. $globals.Package.klass);
  25538. $core.addMethod(
  25539. $core.method({
  25540. selector: "named:transport:",
  25541. protocol: 'accessing',
  25542. fn: function (aPackageName,aTransport){
  25543. var self=this;
  25544. var package_;
  25545. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25546. return $core.withContext(function($ctx1) {
  25547. //>>excludeEnd("ctx");
  25548. var $1;
  25549. package_=self._named_(aPackageName);
  25550. $recv(package_)._transport_(aTransport);
  25551. $1=package_;
  25552. return $1;
  25553. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25554. }, function($ctx1) {$ctx1.fill(self,"named:transport:",{aPackageName:aPackageName,aTransport:aTransport,package_:package_},$globals.Package.klass)});
  25555. //>>excludeEnd("ctx");
  25556. },
  25557. //>>excludeStart("ide", pragmas.excludeIdeData);
  25558. args: ["aPackageName", "aTransport"],
  25559. source: "named: aPackageName transport: aTransport\x0a\x09| package |\x0a\x09\x0a\x09package := self named: aPackageName.\x0a\x09package transport: aTransport.\x0a\x09\x0a\x09^ package",
  25560. referencedClasses: [],
  25561. //>>excludeEnd("ide");
  25562. messageSends: ["named:", "transport:"]
  25563. }),
  25564. $globals.Package.klass);
  25565. $core.addMethod(
  25566. $core.method({
  25567. selector: "sortedClasses:",
  25568. protocol: 'sorting',
  25569. fn: function (classes){
  25570. var self=this;
  25571. var children,others,nodes,expandedClasses;
  25572. function $ClassSorterNode(){return $globals.ClassSorterNode||(typeof ClassSorterNode=="undefined"?nil:ClassSorterNode)}
  25573. function $Array(){return $globals.Array||(typeof Array=="undefined"?nil:Array)}
  25574. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25575. return $core.withContext(function($ctx1) {
  25576. //>>excludeEnd("ctx");
  25577. var $1,$3,$2,$4;
  25578. children=[];
  25579. others=[];
  25580. $recv(classes)._do_((function(each){
  25581. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25582. return $core.withContext(function($ctx2) {
  25583. //>>excludeEnd("ctx");
  25584. $1=$recv(classes)._includes_($recv(each)._superclass());
  25585. if($core.assert($1)){
  25586. return $recv(others)._add_(each);
  25587. } else {
  25588. return $recv(children)._add_(each);
  25589. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25590. $ctx2.sendIdx["add:"]=1;
  25591. //>>excludeEnd("ctx");
  25592. };
  25593. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25594. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  25595. //>>excludeEnd("ctx");
  25596. }));
  25597. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25598. $ctx1.sendIdx["do:"]=1;
  25599. //>>excludeEnd("ctx");
  25600. nodes=$recv(children)._collect_((function(each){
  25601. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25602. return $core.withContext(function($ctx2) {
  25603. //>>excludeEnd("ctx");
  25604. return $recv($ClassSorterNode())._on_classes_level_(each,others,(0));
  25605. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25606. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,4)});
  25607. //>>excludeEnd("ctx");
  25608. }));
  25609. nodes=$recv(nodes)._sorted_((function(a,b){
  25610. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25611. return $core.withContext(function($ctx2) {
  25612. //>>excludeEnd("ctx");
  25613. $3=$recv(a)._theClass();
  25614. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25615. $ctx2.sendIdx["theClass"]=1;
  25616. //>>excludeEnd("ctx");
  25617. $2=$recv($3)._name();
  25618. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25619. $ctx2.sendIdx["name"]=1;
  25620. //>>excludeEnd("ctx");
  25621. return $recv($2).__lt_eq($recv($recv(b)._theClass())._name());
  25622. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25623. }, function($ctx2) {$ctx2.fillBlock({a:a,b:b},$ctx1,5)});
  25624. //>>excludeEnd("ctx");
  25625. }));
  25626. expandedClasses=$recv($Array())._new();
  25627. $recv(nodes)._do_((function(aNode){
  25628. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25629. return $core.withContext(function($ctx2) {
  25630. //>>excludeEnd("ctx");
  25631. return $recv(aNode)._traverseClassesWith_(expandedClasses);
  25632. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25633. }, function($ctx2) {$ctx2.fillBlock({aNode:aNode},$ctx1,6)});
  25634. //>>excludeEnd("ctx");
  25635. }));
  25636. $4=expandedClasses;
  25637. return $4;
  25638. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25639. }, function($ctx1) {$ctx1.fill(self,"sortedClasses:",{classes:classes,children:children,others:others,nodes:nodes,expandedClasses:expandedClasses},$globals.Package.klass)});
  25640. //>>excludeEnd("ctx");
  25641. },
  25642. //>>excludeStart("ide", pragmas.excludeIdeData);
  25643. args: ["classes"],
  25644. source: "sortedClasses: classes\x0a\x09\x22Answer classes, sorted by superclass/subclasses and by class name for common subclasses (Issue #143)\x22\x0a\x0a\x09| children others nodes expandedClasses |\x0a\x09children := #().\x0a\x09others := #().\x0a\x09classes do: [ :each |\x0a\x09\x09(classes includes: each superclass)\x0a\x09\x09\x09ifFalse: [ children add: each ]\x0a\x09\x09\x09ifTrue: [ others add: each ]].\x0a\x09nodes := children collect: [ :each |\x0a\x09\x09ClassSorterNode on: each classes: others level: 0 ].\x0a\x09nodes := nodes sorted: [ :a :b | a theClass name <= b theClass name ].\x0a\x09expandedClasses := Array new.\x0a\x09nodes do: [ :aNode |\x0a\x09\x09aNode traverseClassesWith: expandedClasses ].\x0a\x09^ expandedClasses",
  25645. referencedClasses: ["ClassSorterNode", "Array"],
  25646. //>>excludeEnd("ide");
  25647. messageSends: ["do:", "ifFalse:ifTrue:", "includes:", "superclass", "add:", "collect:", "on:classes:level:", "sorted:", "<=", "name", "theClass", "new", "traverseClassesWith:"]
  25648. }),
  25649. $globals.Package.klass);
  25650. $core.addClass('PackageStateObserver', $globals.Object, [], 'Kernel-Infrastructure');
  25651. //>>excludeStart("ide", pragmas.excludeIdeData);
  25652. $globals.PackageStateObserver.comment="My current instance listens for any changes in the system that might affect the state of a package (being dirty).";
  25653. //>>excludeEnd("ide");
  25654. $core.addMethod(
  25655. $core.method({
  25656. selector: "announcer",
  25657. protocol: 'accessing',
  25658. fn: function (){
  25659. var self=this;
  25660. function $SystemAnnouncer(){return $globals.SystemAnnouncer||(typeof SystemAnnouncer=="undefined"?nil:SystemAnnouncer)}
  25661. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25662. return $core.withContext(function($ctx1) {
  25663. //>>excludeEnd("ctx");
  25664. var $1;
  25665. $1=$recv($SystemAnnouncer())._current();
  25666. return $1;
  25667. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25668. }, function($ctx1) {$ctx1.fill(self,"announcer",{},$globals.PackageStateObserver)});
  25669. //>>excludeEnd("ctx");
  25670. },
  25671. //>>excludeStart("ide", pragmas.excludeIdeData);
  25672. args: [],
  25673. source: "announcer\x0a\x09^ SystemAnnouncer current",
  25674. referencedClasses: ["SystemAnnouncer"],
  25675. //>>excludeEnd("ide");
  25676. messageSends: ["current"]
  25677. }),
  25678. $globals.PackageStateObserver);
  25679. $core.addMethod(
  25680. $core.method({
  25681. selector: "observeSystem",
  25682. protocol: 'actions',
  25683. fn: function (){
  25684. var self=this;
  25685. function $PackageAdded(){return $globals.PackageAdded||(typeof PackageAdded=="undefined"?nil:PackageAdded)}
  25686. function $ClassAnnouncement(){return $globals.ClassAnnouncement||(typeof ClassAnnouncement=="undefined"?nil:ClassAnnouncement)}
  25687. function $MethodAnnouncement(){return $globals.MethodAnnouncement||(typeof MethodAnnouncement=="undefined"?nil:MethodAnnouncement)}
  25688. function $ProtocolAnnouncement(){return $globals.ProtocolAnnouncement||(typeof ProtocolAnnouncement=="undefined"?nil:ProtocolAnnouncement)}
  25689. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25690. return $core.withContext(function($ctx1) {
  25691. //>>excludeEnd("ctx");
  25692. var $1,$2;
  25693. $1=self._announcer();
  25694. $recv($1)._on_send_to_($PackageAdded(),"onPackageAdded:",self);
  25695. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25696. $ctx1.sendIdx["on:send:to:"]=1;
  25697. //>>excludeEnd("ctx");
  25698. $recv($1)._on_send_to_($ClassAnnouncement(),"onClassModification:",self);
  25699. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25700. $ctx1.sendIdx["on:send:to:"]=2;
  25701. //>>excludeEnd("ctx");
  25702. $recv($1)._on_send_to_($MethodAnnouncement(),"onMethodModification:",self);
  25703. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25704. $ctx1.sendIdx["on:send:to:"]=3;
  25705. //>>excludeEnd("ctx");
  25706. $2=$recv($1)._on_send_to_($ProtocolAnnouncement(),"onProtocolModification:",self);
  25707. return self;
  25708. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25709. }, function($ctx1) {$ctx1.fill(self,"observeSystem",{},$globals.PackageStateObserver)});
  25710. //>>excludeEnd("ctx");
  25711. },
  25712. //>>excludeStart("ide", pragmas.excludeIdeData);
  25713. args: [],
  25714. 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;\x0a\x09\x09\x0a\x09\x09on: ProtocolAnnouncement\x0a\x09\x09send: #onProtocolModification:\x0a\x09\x09to: self",
  25715. referencedClasses: ["PackageAdded", "ClassAnnouncement", "MethodAnnouncement", "ProtocolAnnouncement"],
  25716. //>>excludeEnd("ide");
  25717. messageSends: ["on:send:to:", "announcer"]
  25718. }),
  25719. $globals.PackageStateObserver);
  25720. $core.addMethod(
  25721. $core.method({
  25722. selector: "onClassModification:",
  25723. protocol: 'reactions',
  25724. fn: function (anAnnouncement){
  25725. var self=this;
  25726. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25727. return $core.withContext(function($ctx1) {
  25728. //>>excludeEnd("ctx");
  25729. var $1,$receiver;
  25730. $1=$recv(anAnnouncement)._theClass();
  25731. if(($receiver = $1) == null || $receiver.isNil){
  25732. $1;
  25733. } else {
  25734. var theClass;
  25735. theClass=$receiver;
  25736. $recv($recv(theClass)._package())._beDirty();
  25737. };
  25738. return self;
  25739. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25740. }, function($ctx1) {$ctx1.fill(self,"onClassModification:",{anAnnouncement:anAnnouncement},$globals.PackageStateObserver)});
  25741. //>>excludeEnd("ctx");
  25742. },
  25743. //>>excludeStart("ide", pragmas.excludeIdeData);
  25744. args: ["anAnnouncement"],
  25745. source: "onClassModification: anAnnouncement\x0a\x09anAnnouncement theClass ifNotNil: [ :theClass | theClass package beDirty ]",
  25746. referencedClasses: [],
  25747. //>>excludeEnd("ide");
  25748. messageSends: ["ifNotNil:", "theClass", "beDirty", "package"]
  25749. }),
  25750. $globals.PackageStateObserver);
  25751. $core.addMethod(
  25752. $core.method({
  25753. selector: "onMethodModification:",
  25754. protocol: 'reactions',
  25755. fn: function (anAnnouncement){
  25756. var self=this;
  25757. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25758. return $core.withContext(function($ctx1) {
  25759. //>>excludeEnd("ctx");
  25760. var $1,$receiver;
  25761. $1=$recv($recv(anAnnouncement)._method())._package();
  25762. if(($receiver = $1) == null || $receiver.isNil){
  25763. $1;
  25764. } else {
  25765. var package_;
  25766. package_=$receiver;
  25767. $recv(package_)._beDirty();
  25768. };
  25769. return self;
  25770. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25771. }, function($ctx1) {$ctx1.fill(self,"onMethodModification:",{anAnnouncement:anAnnouncement},$globals.PackageStateObserver)});
  25772. //>>excludeEnd("ctx");
  25773. },
  25774. //>>excludeStart("ide", pragmas.excludeIdeData);
  25775. args: ["anAnnouncement"],
  25776. source: "onMethodModification: anAnnouncement\x0a\x09anAnnouncement method package ifNotNil: [ :package | package beDirty ]",
  25777. referencedClasses: [],
  25778. //>>excludeEnd("ide");
  25779. messageSends: ["ifNotNil:", "package", "method", "beDirty"]
  25780. }),
  25781. $globals.PackageStateObserver);
  25782. $core.addMethod(
  25783. $core.method({
  25784. selector: "onPackageAdded:",
  25785. protocol: 'reactions',
  25786. fn: function (anAnnouncement){
  25787. var self=this;
  25788. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25789. return $core.withContext(function($ctx1) {
  25790. //>>excludeEnd("ctx");
  25791. $recv($recv(anAnnouncement)._package())._beDirty();
  25792. return self;
  25793. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25794. }, function($ctx1) {$ctx1.fill(self,"onPackageAdded:",{anAnnouncement:anAnnouncement},$globals.PackageStateObserver)});
  25795. //>>excludeEnd("ctx");
  25796. },
  25797. //>>excludeStart("ide", pragmas.excludeIdeData);
  25798. args: ["anAnnouncement"],
  25799. source: "onPackageAdded: anAnnouncement\x0a\x09anAnnouncement package beDirty",
  25800. referencedClasses: [],
  25801. //>>excludeEnd("ide");
  25802. messageSends: ["beDirty", "package"]
  25803. }),
  25804. $globals.PackageStateObserver);
  25805. $core.addMethod(
  25806. $core.method({
  25807. selector: "onProtocolModification:",
  25808. protocol: 'reactions',
  25809. fn: function (anAnnouncement){
  25810. var self=this;
  25811. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25812. return $core.withContext(function($ctx1) {
  25813. //>>excludeEnd("ctx");
  25814. var $1,$receiver;
  25815. $1=$recv(anAnnouncement)._package();
  25816. if(($receiver = $1) == null || $receiver.isNil){
  25817. $1;
  25818. } else {
  25819. var package_;
  25820. package_=$receiver;
  25821. $recv(package_)._beDirty();
  25822. };
  25823. return self;
  25824. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25825. }, function($ctx1) {$ctx1.fill(self,"onProtocolModification:",{anAnnouncement:anAnnouncement},$globals.PackageStateObserver)});
  25826. //>>excludeEnd("ctx");
  25827. },
  25828. //>>excludeStart("ide", pragmas.excludeIdeData);
  25829. args: ["anAnnouncement"],
  25830. source: "onProtocolModification: anAnnouncement\x0a\x09anAnnouncement package ifNotNil: [ :package | package beDirty ]",
  25831. referencedClasses: [],
  25832. //>>excludeEnd("ide");
  25833. messageSends: ["ifNotNil:", "package", "beDirty"]
  25834. }),
  25835. $globals.PackageStateObserver);
  25836. $globals.PackageStateObserver.klass.iVarNames = ['current'];
  25837. $core.addMethod(
  25838. $core.method({
  25839. selector: "current",
  25840. protocol: 'accessing',
  25841. fn: function (){
  25842. var self=this;
  25843. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25844. return $core.withContext(function($ctx1) {
  25845. //>>excludeEnd("ctx");
  25846. var $2,$1,$receiver;
  25847. $2=self["@current"];
  25848. if(($receiver = $2) == null || $receiver.isNil){
  25849. self["@current"]=self._new();
  25850. $1=self["@current"];
  25851. } else {
  25852. $1=$2;
  25853. };
  25854. return $1;
  25855. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25856. }, function($ctx1) {$ctx1.fill(self,"current",{},$globals.PackageStateObserver.klass)});
  25857. //>>excludeEnd("ctx");
  25858. },
  25859. //>>excludeStart("ide", pragmas.excludeIdeData);
  25860. args: [],
  25861. source: "current\x0a\x09^ current ifNil: [ current := self new ]",
  25862. referencedClasses: [],
  25863. //>>excludeEnd("ide");
  25864. messageSends: ["ifNil:", "new"]
  25865. }),
  25866. $globals.PackageStateObserver.klass);
  25867. $core.addMethod(
  25868. $core.method({
  25869. selector: "initialize",
  25870. protocol: 'initialization',
  25871. fn: function (){
  25872. var self=this;
  25873. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25874. return $core.withContext(function($ctx1) {
  25875. //>>excludeEnd("ctx");
  25876. $recv(self._current())._observeSystem();
  25877. return self;
  25878. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25879. }, function($ctx1) {$ctx1.fill(self,"initialize",{},$globals.PackageStateObserver.klass)});
  25880. //>>excludeEnd("ctx");
  25881. },
  25882. //>>excludeStart("ide", pragmas.excludeIdeData);
  25883. args: [],
  25884. source: "initialize\x0a\x09self current observeSystem",
  25885. referencedClasses: [],
  25886. //>>excludeEnd("ide");
  25887. messageSends: ["observeSystem", "current"]
  25888. }),
  25889. $globals.PackageStateObserver.klass);
  25890. $core.addClass('PlatformInterface', $globals.Object, [], 'Kernel-Infrastructure');
  25891. //>>excludeStart("ide", pragmas.excludeIdeData);
  25892. $globals.PlatformInterface.comment="I am single entry point to UI and environment interface.\x0aMy `initialize` tries several options (for now, browser environment only) to set myself up.\x0a\x0a## API\x0a\x0a PlatformInterface alert: 'Hey, there is a problem'.\x0a PlatformInterface confirm: 'Affirmative?'.\x0a PlatformInterface prompt: 'Your name:'.\x0a\x0a PlatformInterface ajax: #{\x0a 'url' -> '/patch.js'. 'type' -> 'GET'. dataType->'script'\x0a }.";
  25893. //>>excludeEnd("ide");
  25894. $globals.PlatformInterface.klass.iVarNames = ['worker'];
  25895. $core.addMethod(
  25896. $core.method({
  25897. selector: "ajax:",
  25898. protocol: 'actions',
  25899. fn: function (anObject){
  25900. var self=this;
  25901. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25902. return $core.withContext(function($ctx1) {
  25903. //>>excludeEnd("ctx");
  25904. var $2,$1,$receiver;
  25905. $2=self["@worker"];
  25906. if(($receiver = $2) == null || $receiver.isNil){
  25907. $1=self._error_("ajax: not available");
  25908. } else {
  25909. $1=$recv(self["@worker"])._ajax_(anObject);
  25910. };
  25911. return $1;
  25912. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25913. }, function($ctx1) {$ctx1.fill(self,"ajax:",{anObject:anObject},$globals.PlatformInterface.klass)});
  25914. //>>excludeEnd("ctx");
  25915. },
  25916. //>>excludeStart("ide", pragmas.excludeIdeData);
  25917. args: ["anObject"],
  25918. source: "ajax: anObject\x0a\x09^ worker\x0a\x09\x09ifNotNil: [ worker ajax: anObject ]\x0a\x09\x09ifNil: [ self error: 'ajax: not available' ]",
  25919. referencedClasses: [],
  25920. //>>excludeEnd("ide");
  25921. messageSends: ["ifNotNil:ifNil:", "ajax:", "error:"]
  25922. }),
  25923. $globals.PlatformInterface.klass);
  25924. $core.addMethod(
  25925. $core.method({
  25926. selector: "alert:",
  25927. protocol: 'actions',
  25928. fn: function (aString){
  25929. var self=this;
  25930. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25931. return $core.withContext(function($ctx1) {
  25932. //>>excludeEnd("ctx");
  25933. var $2,$1,$receiver;
  25934. $2=self["@worker"];
  25935. if(($receiver = $2) == null || $receiver.isNil){
  25936. $1=self._error_("alert: not available");
  25937. } else {
  25938. $1=$recv(self["@worker"])._alert_(aString);
  25939. };
  25940. return $1;
  25941. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25942. }, function($ctx1) {$ctx1.fill(self,"alert:",{aString:aString},$globals.PlatformInterface.klass)});
  25943. //>>excludeEnd("ctx");
  25944. },
  25945. //>>excludeStart("ide", pragmas.excludeIdeData);
  25946. args: ["aString"],
  25947. source: "alert: aString\x0a\x09^ worker\x0a\x09\x09ifNotNil: [ worker alert: aString ]\x0a\x09\x09ifNil: [ self error: 'alert: not available' ]",
  25948. referencedClasses: [],
  25949. //>>excludeEnd("ide");
  25950. messageSends: ["ifNotNil:ifNil:", "alert:", "error:"]
  25951. }),
  25952. $globals.PlatformInterface.klass);
  25953. $core.addMethod(
  25954. $core.method({
  25955. selector: "confirm:",
  25956. protocol: 'actions',
  25957. fn: function (aString){
  25958. var self=this;
  25959. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25960. return $core.withContext(function($ctx1) {
  25961. //>>excludeEnd("ctx");
  25962. var $2,$1,$receiver;
  25963. $2=self["@worker"];
  25964. if(($receiver = $2) == null || $receiver.isNil){
  25965. $1=self._error_("confirm: not available");
  25966. } else {
  25967. $1=$recv(self["@worker"])._confirm_(aString);
  25968. };
  25969. return $1;
  25970. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25971. }, function($ctx1) {$ctx1.fill(self,"confirm:",{aString:aString},$globals.PlatformInterface.klass)});
  25972. //>>excludeEnd("ctx");
  25973. },
  25974. //>>excludeStart("ide", pragmas.excludeIdeData);
  25975. args: ["aString"],
  25976. source: "confirm: aString\x0a\x09^ worker\x0a\x09\x09ifNotNil: [ worker confirm: aString ]\x0a\x09\x09ifNil: [ self error: 'confirm: not available' ]",
  25977. referencedClasses: [],
  25978. //>>excludeEnd("ide");
  25979. messageSends: ["ifNotNil:ifNil:", "confirm:", "error:"]
  25980. }),
  25981. $globals.PlatformInterface.klass);
  25982. $core.addMethod(
  25983. $core.method({
  25984. selector: "existsGlobal:",
  25985. protocol: 'actions',
  25986. fn: function (aString){
  25987. var self=this;
  25988. function $PlatformInterface(){return $globals.PlatformInterface||(typeof PlatformInterface=="undefined"?nil:PlatformInterface)}
  25989. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  25990. return $core.withContext(function($ctx1) {
  25991. //>>excludeEnd("ctx");
  25992. var $1;
  25993. $1=$recv($recv($PlatformInterface())._globals())._at_ifPresent_ifAbsent_(aString,(function(){
  25994. return true;
  25995. }),(function(){
  25996. return false;
  25997. }));
  25998. return $1;
  25999. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  26000. }, function($ctx1) {$ctx1.fill(self,"existsGlobal:",{aString:aString},$globals.PlatformInterface.klass)});
  26001. //>>excludeEnd("ctx");
  26002. },
  26003. //>>excludeStart("ide", pragmas.excludeIdeData);
  26004. args: ["aString"],
  26005. source: "existsGlobal: aString\x0a\x09^ PlatformInterface globals \x0a\x09\x09at: aString \x0a\x09\x09ifPresent: [ true ] \x0a\x09\x09ifAbsent: [ false ]",
  26006. referencedClasses: ["PlatformInterface"],
  26007. //>>excludeEnd("ide");
  26008. messageSends: ["at:ifPresent:ifAbsent:", "globals"]
  26009. }),
  26010. $globals.PlatformInterface.klass);
  26011. $core.addMethod(
  26012. $core.method({
  26013. selector: "globals",
  26014. protocol: 'accessing',
  26015. fn: function (){
  26016. var self=this;
  26017. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  26018. return $core.withContext(function($ctx1) {
  26019. //>>excludeEnd("ctx");
  26020. return (new Function('return this'))();;
  26021. return self;
  26022. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  26023. }, function($ctx1) {$ctx1.fill(self,"globals",{},$globals.PlatformInterface.klass)});
  26024. //>>excludeEnd("ctx");
  26025. },
  26026. //>>excludeStart("ide", pragmas.excludeIdeData);
  26027. args: [],
  26028. source: "globals\x0a\x09<return (new Function('return this'))();>",
  26029. referencedClasses: [],
  26030. //>>excludeEnd("ide");
  26031. messageSends: []
  26032. }),
  26033. $globals.PlatformInterface.klass);
  26034. $core.addMethod(
  26035. $core.method({
  26036. selector: "initialize",
  26037. protocol: 'initialization',
  26038. fn: function (){
  26039. var self=this;
  26040. var candidate;
  26041. function $BrowserInterface(){return $globals.BrowserInterface||(typeof BrowserInterface=="undefined"?nil:BrowserInterface)}
  26042. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  26043. return $core.withContext(function($ctx1) {
  26044. //>>excludeEnd("ctx");
  26045. var $1,$receiver;
  26046. (
  26047. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  26048. $ctx1.supercall = true,
  26049. //>>excludeEnd("ctx");
  26050. $globals.PlatformInterface.klass.superclass.fn.prototype._initialize.apply($recv(self), []));
  26051. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  26052. $ctx1.supercall = false;
  26053. //>>excludeEnd("ctx");;
  26054. if(($receiver = $BrowserInterface()) == null || $receiver.isNil){
  26055. $BrowserInterface();
  26056. } else {
  26057. candidate=$recv($BrowserInterface())._new();
  26058. candidate;
  26059. $1=$recv(candidate)._isAvailable();
  26060. if($core.assert($1)){
  26061. self._setWorker_(candidate);
  26062. return self;
  26063. };
  26064. };
  26065. return self;
  26066. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  26067. }, function($ctx1) {$ctx1.fill(self,"initialize",{candidate:candidate},$globals.PlatformInterface.klass)});
  26068. //>>excludeEnd("ctx");
  26069. },
  26070. //>>excludeStart("ide", pragmas.excludeIdeData);
  26071. args: [],
  26072. source: "initialize\x0a\x09| candidate |\x0a\x09\x0a\x09super initialize.\x0a\x09\x0a\x09BrowserInterface ifNotNil: [\x0a\x09\x09candidate := BrowserInterface new.\x0a\x09\x09candidate isAvailable ifTrue: [ self setWorker: candidate. ^ self ]\x0a\x09]",
  26073. referencedClasses: ["BrowserInterface"],
  26074. //>>excludeEnd("ide");
  26075. messageSends: ["initialize", "ifNotNil:", "new", "ifTrue:", "isAvailable", "setWorker:"]
  26076. }),
  26077. $globals.PlatformInterface.klass);
  26078. $core.addMethod(
  26079. $core.method({
  26080. selector: "prompt:",
  26081. protocol: 'actions',
  26082. fn: function (aString){
  26083. var self=this;
  26084. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  26085. return $core.withContext(function($ctx1) {
  26086. //>>excludeEnd("ctx");
  26087. var $2,$1,$receiver;
  26088. $2=self["@worker"];
  26089. if(($receiver = $2) == null || $receiver.isNil){
  26090. $1=self._error_("prompt: not available");
  26091. } else {
  26092. $1=$recv(self["@worker"])._prompt_(aString);
  26093. };
  26094. return $1;
  26095. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  26096. }, function($ctx1) {$ctx1.fill(self,"prompt:",{aString:aString},$globals.PlatformInterface.klass)});
  26097. //>>excludeEnd("ctx");
  26098. },
  26099. //>>excludeStart("ide", pragmas.excludeIdeData);
  26100. args: ["aString"],
  26101. source: "prompt: aString\x0a\x09^ worker\x0a\x09\x09ifNotNil: [ worker prompt: aString ]\x0a\x09\x09ifNil: [ self error: 'prompt: not available' ]",
  26102. referencedClasses: [],
  26103. //>>excludeEnd("ide");
  26104. messageSends: ["ifNotNil:ifNil:", "prompt:", "error:"]
  26105. }),
  26106. $globals.PlatformInterface.klass);
  26107. $core.addMethod(
  26108. $core.method({
  26109. selector: "prompt:default:",
  26110. protocol: 'actions',
  26111. fn: function (aString,defaultString){
  26112. var self=this;
  26113. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  26114. return $core.withContext(function($ctx1) {
  26115. //>>excludeEnd("ctx");
  26116. var $2,$1,$receiver;
  26117. $2=self["@worker"];
  26118. if(($receiver = $2) == null || $receiver.isNil){
  26119. $1=self._error_("prompt: not available");
  26120. } else {
  26121. $1=$recv(self["@worker"])._prompt_default_(aString,defaultString);
  26122. };
  26123. return $1;
  26124. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  26125. }, function($ctx1) {$ctx1.fill(self,"prompt:default:",{aString:aString,defaultString:defaultString},$globals.PlatformInterface.klass)});
  26126. //>>excludeEnd("ctx");
  26127. },
  26128. //>>excludeStart("ide", pragmas.excludeIdeData);
  26129. args: ["aString", "defaultString"],
  26130. source: "prompt: aString default: defaultString\x0a\x09^ worker\x0a\x09\x09ifNotNil: [ worker prompt: aString default: defaultString ]\x0a\x09\x09ifNil: [ self error: 'prompt: not available' ]",
  26131. referencedClasses: [],
  26132. //>>excludeEnd("ide");
  26133. messageSends: ["ifNotNil:ifNil:", "prompt:default:", "error:"]
  26134. }),
  26135. $globals.PlatformInterface.klass);
  26136. $core.addMethod(
  26137. $core.method({
  26138. selector: "setWorker:",
  26139. protocol: 'accessing',
  26140. fn: function (anObject){
  26141. var self=this;
  26142. self["@worker"]=anObject;
  26143. return self;
  26144. },
  26145. //>>excludeStart("ide", pragmas.excludeIdeData);
  26146. args: ["anObject"],
  26147. source: "setWorker: anObject\x0a\x09worker := anObject",
  26148. referencedClasses: [],
  26149. //>>excludeEnd("ide");
  26150. messageSends: []
  26151. }),
  26152. $globals.PlatformInterface.klass);
  26153. $core.addClass('Service', $globals.Object, [], 'Kernel-Infrastructure');
  26154. //>>excludeStart("ide", pragmas.excludeIdeData);
  26155. $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.";
  26156. //>>excludeEnd("ide");
  26157. $globals.Service.klass.iVarNames = ['current'];
  26158. $core.addMethod(
  26159. $core.method({
  26160. selector: "current",
  26161. protocol: 'accessing',
  26162. fn: function (){
  26163. var self=this;
  26164. var $1;
  26165. $1=self["@current"];
  26166. return $1;
  26167. },
  26168. //>>excludeStart("ide", pragmas.excludeIdeData);
  26169. args: [],
  26170. source: "current\x0a\x09^ current",
  26171. referencedClasses: [],
  26172. //>>excludeEnd("ide");
  26173. messageSends: []
  26174. }),
  26175. $globals.Service.klass);
  26176. $core.addMethod(
  26177. $core.method({
  26178. selector: "new",
  26179. protocol: 'instance creation',
  26180. fn: function (){
  26181. var self=this;
  26182. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  26183. return $core.withContext(function($ctx1) {
  26184. //>>excludeEnd("ctx");
  26185. self._shouldNotImplement();
  26186. return self;
  26187. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  26188. }, function($ctx1) {$ctx1.fill(self,"new",{},$globals.Service.klass)});
  26189. //>>excludeEnd("ctx");
  26190. },
  26191. //>>excludeStart("ide", pragmas.excludeIdeData);
  26192. args: [],
  26193. source: "new\x0a\x09self shouldNotImplement",
  26194. referencedClasses: [],
  26195. //>>excludeEnd("ide");
  26196. messageSends: ["shouldNotImplement"]
  26197. }),
  26198. $globals.Service.klass);
  26199. $core.addMethod(
  26200. $core.method({
  26201. selector: "register:",
  26202. protocol: 'registration',
  26203. fn: function (anObject){
  26204. var self=this;
  26205. self["@current"]=anObject;
  26206. return self;
  26207. },
  26208. //>>excludeStart("ide", pragmas.excludeIdeData);
  26209. args: ["anObject"],
  26210. source: "register: anObject\x0a\x09current := anObject",
  26211. referencedClasses: [],
  26212. //>>excludeEnd("ide");
  26213. messageSends: []
  26214. }),
  26215. $globals.Service.klass);
  26216. $core.addMethod(
  26217. $core.method({
  26218. selector: "registerIfNone:",
  26219. protocol: 'registration',
  26220. fn: function (anObject){
  26221. var self=this;
  26222. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  26223. return $core.withContext(function($ctx1) {
  26224. //>>excludeEnd("ctx");
  26225. var $1,$receiver;
  26226. $1=self._current();
  26227. if(($receiver = $1) == null || $receiver.isNil){
  26228. self._register_(anObject);
  26229. } else {
  26230. $1;
  26231. };
  26232. return self;
  26233. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  26234. }, function($ctx1) {$ctx1.fill(self,"registerIfNone:",{anObject:anObject},$globals.Service.klass)});
  26235. //>>excludeEnd("ctx");
  26236. },
  26237. //>>excludeStart("ide", pragmas.excludeIdeData);
  26238. args: ["anObject"],
  26239. source: "registerIfNone: anObject\x0a\x09self current ifNil: [ self register: anObject ]",
  26240. referencedClasses: [],
  26241. //>>excludeEnd("ide");
  26242. messageSends: ["ifNil:", "current", "register:"]
  26243. }),
  26244. $globals.Service.klass);
  26245. $core.addClass('ErrorHandler', $globals.Service, [], 'Kernel-Infrastructure');
  26246. //>>excludeStart("ide", pragmas.excludeIdeData);
  26247. $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.";
  26248. //>>excludeEnd("ide");
  26249. $core.addMethod(
  26250. $core.method({
  26251. selector: "handleError:",
  26252. protocol: 'error handling',
  26253. fn: function (anError){
  26254. var self=this;
  26255. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  26256. return $core.withContext(function($ctx1) {
  26257. //>>excludeEnd("ctx");
  26258. self._handleUnhandledError_(anError);
  26259. return self;
  26260. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  26261. }, function($ctx1) {$ctx1.fill(self,"handleError:",{anError:anError},$globals.ErrorHandler.klass)});
  26262. //>>excludeEnd("ctx");
  26263. },
  26264. //>>excludeStart("ide", pragmas.excludeIdeData);
  26265. args: ["anError"],
  26266. source: "handleError: anError\x0a\x09self handleUnhandledError: anError",
  26267. referencedClasses: [],
  26268. //>>excludeEnd("ide");
  26269. messageSends: ["handleUnhandledError:"]
  26270. }),
  26271. $globals.ErrorHandler.klass);
  26272. $core.addMethod(
  26273. $core.method({
  26274. selector: "handleUnhandledError:",
  26275. protocol: 'error handling',
  26276. fn: function (anError){
  26277. var self=this;
  26278. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  26279. return $core.withContext(function($ctx1) {
  26280. //>>excludeEnd("ctx");
  26281. var $1,$2;
  26282. $1=$recv(anError)._wasHandled();
  26283. if($core.assert($1)){
  26284. return self;
  26285. };
  26286. $2=$recv(self._current())._handleError_(anError);
  26287. return $2;
  26288. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  26289. }, function($ctx1) {$ctx1.fill(self,"handleUnhandledError:",{anError:anError},$globals.ErrorHandler.klass)});
  26290. //>>excludeEnd("ctx");
  26291. },
  26292. //>>excludeStart("ide", pragmas.excludeIdeData);
  26293. args: ["anError"],
  26294. source: "handleUnhandledError: anError\x0a\x09anError wasHandled ifTrue: [ ^ self ].\x0a\x09\x0a\x09^ self current handleError: anError",
  26295. referencedClasses: [],
  26296. //>>excludeEnd("ide");
  26297. messageSends: ["ifTrue:", "wasHandled", "handleError:", "current"]
  26298. }),
  26299. $globals.ErrorHandler.klass);
  26300. $core.addClass('Finder', $globals.Service, [], 'Kernel-Infrastructure');
  26301. //>>excludeStart("ide", pragmas.excludeIdeData);
  26302. $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.";
  26303. //>>excludeEnd("ide");
  26304. $core.addMethod(
  26305. $core.method({
  26306. selector: "findClass:",
  26307. protocol: 'finding',
  26308. fn: function (aClass){
  26309. var self=this;
  26310. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  26311. return $core.withContext(function($ctx1) {
  26312. //>>excludeEnd("ctx");
  26313. var $1;
  26314. $1=$recv(self._current())._findClass_(aClass);
  26315. return $1;
  26316. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  26317. }, function($ctx1) {$ctx1.fill(self,"findClass:",{aClass:aClass},$globals.Finder.klass)});
  26318. //>>excludeEnd("ctx");
  26319. },
  26320. //>>excludeStart("ide", pragmas.excludeIdeData);
  26321. args: ["aClass"],
  26322. source: "findClass: aClass\x0a\x09^ self current findClass: aClass",
  26323. referencedClasses: [],
  26324. //>>excludeEnd("ide");
  26325. messageSends: ["findClass:", "current"]
  26326. }),
  26327. $globals.Finder.klass);
  26328. $core.addMethod(
  26329. $core.method({
  26330. selector: "findMethod:",
  26331. protocol: 'finding',
  26332. fn: function (aCompiledMethod){
  26333. var self=this;
  26334. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  26335. return $core.withContext(function($ctx1) {
  26336. //>>excludeEnd("ctx");
  26337. var $1;
  26338. $1=$recv(self._current())._findMethod_(aCompiledMethod);
  26339. return $1;
  26340. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  26341. }, function($ctx1) {$ctx1.fill(self,"findMethod:",{aCompiledMethod:aCompiledMethod},$globals.Finder.klass)});
  26342. //>>excludeEnd("ctx");
  26343. },
  26344. //>>excludeStart("ide", pragmas.excludeIdeData);
  26345. args: ["aCompiledMethod"],
  26346. source: "findMethod: aCompiledMethod\x0a\x09^ self current findMethod: aCompiledMethod",
  26347. referencedClasses: [],
  26348. //>>excludeEnd("ide");
  26349. messageSends: ["findMethod:", "current"]
  26350. }),
  26351. $globals.Finder.klass);
  26352. $core.addMethod(
  26353. $core.method({
  26354. selector: "findString:",
  26355. protocol: 'finding',
  26356. fn: function (aString){
  26357. var self=this;
  26358. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  26359. return $core.withContext(function($ctx1) {
  26360. //>>excludeEnd("ctx");
  26361. var $1;
  26362. $1=$recv(self._current())._findString_(aString);
  26363. return $1;
  26364. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  26365. }, function($ctx1) {$ctx1.fill(self,"findString:",{aString:aString},$globals.Finder.klass)});
  26366. //>>excludeEnd("ctx");
  26367. },
  26368. //>>excludeStart("ide", pragmas.excludeIdeData);
  26369. args: ["aString"],
  26370. source: "findString: aString\x0a\x09^ self current findString: aString",
  26371. referencedClasses: [],
  26372. //>>excludeEnd("ide");
  26373. messageSends: ["findString:", "current"]
  26374. }),
  26375. $globals.Finder.klass);
  26376. $core.addClass('Inspector', $globals.Service, [], 'Kernel-Infrastructure');
  26377. //>>excludeStart("ide", pragmas.excludeIdeData);
  26378. $globals.Inspector.comment="I am the service responsible for inspecting objects.\x0a\x0aThe default inspector object is the transcript.";
  26379. //>>excludeEnd("ide");
  26380. $core.addMethod(
  26381. $core.method({
  26382. selector: "inspect:",
  26383. protocol: 'inspecting',
  26384. fn: function (anObject){
  26385. var self=this;
  26386. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  26387. return $core.withContext(function($ctx1) {
  26388. //>>excludeEnd("ctx");
  26389. var $1;
  26390. $1=$recv(self._current())._inspect_(anObject);
  26391. return $1;
  26392. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  26393. }, function($ctx1) {$ctx1.fill(self,"inspect:",{anObject:anObject},$globals.Inspector.klass)});
  26394. //>>excludeEnd("ctx");
  26395. },
  26396. //>>excludeStart("ide", pragmas.excludeIdeData);
  26397. args: ["anObject"],
  26398. source: "inspect: anObject\x0a\x09^ self current inspect: anObject",
  26399. referencedClasses: [],
  26400. //>>excludeEnd("ide");
  26401. messageSends: ["inspect:", "current"]
  26402. }),
  26403. $globals.Inspector.klass);
  26404. $core.addClass('ProgressHandler', $globals.Service, [], 'Kernel-Infrastructure');
  26405. //>>excludeStart("ide", pragmas.excludeIdeData);
  26406. $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`.";
  26407. //>>excludeEnd("ide");
  26408. $core.addMethod(
  26409. $core.method({
  26410. selector: "do:on:displaying:",
  26411. protocol: 'progress handling',
  26412. fn: function (aBlock,aCollection,aString){
  26413. var self=this;
  26414. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  26415. return $core.withContext(function($ctx1) {
  26416. //>>excludeEnd("ctx");
  26417. $recv(self._current())._do_on_displaying_(aBlock,aCollection,aString);
  26418. return self;
  26419. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  26420. }, function($ctx1) {$ctx1.fill(self,"do:on:displaying:",{aBlock:aBlock,aCollection:aCollection,aString:aString},$globals.ProgressHandler.klass)});
  26421. //>>excludeEnd("ctx");
  26422. },
  26423. //>>excludeStart("ide", pragmas.excludeIdeData);
  26424. args: ["aBlock", "aCollection", "aString"],
  26425. source: "do: aBlock on: aCollection displaying: aString\x0a\x09self current do: aBlock on: aCollection displaying: aString",
  26426. referencedClasses: [],
  26427. //>>excludeEnd("ide");
  26428. messageSends: ["do:on:displaying:", "current"]
  26429. }),
  26430. $globals.ProgressHandler.klass);
  26431. $core.addClass('Transcript', $globals.Service, [], 'Kernel-Infrastructure');
  26432. //>>excludeStart("ide", pragmas.excludeIdeData);
  26433. $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.";
  26434. //>>excludeEnd("ide");
  26435. $core.addMethod(
  26436. $core.method({
  26437. selector: "clear",
  26438. protocol: 'printing',
  26439. fn: function (){
  26440. var self=this;
  26441. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  26442. return $core.withContext(function($ctx1) {
  26443. //>>excludeEnd("ctx");
  26444. $recv(self._current())._clear();
  26445. return self;
  26446. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  26447. }, function($ctx1) {$ctx1.fill(self,"clear",{},$globals.Transcript.klass)});
  26448. //>>excludeEnd("ctx");
  26449. },
  26450. //>>excludeStart("ide", pragmas.excludeIdeData);
  26451. args: [],
  26452. source: "clear\x0a\x09self current clear",
  26453. referencedClasses: [],
  26454. //>>excludeEnd("ide");
  26455. messageSends: ["clear", "current"]
  26456. }),
  26457. $globals.Transcript.klass);
  26458. $core.addMethod(
  26459. $core.method({
  26460. selector: "cr",
  26461. protocol: 'printing',
  26462. fn: function (){
  26463. var self=this;
  26464. function $String(){return $globals.String||(typeof String=="undefined"?nil:String)}
  26465. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  26466. return $core.withContext(function($ctx1) {
  26467. //>>excludeEnd("ctx");
  26468. $recv(self._current())._show_($recv($String())._cr());
  26469. return self;
  26470. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  26471. }, function($ctx1) {$ctx1.fill(self,"cr",{},$globals.Transcript.klass)});
  26472. //>>excludeEnd("ctx");
  26473. },
  26474. //>>excludeStart("ide", pragmas.excludeIdeData);
  26475. args: [],
  26476. source: "cr\x0a\x09self current show: String cr",
  26477. referencedClasses: ["String"],
  26478. //>>excludeEnd("ide");
  26479. messageSends: ["show:", "current", "cr"]
  26480. }),
  26481. $globals.Transcript.klass);
  26482. $core.addMethod(
  26483. $core.method({
  26484. selector: "inspect:",
  26485. protocol: 'printing',
  26486. fn: function (anObject){
  26487. var self=this;
  26488. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  26489. return $core.withContext(function($ctx1) {
  26490. //>>excludeEnd("ctx");
  26491. self._show_(anObject);
  26492. return self;
  26493. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  26494. }, function($ctx1) {$ctx1.fill(self,"inspect:",{anObject:anObject},$globals.Transcript.klass)});
  26495. //>>excludeEnd("ctx");
  26496. },
  26497. //>>excludeStart("ide", pragmas.excludeIdeData);
  26498. args: ["anObject"],
  26499. source: "inspect: anObject\x0a\x09self show: anObject",
  26500. referencedClasses: [],
  26501. //>>excludeEnd("ide");
  26502. messageSends: ["show:"]
  26503. }),
  26504. $globals.Transcript.klass);
  26505. $core.addMethod(
  26506. $core.method({
  26507. selector: "open",
  26508. protocol: 'instance creation',
  26509. fn: function (){
  26510. var self=this;
  26511. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  26512. return $core.withContext(function($ctx1) {
  26513. //>>excludeEnd("ctx");
  26514. $recv(self._current())._open();
  26515. return self;
  26516. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  26517. }, function($ctx1) {$ctx1.fill(self,"open",{},$globals.Transcript.klass)});
  26518. //>>excludeEnd("ctx");
  26519. },
  26520. //>>excludeStart("ide", pragmas.excludeIdeData);
  26521. args: [],
  26522. source: "open\x0a\x09self current open",
  26523. referencedClasses: [],
  26524. //>>excludeEnd("ide");
  26525. messageSends: ["open", "current"]
  26526. }),
  26527. $globals.Transcript.klass);
  26528. $core.addMethod(
  26529. $core.method({
  26530. selector: "show:",
  26531. protocol: 'printing',
  26532. fn: function (anObject){
  26533. var self=this;
  26534. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  26535. return $core.withContext(function($ctx1) {
  26536. //>>excludeEnd("ctx");
  26537. $recv(self._current())._show_(anObject);
  26538. return self;
  26539. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  26540. }, function($ctx1) {$ctx1.fill(self,"show:",{anObject:anObject},$globals.Transcript.klass)});
  26541. //>>excludeEnd("ctx");
  26542. },
  26543. //>>excludeStart("ide", pragmas.excludeIdeData);
  26544. args: ["anObject"],
  26545. source: "show: anObject\x0a\x09self current show: anObject",
  26546. referencedClasses: [],
  26547. //>>excludeEnd("ide");
  26548. messageSends: ["show:", "current"]
  26549. }),
  26550. $globals.Transcript.klass);
  26551. $core.addClass('Setting', $globals.Object, ['key', 'value', 'defaultValue'], 'Kernel-Infrastructure');
  26552. //>>excludeStart("ide", pragmas.excludeIdeData);
  26553. $globals.Setting.comment="I represent a setting accessible via `Smalltalk settings`.\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: 'defaultValue'`.";
  26554. //>>excludeEnd("ide");
  26555. $core.addMethod(
  26556. $core.method({
  26557. selector: "defaultValue",
  26558. protocol: 'accessing',
  26559. fn: function (){
  26560. var self=this;
  26561. var $1;
  26562. $1=self["@defaultValue"];
  26563. return $1;
  26564. },
  26565. //>>excludeStart("ide", pragmas.excludeIdeData);
  26566. args: [],
  26567. source: "defaultValue\x0a\x09^ defaultValue",
  26568. referencedClasses: [],
  26569. //>>excludeEnd("ide");
  26570. messageSends: []
  26571. }),
  26572. $globals.Setting);
  26573. $core.addMethod(
  26574. $core.method({
  26575. selector: "defaultValue:",
  26576. protocol: 'accessing',
  26577. fn: function (anObject){
  26578. var self=this;
  26579. self["@defaultValue"]=anObject;
  26580. return self;
  26581. },
  26582. //>>excludeStart("ide", pragmas.excludeIdeData);
  26583. args: ["anObject"],
  26584. source: "defaultValue: anObject\x0a\x09defaultValue := anObject",
  26585. referencedClasses: [],
  26586. //>>excludeEnd("ide");
  26587. messageSends: []
  26588. }),
  26589. $globals.Setting);
  26590. $core.addMethod(
  26591. $core.method({
  26592. selector: "key",
  26593. protocol: 'accessing',
  26594. fn: function (){
  26595. var self=this;
  26596. var $1;
  26597. $1=self["@key"];
  26598. return $1;
  26599. },
  26600. //>>excludeStart("ide", pragmas.excludeIdeData);
  26601. args: [],
  26602. source: "key\x0a\x09^ key",
  26603. referencedClasses: [],
  26604. //>>excludeEnd("ide");
  26605. messageSends: []
  26606. }),
  26607. $globals.Setting);
  26608. $core.addMethod(
  26609. $core.method({
  26610. selector: "key:",
  26611. protocol: 'accessing',
  26612. fn: function (anObject){
  26613. var self=this;
  26614. self["@key"]=anObject;
  26615. return self;
  26616. },
  26617. //>>excludeStart("ide", pragmas.excludeIdeData);
  26618. args: ["anObject"],
  26619. source: "key: anObject\x0a\x09key := anObject",
  26620. referencedClasses: [],
  26621. //>>excludeEnd("ide");
  26622. messageSends: []
  26623. }),
  26624. $globals.Setting);
  26625. $core.addMethod(
  26626. $core.method({
  26627. selector: "value",
  26628. protocol: 'accessing',
  26629. fn: function (){
  26630. var self=this;
  26631. function $Smalltalk(){return $globals.Smalltalk||(typeof Smalltalk=="undefined"?nil:Smalltalk)}
  26632. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  26633. return $core.withContext(function($ctx1) {
  26634. //>>excludeEnd("ctx");
  26635. var $1;
  26636. $1=$recv($recv($Smalltalk())._settings())._at_ifAbsent_(self._key(),(function(){
  26637. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  26638. return $core.withContext(function($ctx2) {
  26639. //>>excludeEnd("ctx");
  26640. return self._defaultValue();
  26641. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  26642. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  26643. //>>excludeEnd("ctx");
  26644. }));
  26645. return $1;
  26646. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  26647. }, function($ctx1) {$ctx1.fill(self,"value",{},$globals.Setting)});
  26648. //>>excludeEnd("ctx");
  26649. },
  26650. //>>excludeStart("ide", pragmas.excludeIdeData);
  26651. args: [],
  26652. source: "value\x0a\x09^ Smalltalk settings at: self key ifAbsent: [ self defaultValue ]",
  26653. referencedClasses: ["Smalltalk"],
  26654. //>>excludeEnd("ide");
  26655. messageSends: ["at:ifAbsent:", "settings", "key", "defaultValue"]
  26656. }),
  26657. $globals.Setting);
  26658. $core.addMethod(
  26659. $core.method({
  26660. selector: "value:",
  26661. protocol: 'accessing',
  26662. fn: function (aString){
  26663. var self=this;
  26664. function $Smalltalk(){return $globals.Smalltalk||(typeof Smalltalk=="undefined"?nil:Smalltalk)}
  26665. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  26666. return $core.withContext(function($ctx1) {
  26667. //>>excludeEnd("ctx");
  26668. var $1;
  26669. $1=$recv($recv($Smalltalk())._settings())._at_put_(self._key(),aString);
  26670. return $1;
  26671. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  26672. }, function($ctx1) {$ctx1.fill(self,"value:",{aString:aString},$globals.Setting)});
  26673. //>>excludeEnd("ctx");
  26674. },
  26675. //>>excludeStart("ide", pragmas.excludeIdeData);
  26676. args: ["aString"],
  26677. source: "value: aString\x0a\x09^ Smalltalk settings at: self key put: aString",
  26678. referencedClasses: ["Smalltalk"],
  26679. //>>excludeEnd("ide");
  26680. messageSends: ["at:put:", "settings", "key"]
  26681. }),
  26682. $globals.Setting);
  26683. $core.addMethod(
  26684. $core.method({
  26685. selector: "at:ifAbsent:",
  26686. protocol: 'instance creation',
  26687. fn: function (aString,anotherString){
  26688. var self=this;
  26689. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  26690. return $core.withContext(function($ctx1) {
  26691. //>>excludeEnd("ctx");
  26692. var $2,$3,$1;
  26693. $2=(
  26694. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  26695. $ctx1.supercall = true,
  26696. //>>excludeEnd("ctx");
  26697. $globals.Setting.klass.superclass.fn.prototype._new.apply($recv(self), []));
  26698. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  26699. $ctx1.supercall = false;
  26700. //>>excludeEnd("ctx");;
  26701. $recv($2)._key_(aString);
  26702. $recv($2)._defaultValue_(anotherString);
  26703. $3=$recv($2)._yourself();
  26704. $1=$3;
  26705. return $1;
  26706. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  26707. }, function($ctx1) {$ctx1.fill(self,"at:ifAbsent:",{aString:aString,anotherString:anotherString},$globals.Setting.klass)});
  26708. //>>excludeEnd("ctx");
  26709. },
  26710. //>>excludeStart("ide", pragmas.excludeIdeData);
  26711. args: ["aString", "anotherString"],
  26712. source: "at: aString ifAbsent: anotherString\x0a\x09^ super new\x0a\x09\x09key: aString;\x0a\x09\x09defaultValue: anotherString;\x0a\x09\x09yourself",
  26713. referencedClasses: [],
  26714. //>>excludeEnd("ide");
  26715. messageSends: ["key:", "new", "defaultValue:", "yourself"]
  26716. }),
  26717. $globals.Setting.klass);
  26718. $core.addMethod(
  26719. $core.method({
  26720. selector: "new",
  26721. protocol: 'instance creation',
  26722. fn: function (){
  26723. var self=this;
  26724. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  26725. return $core.withContext(function($ctx1) {
  26726. //>>excludeEnd("ctx");
  26727. self._shouldNotImplement();
  26728. return self;
  26729. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  26730. }, function($ctx1) {$ctx1.fill(self,"new",{},$globals.Setting.klass)});
  26731. //>>excludeEnd("ctx");
  26732. },
  26733. //>>excludeStart("ide", pragmas.excludeIdeData);
  26734. args: [],
  26735. source: "new\x0a\x09self shouldNotImplement",
  26736. referencedClasses: [],
  26737. //>>excludeEnd("ide");
  26738. messageSends: ["shouldNotImplement"]
  26739. }),
  26740. $globals.Setting.klass);
  26741. $core.addClass('SmalltalkImage', $globals.Object, [], 'Kernel-Infrastructure');
  26742. //>>excludeStart("ide", pragmas.excludeIdeData);
  26743. $globals.SmalltalkImage.comment="I represent the Smalltalk system, wrapping\x0aoperations of variable `$core` declared in `support/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 `support/parser.js` parser file in order to work.";
  26744. //>>excludeEnd("ide");
  26745. $core.addMethod(
  26746. $core.method({
  26747. selector: "addGlobalJsVariable:",
  26748. protocol: 'globals',
  26749. fn: function (aString){
  26750. var self=this;
  26751. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  26752. return $core.withContext(function($ctx1) {
  26753. //>>excludeEnd("ctx");
  26754. $recv(self._globalJsVariables())._add_(aString);
  26755. return self;
  26756. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  26757. }, function($ctx1) {$ctx1.fill(self,"addGlobalJsVariable:",{aString:aString},$globals.SmalltalkImage)});
  26758. //>>excludeEnd("ctx");
  26759. },
  26760. //>>excludeStart("ide", pragmas.excludeIdeData);
  26761. args: ["aString"],
  26762. source: "addGlobalJsVariable: aString\x0a\x09self globalJsVariables add: aString",
  26763. referencedClasses: [],
  26764. //>>excludeEnd("ide");
  26765. messageSends: ["add:", "globalJsVariables"]
  26766. }),
  26767. $globals.SmalltalkImage);
  26768. $core.addMethod(
  26769. $core.method({
  26770. selector: "amdRequire",
  26771. protocol: 'accessing amd',
  26772. fn: function (){
  26773. var self=this;
  26774. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  26775. return $core.withContext(function($ctx1) {
  26776. //>>excludeEnd("ctx");
  26777. var $1;
  26778. $1=$recv(self._core())._at_("amdRequire");
  26779. return $1;
  26780. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  26781. }, function($ctx1) {$ctx1.fill(self,"amdRequire",{},$globals.SmalltalkImage)});
  26782. //>>excludeEnd("ctx");
  26783. },
  26784. //>>excludeStart("ide", pragmas.excludeIdeData);
  26785. args: [],
  26786. source: "amdRequire\x0a\x09^ self core at: 'amdRequire'",
  26787. referencedClasses: [],
  26788. //>>excludeEnd("ide");
  26789. messageSends: ["at:", "core"]
  26790. }),
  26791. $globals.SmalltalkImage);
  26792. $core.addMethod(
  26793. $core.method({
  26794. selector: "asSmalltalkException:",
  26795. protocol: 'error handling',
  26796. fn: function (anObject){
  26797. var self=this;
  26798. function $Error(){return $globals.Error||(typeof Error=="undefined"?nil:Error)}
  26799. function $JavaScriptException(){return $globals.JavaScriptException||(typeof JavaScriptException=="undefined"?nil:JavaScriptException)}
  26800. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  26801. return $core.withContext(function($ctx1) {
  26802. //>>excludeEnd("ctx");
  26803. var $2,$1;
  26804. $2=$recv(self._isSmalltalkObject_(anObject))._and_((function(){
  26805. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  26806. return $core.withContext(function($ctx2) {
  26807. //>>excludeEnd("ctx");
  26808. return $recv(anObject)._isKindOf_($Error());
  26809. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  26810. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  26811. //>>excludeEnd("ctx");
  26812. }));
  26813. if($core.assert($2)){
  26814. $1=anObject;
  26815. } else {
  26816. $1=$recv($JavaScriptException())._on_(anObject);
  26817. };
  26818. return $1;
  26819. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  26820. }, function($ctx1) {$ctx1.fill(self,"asSmalltalkException:",{anObject:anObject},$globals.SmalltalkImage)});
  26821. //>>excludeEnd("ctx");
  26822. },
  26823. //>>excludeStart("ide", pragmas.excludeIdeData);
  26824. args: ["anObject"],
  26825. 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^ ((self isSmalltalkObject: anObject) and: [ anObject isKindOf: Error ])\x0a\x09\x09ifTrue: [ anObject ]\x0a\x09\x09ifFalse: [ JavaScriptException on: anObject ]",
  26826. referencedClasses: ["Error", "JavaScriptException"],
  26827. //>>excludeEnd("ide");
  26828. messageSends: ["ifTrue:ifFalse:", "and:", "isSmalltalkObject:", "isKindOf:", "on:"]
  26829. }),
  26830. $globals.SmalltalkImage);
  26831. $core.addMethod(
  26832. $core.method({
  26833. selector: "at:",
  26834. protocol: 'accessing',
  26835. fn: function (aString){
  26836. var self=this;
  26837. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  26838. return $core.withContext(function($ctx1) {
  26839. //>>excludeEnd("ctx");
  26840. var $1;
  26841. self._deprecatedAPI();
  26842. $1=$recv(self._globals())._at_(aString);
  26843. return $1;
  26844. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  26845. }, function($ctx1) {$ctx1.fill(self,"at:",{aString:aString},$globals.SmalltalkImage)});
  26846. //>>excludeEnd("ctx");
  26847. },
  26848. //>>excludeStart("ide", pragmas.excludeIdeData);
  26849. args: ["aString"],
  26850. source: "at: aString\x0a\x09self deprecatedAPI.\x0a\x09^ self globals at: aString",
  26851. referencedClasses: [],
  26852. //>>excludeEnd("ide");
  26853. messageSends: ["deprecatedAPI", "at:", "globals"]
  26854. }),
  26855. $globals.SmalltalkImage);
  26856. $core.addMethod(
  26857. $core.method({
  26858. selector: "at:ifAbsent:",
  26859. protocol: 'accessing',
  26860. fn: function (aKey,aBlock){
  26861. var self=this;
  26862. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  26863. return $core.withContext(function($ctx1) {
  26864. //>>excludeEnd("ctx");
  26865. var $1;
  26866. self._deprecatedAPI();
  26867. $1=$recv(self._globals())._at_ifAbsent_(aKey,aBlock);
  26868. return $1;
  26869. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  26870. }, function($ctx1) {$ctx1.fill(self,"at:ifAbsent:",{aKey:aKey,aBlock:aBlock},$globals.SmalltalkImage)});
  26871. //>>excludeEnd("ctx");
  26872. },
  26873. //>>excludeStart("ide", pragmas.excludeIdeData);
  26874. args: ["aKey", "aBlock"],
  26875. source: "at: aKey ifAbsent: aBlock\x0a\x09self deprecatedAPI.\x0a\x09^ self globals at: aKey ifAbsent: aBlock",
  26876. referencedClasses: [],
  26877. //>>excludeEnd("ide");
  26878. messageSends: ["deprecatedAPI", "at:ifAbsent:", "globals"]
  26879. }),
  26880. $globals.SmalltalkImage);
  26881. $core.addMethod(
  26882. $core.method({
  26883. selector: "at:put:",
  26884. protocol: 'accessing',
  26885. fn: function (aString,anObject){
  26886. var self=this;
  26887. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  26888. return $core.withContext(function($ctx1) {
  26889. //>>excludeEnd("ctx");
  26890. var $1;
  26891. self._deprecatedAPI();
  26892. $1=$recv(self._globals())._at_put_(aString,anObject);
  26893. return $1;
  26894. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  26895. }, function($ctx1) {$ctx1.fill(self,"at:put:",{aString:aString,anObject:anObject},$globals.SmalltalkImage)});
  26896. //>>excludeEnd("ctx");
  26897. },
  26898. //>>excludeStart("ide", pragmas.excludeIdeData);
  26899. args: ["aString", "anObject"],
  26900. source: "at: aString put: anObject\x0a\x09self deprecatedAPI.\x0a\x09^ self globals at: aString put: anObject",
  26901. referencedClasses: [],
  26902. //>>excludeEnd("ide");
  26903. messageSends: ["deprecatedAPI", "at:put:", "globals"]
  26904. }),
  26905. $globals.SmalltalkImage);
  26906. $core.addMethod(
  26907. $core.method({
  26908. selector: "basicCreatePackage:",
  26909. protocol: 'private',
  26910. fn: function (packageName){
  26911. var self=this;
  26912. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  26913. return $core.withContext(function($ctx1) {
  26914. //>>excludeEnd("ctx");
  26915. return $core.addPackage(packageName);
  26916. return self;
  26917. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  26918. }, function($ctx1) {$ctx1.fill(self,"basicCreatePackage:",{packageName:packageName},$globals.SmalltalkImage)});
  26919. //>>excludeEnd("ctx");
  26920. },
  26921. //>>excludeStart("ide", pragmas.excludeIdeData);
  26922. args: ["packageName"],
  26923. source: "basicCreatePackage: packageName\x0a\x09\x22Create and bind a new bare package with given name and return it.\x22\x0a\x09<return $core.addPackage(packageName)>",
  26924. referencedClasses: [],
  26925. //>>excludeEnd("ide");
  26926. messageSends: []
  26927. }),
  26928. $globals.SmalltalkImage);
  26929. $core.addMethod(
  26930. $core.method({
  26931. selector: "basicParse:",
  26932. protocol: 'private',
  26933. fn: function (aString){
  26934. var self=this;
  26935. function $SmalltalkParser(){return $globals.SmalltalkParser||(typeof SmalltalkParser=="undefined"?nil:SmalltalkParser)}
  26936. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  26937. return $core.withContext(function($ctx1) {
  26938. //>>excludeEnd("ctx");
  26939. var $1;
  26940. $1=$recv($SmalltalkParser())._parse_(aString);
  26941. return $1;
  26942. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  26943. }, function($ctx1) {$ctx1.fill(self,"basicParse:",{aString:aString},$globals.SmalltalkImage)});
  26944. //>>excludeEnd("ctx");
  26945. },
  26946. //>>excludeStart("ide", pragmas.excludeIdeData);
  26947. args: ["aString"],
  26948. source: "basicParse: aString\x0a\x09^ SmalltalkParser parse: aString",
  26949. referencedClasses: ["SmalltalkParser"],
  26950. //>>excludeEnd("ide");
  26951. messageSends: ["parse:"]
  26952. }),
  26953. $globals.SmalltalkImage);
  26954. $core.addMethod(
  26955. $core.method({
  26956. selector: "classes",
  26957. protocol: 'classes',
  26958. fn: function (){
  26959. var self=this;
  26960. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  26961. return $core.withContext(function($ctx1) {
  26962. //>>excludeEnd("ctx");
  26963. return $core.classes();
  26964. return self;
  26965. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  26966. }, function($ctx1) {$ctx1.fill(self,"classes",{},$globals.SmalltalkImage)});
  26967. //>>excludeEnd("ctx");
  26968. },
  26969. //>>excludeStart("ide", pragmas.excludeIdeData);
  26970. args: [],
  26971. source: "classes\x0a\x09<return $core.classes()>",
  26972. referencedClasses: [],
  26973. //>>excludeEnd("ide");
  26974. messageSends: []
  26975. }),
  26976. $globals.SmalltalkImage);
  26977. $core.addMethod(
  26978. $core.method({
  26979. selector: "core",
  26980. protocol: 'accessing',
  26981. fn: function (){
  26982. var self=this;
  26983. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  26984. return $core.withContext(function($ctx1) {
  26985. //>>excludeEnd("ctx");
  26986. return $core;
  26987. return self;
  26988. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  26989. }, function($ctx1) {$ctx1.fill(self,"core",{},$globals.SmalltalkImage)});
  26990. //>>excludeEnd("ctx");
  26991. },
  26992. //>>excludeStart("ide", pragmas.excludeIdeData);
  26993. args: [],
  26994. source: "core\x0a\x09<return $core>",
  26995. referencedClasses: [],
  26996. //>>excludeEnd("ide");
  26997. messageSends: []
  26998. }),
  26999. $globals.SmalltalkImage);
  27000. $core.addMethod(
  27001. $core.method({
  27002. selector: "createPackage:",
  27003. protocol: 'packages',
  27004. fn: function (packageName){
  27005. var self=this;
  27006. var package_,announcement;
  27007. function $PackageAdded(){return $globals.PackageAdded||(typeof PackageAdded=="undefined"?nil:PackageAdded)}
  27008. function $SystemAnnouncer(){return $globals.SystemAnnouncer||(typeof SystemAnnouncer=="undefined"?nil:SystemAnnouncer)}
  27009. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  27010. return $core.withContext(function($ctx1) {
  27011. //>>excludeEnd("ctx");
  27012. var $1,$2,$3;
  27013. package_=self._basicCreatePackage_(packageName);
  27014. $1=$recv($PackageAdded())._new();
  27015. $recv($1)._package_(package_);
  27016. $2=$recv($1)._yourself();
  27017. announcement=$2;
  27018. $recv($recv($SystemAnnouncer())._current())._announce_(announcement);
  27019. $3=package_;
  27020. return $3;
  27021. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  27022. }, function($ctx1) {$ctx1.fill(self,"createPackage:",{packageName:packageName,package_:package_,announcement:announcement},$globals.SmalltalkImage)});
  27023. //>>excludeEnd("ctx");
  27024. },
  27025. //>>excludeStart("ide", pragmas.excludeIdeData);
  27026. args: ["packageName"],
  27027. 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",
  27028. referencedClasses: ["PackageAdded", "SystemAnnouncer"],
  27029. //>>excludeEnd("ide");
  27030. messageSends: ["basicCreatePackage:", "package:", "new", "yourself", "announce:", "current"]
  27031. }),
  27032. $globals.SmalltalkImage);
  27033. $core.addMethod(
  27034. $core.method({
  27035. selector: "createPackage:properties:",
  27036. protocol: 'private',
  27037. fn: function (packageName,aDict){
  27038. var self=this;
  27039. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  27040. return $core.withContext(function($ctx1) {
  27041. //>>excludeEnd("ctx");
  27042. var $1,$2;
  27043. self._deprecatedAPI();
  27044. $1=$recv(aDict)._isEmpty();
  27045. if(!$core.assert($1)){
  27046. self._error_("createPackage:properties: called with nonempty properties");
  27047. };
  27048. $2=self._createPackage_(packageName);
  27049. return $2;
  27050. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  27051. }, function($ctx1) {$ctx1.fill(self,"createPackage:properties:",{packageName:packageName,aDict:aDict},$globals.SmalltalkImage)});
  27052. //>>excludeEnd("ctx");
  27053. },
  27054. //>>excludeStart("ide", pragmas.excludeIdeData);
  27055. args: ["packageName", "aDict"],
  27056. source: "createPackage: packageName properties: aDict\x0a\x09\x22Needed to import .st files: they begin with this call.\x22\x0a\x09self deprecatedAPI.\x0a\x09\x0a\x09aDict isEmpty ifFalse: [ self error: 'createPackage:properties: called with nonempty properties' ].\x0a\x09^ self createPackage: packageName",
  27057. referencedClasses: [],
  27058. //>>excludeEnd("ide");
  27059. messageSends: ["deprecatedAPI", "ifFalse:", "isEmpty", "error:", "createPackage:"]
  27060. }),
  27061. $globals.SmalltalkImage);
  27062. $core.addMethod(
  27063. $core.method({
  27064. selector: "current",
  27065. protocol: 'accessing',
  27066. fn: function (){
  27067. var self=this;
  27068. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  27069. return $core.withContext(function($ctx1) {
  27070. //>>excludeEnd("ctx");
  27071. self._deprecatedAPI();
  27072. return self;
  27073. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  27074. }, function($ctx1) {$ctx1.fill(self,"current",{},$globals.SmalltalkImage)});
  27075. //>>excludeEnd("ctx");
  27076. },
  27077. //>>excludeStart("ide", pragmas.excludeIdeData);
  27078. args: [],
  27079. source: "current\x0a\x09\x22Backward compatibility for Smalltalk current ...\x22\x0a\x09self deprecatedAPI.\x0a\x09^ self",
  27080. referencedClasses: [],
  27081. //>>excludeEnd("ide");
  27082. messageSends: ["deprecatedAPI"]
  27083. }),
  27084. $globals.SmalltalkImage);
  27085. $core.addMethod(
  27086. $core.method({
  27087. selector: "defaultAmdNamespace",
  27088. protocol: 'accessing amd',
  27089. fn: function (){
  27090. var self=this;
  27091. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  27092. return $core.withContext(function($ctx1) {
  27093. //>>excludeEnd("ctx");
  27094. var $1;
  27095. $1="transport.defaultAmdNamespace"._settingValue();
  27096. return $1;
  27097. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  27098. }, function($ctx1) {$ctx1.fill(self,"defaultAmdNamespace",{},$globals.SmalltalkImage)});
  27099. //>>excludeEnd("ctx");
  27100. },
  27101. //>>excludeStart("ide", pragmas.excludeIdeData);
  27102. args: [],
  27103. source: "defaultAmdNamespace\x0a\x09^ 'transport.defaultAmdNamespace' settingValue",
  27104. referencedClasses: [],
  27105. //>>excludeEnd("ide");
  27106. messageSends: ["settingValue"]
  27107. }),
  27108. $globals.SmalltalkImage);
  27109. $core.addMethod(
  27110. $core.method({
  27111. selector: "defaultAmdNamespace:",
  27112. protocol: 'accessing amd',
  27113. fn: function (aString){
  27114. var self=this;
  27115. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  27116. return $core.withContext(function($ctx1) {
  27117. //>>excludeEnd("ctx");
  27118. "transport.defaultAmdNamespace"._settingValue_(aString);
  27119. return self;
  27120. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  27121. }, function($ctx1) {$ctx1.fill(self,"defaultAmdNamespace:",{aString:aString},$globals.SmalltalkImage)});
  27122. //>>excludeEnd("ctx");
  27123. },
  27124. //>>excludeStart("ide", pragmas.excludeIdeData);
  27125. args: ["aString"],
  27126. source: "defaultAmdNamespace: aString\x0a\x09'transport.defaultAmdNamespace' settingValue: aString",
  27127. referencedClasses: [],
  27128. //>>excludeEnd("ide");
  27129. messageSends: ["settingValue:"]
  27130. }),
  27131. $globals.SmalltalkImage);
  27132. $core.addMethod(
  27133. $core.method({
  27134. selector: "deleteClass:",
  27135. protocol: 'private',
  27136. fn: function (aClass){
  27137. var self=this;
  27138. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  27139. return $core.withContext(function($ctx1) {
  27140. //>>excludeEnd("ctx");
  27141. $core.removeClass(aClass);
  27142. return self;
  27143. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  27144. }, function($ctx1) {$ctx1.fill(self,"deleteClass:",{aClass:aClass},$globals.SmalltalkImage)});
  27145. //>>excludeEnd("ctx");
  27146. },
  27147. //>>excludeStart("ide", pragmas.excludeIdeData);
  27148. args: ["aClass"],
  27149. source: "deleteClass: aClass\x0a\x09\x22Deletes a class by deleting its binding only. Use #removeClass instead\x22\x0a\x09\x0a\x09<$core.removeClass(aClass)>",
  27150. referencedClasses: [],
  27151. //>>excludeEnd("ide");
  27152. messageSends: []
  27153. }),
  27154. $globals.SmalltalkImage);
  27155. $core.addMethod(
  27156. $core.method({
  27157. selector: "deleteGlobalJsVariable:",
  27158. protocol: 'globals',
  27159. fn: function (aString){
  27160. var self=this;
  27161. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  27162. return $core.withContext(function($ctx1) {
  27163. //>>excludeEnd("ctx");
  27164. $recv(self._globalJsVariables())._remove_ifAbsent_(aString,(function(){
  27165. }));
  27166. return self;
  27167. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  27168. }, function($ctx1) {$ctx1.fill(self,"deleteGlobalJsVariable:",{aString:aString},$globals.SmalltalkImage)});
  27169. //>>excludeEnd("ctx");
  27170. },
  27171. //>>excludeStart("ide", pragmas.excludeIdeData);
  27172. args: ["aString"],
  27173. source: "deleteGlobalJsVariable: aString\x0a\x09self globalJsVariables remove: aString ifAbsent:[]",
  27174. referencedClasses: [],
  27175. //>>excludeEnd("ide");
  27176. messageSends: ["remove:ifAbsent:", "globalJsVariables"]
  27177. }),
  27178. $globals.SmalltalkImage);
  27179. $core.addMethod(
  27180. $core.method({
  27181. selector: "deletePackage:",
  27182. protocol: 'private',
  27183. fn: function (packageName){
  27184. var self=this;
  27185. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  27186. return $core.withContext(function($ctx1) {
  27187. //>>excludeEnd("ctx");
  27188. delete $core.packages[packageName];
  27189. return self;
  27190. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  27191. }, function($ctx1) {$ctx1.fill(self,"deletePackage:",{packageName:packageName},$globals.SmalltalkImage)});
  27192. //>>excludeEnd("ctx");
  27193. },
  27194. //>>excludeStart("ide", pragmas.excludeIdeData);
  27195. args: ["packageName"],
  27196. source: "deletePackage: packageName\x0a\x09\x22Deletes a package by deleting its binding, but does not check if it contains classes etc.\x0a\x09To remove a package, use #removePackage instead.\x22\x0a\x0a\x09<delete $core.packages[packageName]>",
  27197. referencedClasses: [],
  27198. //>>excludeEnd("ide");
  27199. messageSends: []
  27200. }),
  27201. $globals.SmalltalkImage);
  27202. $core.addMethod(
  27203. $core.method({
  27204. selector: "globalJsVariables",
  27205. protocol: 'globals',
  27206. fn: function (){
  27207. var self=this;
  27208. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  27209. return $core.withContext(function($ctx1) {
  27210. //>>excludeEnd("ctx");
  27211. return $core.globalJsVariables;
  27212. return self;
  27213. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  27214. }, function($ctx1) {$ctx1.fill(self,"globalJsVariables",{},$globals.SmalltalkImage)});
  27215. //>>excludeEnd("ctx");
  27216. },
  27217. //>>excludeStart("ide", pragmas.excludeIdeData);
  27218. args: [],
  27219. source: "globalJsVariables\x0a\x09\x22Array of global JavaScript variables\x22\x0a\x09<return $core.globalJsVariables>",
  27220. referencedClasses: [],
  27221. //>>excludeEnd("ide");
  27222. messageSends: []
  27223. }),
  27224. $globals.SmalltalkImage);
  27225. $core.addMethod(
  27226. $core.method({
  27227. selector: "globals",
  27228. protocol: 'accessing',
  27229. fn: function (){
  27230. var self=this;
  27231. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  27232. return $core.withContext(function($ctx1) {
  27233. //>>excludeEnd("ctx");
  27234. return $globals;
  27235. return self;
  27236. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  27237. }, function($ctx1) {$ctx1.fill(self,"globals",{},$globals.SmalltalkImage)});
  27238. //>>excludeEnd("ctx");
  27239. },
  27240. //>>excludeStart("ide", pragmas.excludeIdeData);
  27241. args: [],
  27242. source: "globals\x0a\x09<return $globals>",
  27243. referencedClasses: [],
  27244. //>>excludeEnd("ide");
  27245. messageSends: []
  27246. }),
  27247. $globals.SmalltalkImage);
  27248. $core.addMethod(
  27249. $core.method({
  27250. selector: "includesKey:",
  27251. protocol: 'accessing',
  27252. fn: function (aKey){
  27253. var self=this;
  27254. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  27255. return $core.withContext(function($ctx1) {
  27256. //>>excludeEnd("ctx");
  27257. return $core.hasOwnProperty(aKey);
  27258. return self;
  27259. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  27260. }, function($ctx1) {$ctx1.fill(self,"includesKey:",{aKey:aKey},$globals.SmalltalkImage)});
  27261. //>>excludeEnd("ctx");
  27262. },
  27263. //>>excludeStart("ide", pragmas.excludeIdeData);
  27264. args: ["aKey"],
  27265. source: "includesKey: aKey\x0a\x09<return $core.hasOwnProperty(aKey)>",
  27266. referencedClasses: [],
  27267. //>>excludeEnd("ide");
  27268. messageSends: []
  27269. }),
  27270. $globals.SmalltalkImage);
  27271. $core.addMethod(
  27272. $core.method({
  27273. selector: "isSmalltalkObject:",
  27274. protocol: 'testing',
  27275. fn: function (anObject){
  27276. var self=this;
  27277. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  27278. return $core.withContext(function($ctx1) {
  27279. //>>excludeEnd("ctx");
  27280. return typeof anObject.klass !== 'undefined';
  27281. return self;
  27282. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  27283. }, function($ctx1) {$ctx1.fill(self,"isSmalltalkObject:",{anObject:anObject},$globals.SmalltalkImage)});
  27284. //>>excludeEnd("ctx");
  27285. },
  27286. //>>excludeStart("ide", pragmas.excludeIdeData);
  27287. args: ["anObject"],
  27288. source: "isSmalltalkObject: anObject\x0a\x09\x22Consider anObject a Smalltalk object if it has a 'klass' property.\x0a\x09Note that this may be unaccurate\x22\x0a\x09\x0a\x09<return typeof anObject.klass !== 'undefined'>",
  27289. referencedClasses: [],
  27290. //>>excludeEnd("ide");
  27291. messageSends: []
  27292. }),
  27293. $globals.SmalltalkImage);
  27294. $core.addMethod(
  27295. $core.method({
  27296. selector: "packageAt:",
  27297. protocol: 'packages',
  27298. fn: function (packageName){
  27299. var self=this;
  27300. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  27301. return $core.withContext(function($ctx1) {
  27302. //>>excludeEnd("ctx");
  27303. return $core.packages[packageName];
  27304. return self;
  27305. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  27306. }, function($ctx1) {$ctx1.fill(self,"packageAt:",{packageName:packageName},$globals.SmalltalkImage)});
  27307. //>>excludeEnd("ctx");
  27308. },
  27309. //>>excludeStart("ide", pragmas.excludeIdeData);
  27310. args: ["packageName"],
  27311. source: "packageAt: packageName\x0a\x09<return $core.packages[packageName]>",
  27312. referencedClasses: [],
  27313. //>>excludeEnd("ide");
  27314. messageSends: []
  27315. }),
  27316. $globals.SmalltalkImage);
  27317. $core.addMethod(
  27318. $core.method({
  27319. selector: "packageAt:ifAbsent:",
  27320. protocol: 'packages',
  27321. fn: function (packageName,aBlock){
  27322. var self=this;
  27323. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  27324. return $core.withContext(function($ctx1) {
  27325. //>>excludeEnd("ctx");
  27326. var $2,$1;
  27327. $2=self._packageAt_(packageName);
  27328. $1=$recv($2)._ifNil_(aBlock);
  27329. return $1;
  27330. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  27331. }, function($ctx1) {$ctx1.fill(self,"packageAt:ifAbsent:",{packageName:packageName,aBlock:aBlock},$globals.SmalltalkImage)});
  27332. //>>excludeEnd("ctx");
  27333. },
  27334. //>>excludeStart("ide", pragmas.excludeIdeData);
  27335. args: ["packageName", "aBlock"],
  27336. source: "packageAt: packageName ifAbsent: aBlock\x0a\x09^ (self packageAt: packageName) ifNil: aBlock",
  27337. referencedClasses: [],
  27338. //>>excludeEnd("ide");
  27339. messageSends: ["ifNil:", "packageAt:"]
  27340. }),
  27341. $globals.SmalltalkImage);
  27342. $core.addMethod(
  27343. $core.method({
  27344. selector: "packages",
  27345. protocol: 'packages',
  27346. fn: function (){
  27347. var self=this;
  27348. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  27349. return $core.withContext(function($ctx1) {
  27350. //>>excludeEnd("ctx");
  27351. return Object.keys($core.packages).map(function(k) {
  27352. return $core.packages[k];
  27353. })
  27354. ;
  27355. return self;
  27356. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  27357. }, function($ctx1) {$ctx1.fill(self,"packages",{},$globals.SmalltalkImage)});
  27358. //>>excludeEnd("ctx");
  27359. },
  27360. //>>excludeStart("ide", pragmas.excludeIdeData);
  27361. args: [],
  27362. source: "packages\x0a\x09\x22Return all Package instances in the system.\x22\x0a\x0a\x09<\x0a\x09\x09return Object.keys($core.packages).map(function(k) {\x0a\x09\x09\x09return $core.packages[k];\x0a\x09\x09})\x0a\x09>",
  27363. referencedClasses: [],
  27364. //>>excludeEnd("ide");
  27365. messageSends: []
  27366. }),
  27367. $globals.SmalltalkImage);
  27368. $core.addMethod(
  27369. $core.method({
  27370. selector: "parse:",
  27371. protocol: 'accessing',
  27372. fn: function (aString){
  27373. var self=this;
  27374. var result;
  27375. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  27376. return $core.withContext(function($ctx1) {
  27377. //>>excludeEnd("ctx");
  27378. var $2,$3,$1;
  27379. $recv((function(){
  27380. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  27381. return $core.withContext(function($ctx2) {
  27382. //>>excludeEnd("ctx");
  27383. result=self._basicParse_(aString);
  27384. return result;
  27385. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  27386. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  27387. //>>excludeEnd("ctx");
  27388. }))._tryCatch_((function(ex){
  27389. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  27390. return $core.withContext(function($ctx2) {
  27391. //>>excludeEnd("ctx");
  27392. return $recv(self._parseError_parsing_(ex,aString))._signal();
  27393. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  27394. }, function($ctx2) {$ctx2.fillBlock({ex:ex},$ctx1,2)});
  27395. //>>excludeEnd("ctx");
  27396. }));
  27397. $2=result;
  27398. $recv($2)._source_(aString);
  27399. $3=$recv($2)._yourself();
  27400. $1=$3;
  27401. return $1;
  27402. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  27403. }, function($ctx1) {$ctx1.fill(self,"parse:",{aString:aString,result:result},$globals.SmalltalkImage)});
  27404. //>>excludeEnd("ctx");
  27405. },
  27406. //>>excludeStart("ide", pragmas.excludeIdeData);
  27407. args: ["aString"],
  27408. 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\x0a\x09\x09source: aString;\x0a\x09\x09yourself",
  27409. referencedClasses: [],
  27410. //>>excludeEnd("ide");
  27411. messageSends: ["tryCatch:", "basicParse:", "signal", "parseError:parsing:", "source:", "yourself"]
  27412. }),
  27413. $globals.SmalltalkImage);
  27414. $core.addMethod(
  27415. $core.method({
  27416. selector: "parseError:parsing:",
  27417. protocol: 'error handling',
  27418. fn: function (anException,aString){
  27419. var self=this;
  27420. function $ParseError(){return $globals.ParseError||(typeof ParseError=="undefined"?nil:ParseError)}
  27421. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  27422. return $core.withContext(function($ctx1) {
  27423. //>>excludeEnd("ctx");
  27424. var $2,$8,$7,$6,$9,$5,$4,$3,$1;
  27425. $2=$recv($ParseError())._new();
  27426. $8=$recv(anException)._basicAt_("line");
  27427. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  27428. $ctx1.sendIdx["basicAt:"]=1;
  27429. //>>excludeEnd("ctx");
  27430. $7="Parse error on line ".__comma($8);
  27431. $6=$recv($7).__comma(" column ");
  27432. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  27433. $ctx1.sendIdx[","]=4;
  27434. //>>excludeEnd("ctx");
  27435. $9=$recv(anException)._basicAt_("column");
  27436. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  27437. $ctx1.sendIdx["basicAt:"]=2;
  27438. //>>excludeEnd("ctx");
  27439. $5=$recv($6).__comma($9);
  27440. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  27441. $ctx1.sendIdx[","]=3;
  27442. //>>excludeEnd("ctx");
  27443. $4=$recv($5).__comma(" : Unexpected character ");
  27444. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  27445. $ctx1.sendIdx[","]=2;
  27446. //>>excludeEnd("ctx");
  27447. $3=$recv($4).__comma($recv(anException)._basicAt_("found"));
  27448. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  27449. $ctx1.sendIdx[","]=1;
  27450. //>>excludeEnd("ctx");
  27451. $1=$recv($2)._messageText_($3);
  27452. return $1;
  27453. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  27454. }, function($ctx1) {$ctx1.fill(self,"parseError:parsing:",{anException:anException,aString:aString},$globals.SmalltalkImage)});
  27455. //>>excludeEnd("ctx");
  27456. },
  27457. //>>excludeStart("ide", pragmas.excludeIdeData);
  27458. args: ["anException", "aString"],
  27459. source: "parseError: anException parsing: aString\x0a\x09^ ParseError new messageText: 'Parse error on line ', (anException basicAt: 'line') ,' column ' , (anException basicAt: 'column') ,' : Unexpected character ', (anException basicAt: 'found')",
  27460. referencedClasses: ["ParseError"],
  27461. //>>excludeEnd("ide");
  27462. messageSends: ["messageText:", "new", ",", "basicAt:"]
  27463. }),
  27464. $globals.SmalltalkImage);
  27465. $core.addMethod(
  27466. $core.method({
  27467. selector: "pseudoVariableNames",
  27468. protocol: 'accessing',
  27469. fn: function (){
  27470. var self=this;
  27471. var $1;
  27472. $1=["self", "super", "nil", "true", "false", "thisContext"];
  27473. return $1;
  27474. },
  27475. //>>excludeStart("ide", pragmas.excludeIdeData);
  27476. args: [],
  27477. source: "pseudoVariableNames\x0a\x09^ #('self' 'super' 'nil' 'true' 'false' 'thisContext')",
  27478. referencedClasses: [],
  27479. //>>excludeEnd("ide");
  27480. messageSends: []
  27481. }),
  27482. $globals.SmalltalkImage);
  27483. $core.addMethod(
  27484. $core.method({
  27485. selector: "readJSObject:",
  27486. protocol: 'accessing',
  27487. fn: function (anObject){
  27488. var self=this;
  27489. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  27490. return $core.withContext(function($ctx1) {
  27491. //>>excludeEnd("ctx");
  27492. return $core.readJSObject(anObject);
  27493. return self;
  27494. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  27495. }, function($ctx1) {$ctx1.fill(self,"readJSObject:",{anObject:anObject},$globals.SmalltalkImage)});
  27496. //>>excludeEnd("ctx");
  27497. },
  27498. //>>excludeStart("ide", pragmas.excludeIdeData);
  27499. args: ["anObject"],
  27500. source: "readJSObject: anObject\x0a\x09<return $core.readJSObject(anObject)>",
  27501. referencedClasses: [],
  27502. //>>excludeEnd("ide");
  27503. messageSends: []
  27504. }),
  27505. $globals.SmalltalkImage);
  27506. $core.addMethod(
  27507. $core.method({
  27508. selector: "removeClass:",
  27509. protocol: 'classes',
  27510. fn: function (aClass){
  27511. var self=this;
  27512. function $SystemAnnouncer(){return $globals.SystemAnnouncer||(typeof SystemAnnouncer=="undefined"?nil:SystemAnnouncer)}
  27513. function $ClassRemoved(){return $globals.ClassRemoved||(typeof ClassRemoved=="undefined"?nil:ClassRemoved)}
  27514. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  27515. return $core.withContext(function($ctx1) {
  27516. //>>excludeEnd("ctx");
  27517. var $1,$2,$3;
  27518. $1=$recv(aClass)._isMetaclass();
  27519. if($core.assert($1)){
  27520. self._error_($recv($recv(aClass)._asString()).__comma(" is a Metaclass and cannot be removed!"));
  27521. };
  27522. self._deleteClass_(aClass);
  27523. $2=$recv($ClassRemoved())._new();
  27524. $recv($2)._theClass_(aClass);
  27525. $3=$recv($2)._yourself();
  27526. $recv($recv($SystemAnnouncer())._current())._announce_($3);
  27527. return self;
  27528. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  27529. }, function($ctx1) {$ctx1.fill(self,"removeClass:",{aClass:aClass},$globals.SmalltalkImage)});
  27530. //>>excludeEnd("ctx");
  27531. },
  27532. //>>excludeStart("ide", pragmas.excludeIdeData);
  27533. args: ["aClass"],
  27534. source: "removeClass: aClass\x0a\x09aClass isMetaclass ifTrue: [ self error: aClass asString, ' is a Metaclass and cannot be removed!' ].\x0a\x09\x0a\x09self deleteClass: aClass.\x0a\x09\x0a\x09SystemAnnouncer current\x0a\x09\x09announce: (ClassRemoved new\x0a\x09\x09\x09theClass: aClass;\x0a\x09\x09\x09yourself)",
  27535. referencedClasses: ["SystemAnnouncer", "ClassRemoved"],
  27536. //>>excludeEnd("ide");
  27537. messageSends: ["ifTrue:", "isMetaclass", "error:", ",", "asString", "deleteClass:", "announce:", "current", "theClass:", "new", "yourself"]
  27538. }),
  27539. $globals.SmalltalkImage);
  27540. $core.addMethod(
  27541. $core.method({
  27542. selector: "removePackage:",
  27543. protocol: 'packages',
  27544. fn: function (packageName){
  27545. var self=this;
  27546. var pkg;
  27547. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  27548. return $core.withContext(function($ctx1) {
  27549. //>>excludeEnd("ctx");
  27550. pkg=self._packageAt_ifAbsent_(packageName,(function(){
  27551. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  27552. return $core.withContext(function($ctx2) {
  27553. //>>excludeEnd("ctx");
  27554. return self._error_("Missing package: ".__comma(packageName));
  27555. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  27556. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  27557. //>>excludeEnd("ctx");
  27558. }));
  27559. $recv($recv(pkg)._classes())._do_((function(each){
  27560. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  27561. return $core.withContext(function($ctx2) {
  27562. //>>excludeEnd("ctx");
  27563. return self._removeClass_(each);
  27564. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  27565. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,2)});
  27566. //>>excludeEnd("ctx");
  27567. }));
  27568. self._deletePackage_(packageName);
  27569. return self;
  27570. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  27571. }, function($ctx1) {$ctx1.fill(self,"removePackage:",{packageName:packageName,pkg:pkg},$globals.SmalltalkImage)});
  27572. //>>excludeEnd("ctx");
  27573. },
  27574. //>>excludeStart("ide", pragmas.excludeIdeData);
  27575. args: ["packageName"],
  27576. 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 deletePackage: packageName",
  27577. referencedClasses: [],
  27578. //>>excludeEnd("ide");
  27579. messageSends: ["packageAt:ifAbsent:", "error:", ",", "do:", "classes", "removeClass:", "deletePackage:"]
  27580. }),
  27581. $globals.SmalltalkImage);
  27582. $core.addMethod(
  27583. $core.method({
  27584. selector: "renamePackage:to:",
  27585. protocol: 'packages',
  27586. fn: function (packageName,newName){
  27587. var self=this;
  27588. var pkg;
  27589. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  27590. return $core.withContext(function($ctx1) {
  27591. //>>excludeEnd("ctx");
  27592. var $1,$2,$receiver;
  27593. pkg=self._packageAt_ifAbsent_(packageName,(function(){
  27594. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  27595. return $core.withContext(function($ctx2) {
  27596. //>>excludeEnd("ctx");
  27597. $1="Missing package: ".__comma(packageName);
  27598. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  27599. $ctx2.sendIdx[","]=1;
  27600. //>>excludeEnd("ctx");
  27601. return self._error_($1);
  27602. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  27603. $ctx2.sendIdx["error:"]=1;
  27604. //>>excludeEnd("ctx");
  27605. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  27606. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  27607. //>>excludeEnd("ctx");
  27608. }));
  27609. $2=self._packageAt_(newName);
  27610. if(($receiver = $2) == null || $receiver.isNil){
  27611. $2;
  27612. } else {
  27613. self._error_("Already exists a package called: ".__comma(newName));
  27614. };
  27615. $recv(self._at_("packages"))._at_put_(newName,pkg);
  27616. $recv(pkg)._name_(newName);
  27617. self._deletePackage_(packageName);
  27618. return self;
  27619. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  27620. }, function($ctx1) {$ctx1.fill(self,"renamePackage:to:",{packageName:packageName,newName:newName,pkg:pkg},$globals.SmalltalkImage)});
  27621. //>>excludeEnd("ctx");
  27622. },
  27623. //>>excludeStart("ide", pragmas.excludeIdeData);
  27624. args: ["packageName", "newName"],
  27625. 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\x09(self packageAt: newName) ifNotNil: [ self error: 'Already exists a package called: ', newName ].\x0a\x09(self at: 'packages') at: newName put: pkg.\x0a\x09pkg name: newName.\x0a\x09self deletePackage: packageName.",
  27626. referencedClasses: [],
  27627. //>>excludeEnd("ide");
  27628. messageSends: ["packageAt:ifAbsent:", "error:", ",", "ifNotNil:", "packageAt:", "at:put:", "at:", "name:", "deletePackage:"]
  27629. }),
  27630. $globals.SmalltalkImage);
  27631. $core.addMethod(
  27632. $core.method({
  27633. selector: "reservedWords",
  27634. protocol: 'accessing',
  27635. fn: function (){
  27636. var self=this;
  27637. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  27638. return $core.withContext(function($ctx1) {
  27639. //>>excludeEnd("ctx");
  27640. return $core.reservedWords;
  27641. return self;
  27642. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  27643. }, function($ctx1) {$ctx1.fill(self,"reservedWords",{},$globals.SmalltalkImage)});
  27644. //>>excludeEnd("ctx");
  27645. },
  27646. //>>excludeStart("ide", pragmas.excludeIdeData);
  27647. args: [],
  27648. source: "reservedWords\x0a\x09\x22JavaScript reserved words\x22\x0a\x09<return $core.reservedWords>",
  27649. referencedClasses: [],
  27650. //>>excludeEnd("ide");
  27651. messageSends: []
  27652. }),
  27653. $globals.SmalltalkImage);
  27654. $core.addMethod(
  27655. $core.method({
  27656. selector: "settings",
  27657. protocol: 'accessing',
  27658. fn: function (){
  27659. var self=this;
  27660. function $SmalltalkSettings(){return $globals.SmalltalkSettings||(typeof SmalltalkSettings=="undefined"?nil:SmalltalkSettings)}
  27661. return $SmalltalkSettings();
  27662. },
  27663. //>>excludeStart("ide", pragmas.excludeIdeData);
  27664. args: [],
  27665. source: "settings\x0a\x09^ SmalltalkSettings",
  27666. referencedClasses: ["SmalltalkSettings"],
  27667. //>>excludeEnd("ide");
  27668. messageSends: []
  27669. }),
  27670. $globals.SmalltalkImage);
  27671. $core.addMethod(
  27672. $core.method({
  27673. selector: "version",
  27674. protocol: 'accessing',
  27675. fn: function (){
  27676. var self=this;
  27677. return "0.13.2";
  27678. },
  27679. //>>excludeStart("ide", pragmas.excludeIdeData);
  27680. args: [],
  27681. source: "version\x0a\x09\x22Answer the version string of Amber\x22\x0a\x09\x0a\x09^ '0.13.2'",
  27682. referencedClasses: [],
  27683. //>>excludeEnd("ide");
  27684. messageSends: []
  27685. }),
  27686. $globals.SmalltalkImage);
  27687. $core.addMethod(
  27688. $core.method({
  27689. selector: "vm",
  27690. protocol: 'accessing',
  27691. fn: function (){
  27692. var self=this;
  27693. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  27694. return $core.withContext(function($ctx1) {
  27695. //>>excludeEnd("ctx");
  27696. var $1;
  27697. self._deprecatedAPI_("Use #core");
  27698. $1=self._core();
  27699. return $1;
  27700. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  27701. }, function($ctx1) {$ctx1.fill(self,"vm",{},$globals.SmalltalkImage)});
  27702. //>>excludeEnd("ctx");
  27703. },
  27704. //>>excludeStart("ide", pragmas.excludeIdeData);
  27705. args: [],
  27706. source: "vm\x0a\x09self deprecatedAPI: 'Use #core'.\x0a\x09^self core",
  27707. referencedClasses: [],
  27708. //>>excludeEnd("ide");
  27709. messageSends: ["deprecatedAPI:", "core"]
  27710. }),
  27711. $globals.SmalltalkImage);
  27712. $globals.SmalltalkImage.klass.iVarNames = ['current'];
  27713. $core.addMethod(
  27714. $core.method({
  27715. selector: "current",
  27716. protocol: 'instance creation',
  27717. fn: function (){
  27718. var self=this;
  27719. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  27720. return $core.withContext(function($ctx1) {
  27721. //>>excludeEnd("ctx");
  27722. var $2,$1,$receiver;
  27723. $2=self["@current"];
  27724. if(($receiver = $2) == null || $receiver.isNil){
  27725. self["@current"]=(
  27726. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  27727. $ctx1.supercall = true,
  27728. //>>excludeEnd("ctx");
  27729. $globals.SmalltalkImage.klass.superclass.fn.prototype._new.apply($recv(self), []));
  27730. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  27731. $ctx1.supercall = false;
  27732. //>>excludeEnd("ctx");;
  27733. $1=self["@current"];
  27734. } else {
  27735. self._deprecatedAPI();
  27736. $1=self["@current"];
  27737. };
  27738. return $1;
  27739. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  27740. }, function($ctx1) {$ctx1.fill(self,"current",{},$globals.SmalltalkImage.klass)});
  27741. //>>excludeEnd("ctx");
  27742. },
  27743. //>>excludeStart("ide", pragmas.excludeIdeData);
  27744. args: [],
  27745. source: "current\x0a\x09^ current ifNil: [ current := super new ] ifNotNil: [ self deprecatedAPI. current ]",
  27746. referencedClasses: [],
  27747. //>>excludeEnd("ide");
  27748. messageSends: ["ifNil:ifNotNil:", "new", "deprecatedAPI"]
  27749. }),
  27750. $globals.SmalltalkImage.klass);
  27751. $core.addMethod(
  27752. $core.method({
  27753. selector: "initialize",
  27754. protocol: 'initialization',
  27755. fn: function (){
  27756. var self=this;
  27757. var st;
  27758. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  27759. return $core.withContext(function($ctx1) {
  27760. //>>excludeEnd("ctx");
  27761. st=self._current();
  27762. $recv($recv(st)._globals())._at_put_("Smalltalk",st);
  27763. return self;
  27764. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  27765. }, function($ctx1) {$ctx1.fill(self,"initialize",{st:st},$globals.SmalltalkImage.klass)});
  27766. //>>excludeEnd("ctx");
  27767. },
  27768. //>>excludeStart("ide", pragmas.excludeIdeData);
  27769. args: [],
  27770. source: "initialize\x0a\x09| st |\x0a\x09st := self current.\x0a\x09st globals at: 'Smalltalk' put: st",
  27771. referencedClasses: [],
  27772. //>>excludeEnd("ide");
  27773. messageSends: ["current", "at:put:", "globals"]
  27774. }),
  27775. $globals.SmalltalkImage.klass);
  27776. $core.addMethod(
  27777. $core.method({
  27778. selector: "new",
  27779. protocol: 'instance creation',
  27780. fn: function (){
  27781. var self=this;
  27782. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  27783. return $core.withContext(function($ctx1) {
  27784. //>>excludeEnd("ctx");
  27785. self._shouldNotImplement();
  27786. return self;
  27787. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  27788. }, function($ctx1) {$ctx1.fill(self,"new",{},$globals.SmalltalkImage.klass)});
  27789. //>>excludeEnd("ctx");
  27790. },
  27791. //>>excludeStart("ide", pragmas.excludeIdeData);
  27792. args: [],
  27793. source: "new\x0a\x09self shouldNotImplement",
  27794. referencedClasses: [],
  27795. //>>excludeEnd("ide");
  27796. messageSends: ["shouldNotImplement"]
  27797. }),
  27798. $globals.SmalltalkImage.klass);
  27799. $core.addMethod(
  27800. $core.method({
  27801. selector: "do:displayingProgress:",
  27802. protocol: '*Kernel-Infrastructure',
  27803. fn: function (aBlock,aString){
  27804. var self=this;
  27805. function $ProgressHandler(){return $globals.ProgressHandler||(typeof ProgressHandler=="undefined"?nil:ProgressHandler)}
  27806. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  27807. return $core.withContext(function($ctx1) {
  27808. //>>excludeEnd("ctx");
  27809. $recv($ProgressHandler())._do_on_displaying_(aBlock,self,aString);
  27810. return self;
  27811. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  27812. }, function($ctx1) {$ctx1.fill(self,"do:displayingProgress:",{aBlock:aBlock,aString:aString},$globals.SequenceableCollection)});
  27813. //>>excludeEnd("ctx");
  27814. },
  27815. //>>excludeStart("ide", pragmas.excludeIdeData);
  27816. args: ["aBlock", "aString"],
  27817. source: "do: aBlock displayingProgress: aString\x0a\x09ProgressHandler \x0a\x09\x09do: aBlock \x0a\x09\x09on: self \x0a\x09\x09displaying: aString",
  27818. referencedClasses: ["ProgressHandler"],
  27819. //>>excludeEnd("ide");
  27820. messageSends: ["do:on:displaying:"]
  27821. }),
  27822. $globals.SequenceableCollection);
  27823. $core.addMethod(
  27824. $core.method({
  27825. selector: "asJavaScriptPropertyName",
  27826. protocol: '*Kernel-Infrastructure',
  27827. fn: function (){
  27828. var self=this;
  27829. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  27830. return $core.withContext(function($ctx1) {
  27831. //>>excludeEnd("ctx");
  27832. return $core.st2prop(self);
  27833. return self;
  27834. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  27835. }, function($ctx1) {$ctx1.fill(self,"asJavaScriptPropertyName",{},$globals.String)});
  27836. //>>excludeEnd("ctx");
  27837. },
  27838. //>>excludeStart("ide", pragmas.excludeIdeData);
  27839. args: [],
  27840. source: "asJavaScriptPropertyName\x0a<return $core.st2prop(self)>",
  27841. referencedClasses: [],
  27842. //>>excludeEnd("ide");
  27843. messageSends: []
  27844. }),
  27845. $globals.String);
  27846. $core.addMethod(
  27847. $core.method({
  27848. selector: "asJavaScriptSelector",
  27849. protocol: '*Kernel-Infrastructure',
  27850. fn: function (){
  27851. var self=this;
  27852. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  27853. return $core.withContext(function($ctx1) {
  27854. //>>excludeEnd("ctx");
  27855. var $1;
  27856. $1=self._asJavaScriptPropertyName();
  27857. return $1;
  27858. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  27859. }, function($ctx1) {$ctx1.fill(self,"asJavaScriptSelector",{},$globals.String)});
  27860. //>>excludeEnd("ctx");
  27861. },
  27862. //>>excludeStart("ide", pragmas.excludeIdeData);
  27863. args: [],
  27864. source: "asJavaScriptSelector\x0a\x09\x22Cannot add next line as it breaks commit:\x0a\x09self deprecatedAPI: 'Use #asJavaScriptPropertyName'.\x22\x0a\x0a\x09^ self asJavaScriptPropertyName",
  27865. referencedClasses: [],
  27866. //>>excludeEnd("ide");
  27867. messageSends: ["asJavaScriptPropertyName"]
  27868. }),
  27869. $globals.String);
  27870. $core.addMethod(
  27871. $core.method({
  27872. selector: "asSetting",
  27873. protocol: '*Kernel-Infrastructure',
  27874. fn: function (){
  27875. var self=this;
  27876. function $Setting(){return $globals.Setting||(typeof Setting=="undefined"?nil:Setting)}
  27877. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  27878. return $core.withContext(function($ctx1) {
  27879. //>>excludeEnd("ctx");
  27880. var $1;
  27881. $1=$recv($Setting())._at_ifAbsent_(self,nil);
  27882. return $1;
  27883. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  27884. }, function($ctx1) {$ctx1.fill(self,"asSetting",{},$globals.String)});
  27885. //>>excludeEnd("ctx");
  27886. },
  27887. //>>excludeStart("ide", pragmas.excludeIdeData);
  27888. args: [],
  27889. source: "asSetting\x0a\x09^ Setting at: self ifAbsent: nil",
  27890. referencedClasses: ["Setting"],
  27891. //>>excludeEnd("ide");
  27892. messageSends: ["at:ifAbsent:"]
  27893. }),
  27894. $globals.String);
  27895. $core.addMethod(
  27896. $core.method({
  27897. selector: "asSettingIfAbsent:",
  27898. protocol: '*Kernel-Infrastructure',
  27899. fn: function (aString){
  27900. var self=this;
  27901. function $Setting(){return $globals.Setting||(typeof Setting=="undefined"?nil:Setting)}
  27902. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  27903. return $core.withContext(function($ctx1) {
  27904. //>>excludeEnd("ctx");
  27905. var $1;
  27906. $1=$recv($Setting())._at_ifAbsent_(self,aString);
  27907. return $1;
  27908. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  27909. }, function($ctx1) {$ctx1.fill(self,"asSettingIfAbsent:",{aString:aString},$globals.String)});
  27910. //>>excludeEnd("ctx");
  27911. },
  27912. //>>excludeStart("ide", pragmas.excludeIdeData);
  27913. args: ["aString"],
  27914. source: "asSettingIfAbsent: aString\x0a\x09^ Setting at: self ifAbsent: aString",
  27915. referencedClasses: ["Setting"],
  27916. //>>excludeEnd("ide");
  27917. messageSends: ["at:ifAbsent:"]
  27918. }),
  27919. $globals.String);
  27920. $core.addMethod(
  27921. $core.method({
  27922. selector: "settingValue",
  27923. protocol: '*Kernel-Infrastructure',
  27924. fn: function (){
  27925. var self=this;
  27926. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  27927. return $core.withContext(function($ctx1) {
  27928. //>>excludeEnd("ctx");
  27929. var $1;
  27930. $1=$recv(self._asSetting())._value();
  27931. return $1;
  27932. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  27933. }, function($ctx1) {$ctx1.fill(self,"settingValue",{},$globals.String)});
  27934. //>>excludeEnd("ctx");
  27935. },
  27936. //>>excludeStart("ide", pragmas.excludeIdeData);
  27937. args: [],
  27938. source: "settingValue\x0a\x09^ self asSetting value",
  27939. referencedClasses: [],
  27940. //>>excludeEnd("ide");
  27941. messageSends: ["value", "asSetting"]
  27942. }),
  27943. $globals.String);
  27944. $core.addMethod(
  27945. $core.method({
  27946. selector: "settingValue:",
  27947. protocol: '*Kernel-Infrastructure',
  27948. fn: function (aString){
  27949. var self=this;
  27950. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  27951. return $core.withContext(function($ctx1) {
  27952. //>>excludeEnd("ctx");
  27953. var $1;
  27954. $1=$recv(self._asSetting())._value_(aString);
  27955. return $1;
  27956. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  27957. }, function($ctx1) {$ctx1.fill(self,"settingValue:",{aString:aString},$globals.String)});
  27958. //>>excludeEnd("ctx");
  27959. },
  27960. //>>excludeStart("ide", pragmas.excludeIdeData);
  27961. args: ["aString"],
  27962. source: "settingValue: aString\x0a\x09^ self asSetting value: aString",
  27963. referencedClasses: [],
  27964. //>>excludeEnd("ide");
  27965. messageSends: ["value:", "asSetting"]
  27966. }),
  27967. $globals.String);
  27968. $core.addMethod(
  27969. $core.method({
  27970. selector: "settingValueIfAbsent:",
  27971. protocol: '*Kernel-Infrastructure',
  27972. fn: function (aString){
  27973. var self=this;
  27974. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  27975. return $core.withContext(function($ctx1) {
  27976. //>>excludeEnd("ctx");
  27977. var $1;
  27978. $1=$recv(self._asSettingIfAbsent_(aString))._value();
  27979. return $1;
  27980. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  27981. }, function($ctx1) {$ctx1.fill(self,"settingValueIfAbsent:",{aString:aString},$globals.String)});
  27982. //>>excludeEnd("ctx");
  27983. },
  27984. //>>excludeStart("ide", pragmas.excludeIdeData);
  27985. args: ["aString"],
  27986. source: "settingValueIfAbsent: aString\x0a\x09^ (self asSettingIfAbsent: aString) value",
  27987. referencedClasses: [],
  27988. //>>excludeEnd("ide");
  27989. messageSends: ["value", "asSettingIfAbsent:"]
  27990. }),
  27991. $globals.String);
  27992. });
  27993. define("amber_core/Kernel-Exceptions", ["amber/boot", "amber_core/Kernel-Objects"], function($boot){
  27994. var $core=$boot.api,nil=$boot.nil,$recv=$boot.asReceiver,$globals=$boot.globals;
  27995. var smalltalk=$core,_st=$recv,globals=$globals;
  27996. $core.addPackage('Kernel-Exceptions');
  27997. $core.packages["Kernel-Exceptions"].transport = {"type":"amd","amdNamespace":"amber_core"};
  27998. $core.addClass('Error', $globals.Object, ['messageText'], 'Kernel-Exceptions');
  27999. //>>excludeStart("ide", pragmas.excludeIdeData);
  28000. $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.";
  28001. //>>excludeEnd("ide");
  28002. $core.addMethod(
  28003. $core.method({
  28004. selector: "beHandled",
  28005. protocol: 'accessing',
  28006. fn: function (){
  28007. var self=this;
  28008. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  28009. return $core.withContext(function($ctx1) {
  28010. //>>excludeEnd("ctx");
  28011. self.amberHandled = true;
  28012. return self;
  28013. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  28014. }, function($ctx1) {$ctx1.fill(self,"beHandled",{},$globals.Error)});
  28015. //>>excludeEnd("ctx");
  28016. },
  28017. //>>excludeStart("ide", pragmas.excludeIdeData);
  28018. args: [],
  28019. source: "beHandled\x0a\x09<self.amberHandled = true>",
  28020. referencedClasses: [],
  28021. //>>excludeEnd("ide");
  28022. messageSends: []
  28023. }),
  28024. $globals.Error);
  28025. $core.addMethod(
  28026. $core.method({
  28027. selector: "beUnhandled",
  28028. protocol: 'accessing',
  28029. fn: function (){
  28030. var self=this;
  28031. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  28032. return $core.withContext(function($ctx1) {
  28033. //>>excludeEnd("ctx");
  28034. self.amberHandled = false;
  28035. return self;
  28036. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  28037. }, function($ctx1) {$ctx1.fill(self,"beUnhandled",{},$globals.Error)});
  28038. //>>excludeEnd("ctx");
  28039. },
  28040. //>>excludeStart("ide", pragmas.excludeIdeData);
  28041. args: [],
  28042. source: "beUnhandled\x0a\x09<self.amberHandled = false>",
  28043. referencedClasses: [],
  28044. //>>excludeEnd("ide");
  28045. messageSends: []
  28046. }),
  28047. $globals.Error);
  28048. $core.addMethod(
  28049. $core.method({
  28050. selector: "context",
  28051. protocol: 'accessing',
  28052. fn: function (){
  28053. var self=this;
  28054. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  28055. return $core.withContext(function($ctx1) {
  28056. //>>excludeEnd("ctx");
  28057. return self.context;
  28058. return self;
  28059. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  28060. }, function($ctx1) {$ctx1.fill(self,"context",{},$globals.Error)});
  28061. //>>excludeEnd("ctx");
  28062. },
  28063. //>>excludeStart("ide", pragmas.excludeIdeData);
  28064. args: [],
  28065. source: "context\x0a\x09<return self.context>",
  28066. referencedClasses: [],
  28067. //>>excludeEnd("ide");
  28068. messageSends: []
  28069. }),
  28070. $globals.Error);
  28071. $core.addMethod(
  28072. $core.method({
  28073. selector: "initialize",
  28074. protocol: 'initialization',
  28075. fn: function (){
  28076. var self=this;
  28077. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  28078. return $core.withContext(function($ctx1) {
  28079. //>>excludeEnd("ctx");
  28080. self._messageText_("Errorclass: ".__comma($recv(self._class())._name()));
  28081. return self;
  28082. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  28083. }, function($ctx1) {$ctx1.fill(self,"initialize",{},$globals.Error)});
  28084. //>>excludeEnd("ctx");
  28085. },
  28086. //>>excludeStart("ide", pragmas.excludeIdeData);
  28087. args: [],
  28088. source: "initialize\x0a\x09self messageText: 'Errorclass: ', (self class name).",
  28089. referencedClasses: [],
  28090. //>>excludeEnd("ide");
  28091. messageSends: ["messageText:", ",", "name", "class"]
  28092. }),
  28093. $globals.Error);
  28094. $core.addMethod(
  28095. $core.method({
  28096. selector: "isSmalltalkError",
  28097. protocol: 'testing',
  28098. fn: function (){
  28099. var self=this;
  28100. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  28101. return $core.withContext(function($ctx1) {
  28102. //>>excludeEnd("ctx");
  28103. return self.smalltalkError === true;
  28104. return self;
  28105. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  28106. }, function($ctx1) {$ctx1.fill(self,"isSmalltalkError",{},$globals.Error)});
  28107. //>>excludeEnd("ctx");
  28108. },
  28109. //>>excludeStart("ide", pragmas.excludeIdeData);
  28110. args: [],
  28111. source: "isSmalltalkError\x0a\x09<return self.smalltalkError === true>",
  28112. referencedClasses: [],
  28113. //>>excludeEnd("ide");
  28114. messageSends: []
  28115. }),
  28116. $globals.Error);
  28117. $core.addMethod(
  28118. $core.method({
  28119. selector: "jsStack",
  28120. protocol: 'accessing',
  28121. fn: function (){
  28122. var self=this;
  28123. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  28124. return $core.withContext(function($ctx1) {
  28125. //>>excludeEnd("ctx");
  28126. return self.stack;
  28127. return self;
  28128. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  28129. }, function($ctx1) {$ctx1.fill(self,"jsStack",{},$globals.Error)});
  28130. //>>excludeEnd("ctx");
  28131. },
  28132. //>>excludeStart("ide", pragmas.excludeIdeData);
  28133. args: [],
  28134. source: "jsStack\x0a\x09<return self.stack>",
  28135. referencedClasses: [],
  28136. //>>excludeEnd("ide");
  28137. messageSends: []
  28138. }),
  28139. $globals.Error);
  28140. $core.addMethod(
  28141. $core.method({
  28142. selector: "messageText",
  28143. protocol: 'accessing',
  28144. fn: function (){
  28145. var self=this;
  28146. var $1;
  28147. $1=self["@messageText"];
  28148. return $1;
  28149. },
  28150. //>>excludeStart("ide", pragmas.excludeIdeData);
  28151. args: [],
  28152. source: "messageText\x0a\x09^ messageText",
  28153. referencedClasses: [],
  28154. //>>excludeEnd("ide");
  28155. messageSends: []
  28156. }),
  28157. $globals.Error);
  28158. $core.addMethod(
  28159. $core.method({
  28160. selector: "messageText:",
  28161. protocol: 'accessing',
  28162. fn: function (aString){
  28163. var self=this;
  28164. self["@messageText"]=aString;
  28165. return self;
  28166. },
  28167. //>>excludeStart("ide", pragmas.excludeIdeData);
  28168. args: ["aString"],
  28169. source: "messageText: aString\x0a\x09messageText := aString",
  28170. referencedClasses: [],
  28171. //>>excludeEnd("ide");
  28172. messageSends: []
  28173. }),
  28174. $globals.Error);
  28175. $core.addMethod(
  28176. $core.method({
  28177. selector: "resignal",
  28178. protocol: 'signaling',
  28179. fn: function (){
  28180. var self=this;
  28181. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  28182. return $core.withContext(function($ctx1) {
  28183. //>>excludeEnd("ctx");
  28184. self.amberHandled = false;
  28185. throw(self);
  28186. ;
  28187. return self;
  28188. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  28189. }, function($ctx1) {$ctx1.fill(self,"resignal",{},$globals.Error)});
  28190. //>>excludeEnd("ctx");
  28191. },
  28192. //>>excludeStart("ide", pragmas.excludeIdeData);
  28193. args: [],
  28194. source: "resignal\x0a\x09\x22Resignal the receiver without changing its exception context\x22\x0a\x09\x0a\x09<\x0a\x09\x09self.amberHandled = false;\x0a\x09\x09throw(self);\x0a\x09>",
  28195. referencedClasses: [],
  28196. //>>excludeEnd("ide");
  28197. messageSends: []
  28198. }),
  28199. $globals.Error);
  28200. $core.addMethod(
  28201. $core.method({
  28202. selector: "signal",
  28203. protocol: 'signaling',
  28204. fn: function (){
  28205. var self=this;
  28206. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  28207. return $core.withContext(function($ctx1) {
  28208. //>>excludeEnd("ctx");
  28209. self.amberHandled = false;
  28210. self.context = $core.getThisContext();
  28211. self.smalltalkError = true;
  28212. throw self;
  28213. ;
  28214. return self;
  28215. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  28216. }, function($ctx1) {$ctx1.fill(self,"signal",{},$globals.Error)});
  28217. //>>excludeEnd("ctx");
  28218. },
  28219. //>>excludeStart("ide", pragmas.excludeIdeData);
  28220. args: [],
  28221. source: "signal\x0a\x09<\x0a\x09\x09self.amberHandled = false;\x0a\x09\x09self.context = $core.getThisContext(); \x0a\x09\x09self.smalltalkError = true;\x0a\x09\x09throw self;\x0a\x09>",
  28222. referencedClasses: [],
  28223. //>>excludeEnd("ide");
  28224. messageSends: []
  28225. }),
  28226. $globals.Error);
  28227. $core.addMethod(
  28228. $core.method({
  28229. selector: "signal:",
  28230. protocol: 'signaling',
  28231. fn: function (aString){
  28232. var self=this;
  28233. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  28234. return $core.withContext(function($ctx1) {
  28235. //>>excludeEnd("ctx");
  28236. self._messageText_(aString);
  28237. self._signal();
  28238. return self;
  28239. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  28240. }, function($ctx1) {$ctx1.fill(self,"signal:",{aString:aString},$globals.Error)});
  28241. //>>excludeEnd("ctx");
  28242. },
  28243. //>>excludeStart("ide", pragmas.excludeIdeData);
  28244. args: ["aString"],
  28245. source: "signal: aString\x0a\x09self messageText: aString.\x0a\x09self signal",
  28246. referencedClasses: [],
  28247. //>>excludeEnd("ide");
  28248. messageSends: ["messageText:", "signal"]
  28249. }),
  28250. $globals.Error);
  28251. $core.addMethod(
  28252. $core.method({
  28253. selector: "signalerContext",
  28254. protocol: 'accessing',
  28255. fn: function (){
  28256. var self=this;
  28257. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  28258. return $core.withContext(function($ctx1) {
  28259. //>>excludeEnd("ctx");
  28260. var $1;
  28261. $1=self._signalerContextFrom_(self._context());
  28262. return $1;
  28263. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  28264. }, function($ctx1) {$ctx1.fill(self,"signalerContext",{},$globals.Error)});
  28265. //>>excludeEnd("ctx");
  28266. },
  28267. //>>excludeStart("ide", pragmas.excludeIdeData);
  28268. args: [],
  28269. source: "signalerContext\x0a\x09^ self signalerContextFrom: self context",
  28270. referencedClasses: [],
  28271. //>>excludeEnd("ide");
  28272. messageSends: ["signalerContextFrom:", "context"]
  28273. }),
  28274. $globals.Error);
  28275. $core.addMethod(
  28276. $core.method({
  28277. selector: "signalerContextFrom:",
  28278. protocol: 'accessing',
  28279. fn: function (aContext){
  28280. var self=this;
  28281. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  28282. return $core.withContext(function($ctx1) {
  28283. //>>excludeEnd("ctx");
  28284. var $4,$3,$2,$1;
  28285. $1=$recv(aContext)._findContextSuchThat_((function(context){
  28286. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  28287. return $core.withContext(function($ctx2) {
  28288. //>>excludeEnd("ctx");
  28289. $4=$recv(context)._receiver();
  28290. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  28291. $ctx2.sendIdx["receiver"]=1;
  28292. //>>excludeEnd("ctx");
  28293. $3=$recv($4).__eq_eq(self);
  28294. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  28295. $ctx2.sendIdx["=="]=1;
  28296. //>>excludeEnd("ctx");
  28297. $2=$recv($3)._or_((function(){
  28298. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  28299. return $core.withContext(function($ctx3) {
  28300. //>>excludeEnd("ctx");
  28301. return $recv($recv(context)._receiver()).__eq_eq(self._class());
  28302. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  28303. }, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)});
  28304. //>>excludeEnd("ctx");
  28305. }));
  28306. return $recv($2)._not();
  28307. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  28308. }, function($ctx2) {$ctx2.fillBlock({context:context},$ctx1,1)});
  28309. //>>excludeEnd("ctx");
  28310. }));
  28311. return $1;
  28312. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  28313. }, function($ctx1) {$ctx1.fill(self,"signalerContextFrom:",{aContext:aContext},$globals.Error)});
  28314. //>>excludeEnd("ctx");
  28315. },
  28316. //>>excludeStart("ide", pragmas.excludeIdeData);
  28317. args: ["aContext"],
  28318. source: "signalerContextFrom: aContext\x0a\x09\x22Find the first sender of signal(:), the first context which is neither \x0a\x09for an instance method nor for a class side method of Exception (or subclass).\x0a\x09This will make sure that the same context is found for both, `Error signal` \x0a\x09and `Error new signal`\x22\x0a\x0a\x09^ aContext findContextSuchThat: [ :context |\x0a\x09\x09(context receiver == self \x0a\x09\x09or: [ context receiver == self class ]) not ]",
  28319. referencedClasses: [],
  28320. //>>excludeEnd("ide");
  28321. messageSends: ["findContextSuchThat:", "not", "or:", "==", "receiver", "class"]
  28322. }),
  28323. $globals.Error);
  28324. $core.addMethod(
  28325. $core.method({
  28326. selector: "wasHandled",
  28327. protocol: 'testing',
  28328. fn: function (){
  28329. var self=this;
  28330. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  28331. return $core.withContext(function($ctx1) {
  28332. //>>excludeEnd("ctx");
  28333. return self.amberHandled || false;
  28334. return self;
  28335. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  28336. }, function($ctx1) {$ctx1.fill(self,"wasHandled",{},$globals.Error)});
  28337. //>>excludeEnd("ctx");
  28338. },
  28339. //>>excludeStart("ide", pragmas.excludeIdeData);
  28340. args: [],
  28341. source: "wasHandled\x0a\x09<return self.amberHandled || false>",
  28342. referencedClasses: [],
  28343. //>>excludeEnd("ide");
  28344. messageSends: []
  28345. }),
  28346. $globals.Error);
  28347. $core.addMethod(
  28348. $core.method({
  28349. selector: "heliosClass",
  28350. protocol: 'helios',
  28351. fn: function (){
  28352. var self=this;
  28353. return "exception";
  28354. },
  28355. //>>excludeStart("ide", pragmas.excludeIdeData);
  28356. args: [],
  28357. source: "heliosClass\x0a\x09^ 'exception'",
  28358. referencedClasses: [],
  28359. //>>excludeEnd("ide");
  28360. messageSends: []
  28361. }),
  28362. $globals.Error.klass);
  28363. $core.addMethod(
  28364. $core.method({
  28365. selector: "signal",
  28366. protocol: 'instance creation',
  28367. fn: function (){
  28368. var self=this;
  28369. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  28370. return $core.withContext(function($ctx1) {
  28371. //>>excludeEnd("ctx");
  28372. var $1;
  28373. $1=$recv(self._new())._signal();
  28374. return $1;
  28375. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  28376. }, function($ctx1) {$ctx1.fill(self,"signal",{},$globals.Error.klass)});
  28377. //>>excludeEnd("ctx");
  28378. },
  28379. //>>excludeStart("ide", pragmas.excludeIdeData);
  28380. args: [],
  28381. source: "signal\x0a\x09^ self new signal",
  28382. referencedClasses: [],
  28383. //>>excludeEnd("ide");
  28384. messageSends: ["signal", "new"]
  28385. }),
  28386. $globals.Error.klass);
  28387. $core.addMethod(
  28388. $core.method({
  28389. selector: "signal:",
  28390. protocol: 'instance creation',
  28391. fn: function (aString){
  28392. var self=this;
  28393. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  28394. return $core.withContext(function($ctx1) {
  28395. //>>excludeEnd("ctx");
  28396. var $1;
  28397. $1=$recv(self._new())._signal_(aString);
  28398. return $1;
  28399. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  28400. }, function($ctx1) {$ctx1.fill(self,"signal:",{aString:aString},$globals.Error.klass)});
  28401. //>>excludeEnd("ctx");
  28402. },
  28403. //>>excludeStart("ide", pragmas.excludeIdeData);
  28404. args: ["aString"],
  28405. source: "signal: aString\x0a\x09^ self new\x0a\x09\x09signal: aString",
  28406. referencedClasses: [],
  28407. //>>excludeEnd("ide");
  28408. messageSends: ["signal:", "new"]
  28409. }),
  28410. $globals.Error.klass);
  28411. $core.addClass('Halt', $globals.Error, [], 'Kernel-Exceptions');
  28412. //>>excludeStart("ide", pragmas.excludeIdeData);
  28413. $globals.Halt.comment="I am provided to support `Object>>#halt`.";
  28414. //>>excludeEnd("ide");
  28415. $core.addMethod(
  28416. $core.method({
  28417. selector: "messageText",
  28418. protocol: 'accessing',
  28419. fn: function (){
  28420. var self=this;
  28421. return "Halt encountered";
  28422. },
  28423. //>>excludeStart("ide", pragmas.excludeIdeData);
  28424. args: [],
  28425. source: "messageText\x0a\x09^ 'Halt encountered'",
  28426. referencedClasses: [],
  28427. //>>excludeEnd("ide");
  28428. messageSends: []
  28429. }),
  28430. $globals.Halt);
  28431. $core.addMethod(
  28432. $core.method({
  28433. selector: "signalerContextFrom:",
  28434. protocol: 'accessing',
  28435. fn: function (aContext){
  28436. var self=this;
  28437. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  28438. return $core.withContext(function($ctx1) {
  28439. //>>excludeEnd("ctx");
  28440. var $4,$3,$2,$1;
  28441. $1=$recv(aContext)._findContextSuchThat_((function(context){
  28442. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  28443. return $core.withContext(function($ctx2) {
  28444. //>>excludeEnd("ctx");
  28445. $4=$recv(context)._receiver();
  28446. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  28447. $ctx2.sendIdx["receiver"]=1;
  28448. //>>excludeEnd("ctx");
  28449. $3=$recv($4).__eq_eq(self);
  28450. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  28451. $ctx2.sendIdx["=="]=1;
  28452. //>>excludeEnd("ctx");
  28453. $2=$recv($3)._or_((function(){
  28454. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  28455. return $core.withContext(function($ctx3) {
  28456. //>>excludeEnd("ctx");
  28457. return $recv($recv($recv(context)._receiver()).__eq_eq(self._class()))._or_((function(){
  28458. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  28459. return $core.withContext(function($ctx4) {
  28460. //>>excludeEnd("ctx");
  28461. return $recv($recv($recv(context)._method())._selector()).__eq("halt");
  28462. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  28463. }, function($ctx4) {$ctx4.fillBlock({},$ctx3,3)});
  28464. //>>excludeEnd("ctx");
  28465. }));
  28466. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  28467. }, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)});
  28468. //>>excludeEnd("ctx");
  28469. }));
  28470. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  28471. $ctx2.sendIdx["or:"]=1;
  28472. //>>excludeEnd("ctx");
  28473. return $recv($2)._not();
  28474. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  28475. }, function($ctx2) {$ctx2.fillBlock({context:context},$ctx1,1)});
  28476. //>>excludeEnd("ctx");
  28477. }));
  28478. return $1;
  28479. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  28480. }, function($ctx1) {$ctx1.fill(self,"signalerContextFrom:",{aContext:aContext},$globals.Halt)});
  28481. //>>excludeEnd("ctx");
  28482. },
  28483. //>>excludeStart("ide", pragmas.excludeIdeData);
  28484. args: ["aContext"],
  28485. source: "signalerContextFrom: aContext\x0a\x09\x22specialized version to find the proper context to open the debugger on.\x0a\x09This will find the first context whose method is no longer on `Halt` or \x0a\x09`Halt class` nor is `#halt` method itself.\x22\x0a\x09\x0a\x09^ aContext findContextSuchThat: [ :context |\x0a\x09\x09(context receiver == self \x0a\x09\x09or: [ (context receiver == self class) \x0a\x09\x09or: [ context method selector = #halt ]]) not ]",
  28486. referencedClasses: [],
  28487. //>>excludeEnd("ide");
  28488. messageSends: ["findContextSuchThat:", "not", "or:", "==", "receiver", "class", "=", "selector", "method"]
  28489. }),
  28490. $globals.Halt);
  28491. $core.addClass('JavaScriptException', $globals.Error, ['exception'], 'Kernel-Exceptions');
  28492. //>>excludeStart("ide", pragmas.excludeIdeData);
  28493. $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:`";
  28494. //>>excludeEnd("ide");
  28495. $core.addMethod(
  28496. $core.method({
  28497. selector: "context:",
  28498. protocol: 'accessing',
  28499. fn: function (aMethodContext){
  28500. var self=this;
  28501. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  28502. return $core.withContext(function($ctx1) {
  28503. //>>excludeEnd("ctx");
  28504. self.context = aMethodContext;
  28505. return self;
  28506. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  28507. }, function($ctx1) {$ctx1.fill(self,"context:",{aMethodContext:aMethodContext},$globals.JavaScriptException)});
  28508. //>>excludeEnd("ctx");
  28509. },
  28510. //>>excludeStart("ide", pragmas.excludeIdeData);
  28511. args: ["aMethodContext"],
  28512. source: "context: aMethodContext\x0a\x09\x22Set the context from the outside.\x0a\x09See boot.js `inContext()` exception handling\x22\x0a\x09\x0a\x09<self.context = aMethodContext>",
  28513. referencedClasses: [],
  28514. //>>excludeEnd("ide");
  28515. messageSends: []
  28516. }),
  28517. $globals.JavaScriptException);
  28518. $core.addMethod(
  28519. $core.method({
  28520. selector: "exception",
  28521. protocol: 'accessing',
  28522. fn: function (){
  28523. var self=this;
  28524. var $1;
  28525. $1=self["@exception"];
  28526. return $1;
  28527. },
  28528. //>>excludeStart("ide", pragmas.excludeIdeData);
  28529. args: [],
  28530. source: "exception\x0a\x09^ exception",
  28531. referencedClasses: [],
  28532. //>>excludeEnd("ide");
  28533. messageSends: []
  28534. }),
  28535. $globals.JavaScriptException);
  28536. $core.addMethod(
  28537. $core.method({
  28538. selector: "exception:",
  28539. protocol: 'accessing',
  28540. fn: function (anException){
  28541. var self=this;
  28542. self["@exception"]=anException;
  28543. return self;
  28544. },
  28545. //>>excludeStart("ide", pragmas.excludeIdeData);
  28546. args: ["anException"],
  28547. source: "exception: anException\x0a\x09exception := anException",
  28548. referencedClasses: [],
  28549. //>>excludeEnd("ide");
  28550. messageSends: []
  28551. }),
  28552. $globals.JavaScriptException);
  28553. $core.addMethod(
  28554. $core.method({
  28555. selector: "messageText",
  28556. protocol: 'accessing',
  28557. fn: function (){
  28558. var self=this;
  28559. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  28560. return $core.withContext(function($ctx1) {
  28561. //>>excludeEnd("ctx");
  28562. return 'JavaScript exception: ' + self["@exception"].toString();
  28563. return self;
  28564. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  28565. }, function($ctx1) {$ctx1.fill(self,"messageText",{},$globals.JavaScriptException)});
  28566. //>>excludeEnd("ctx");
  28567. },
  28568. //>>excludeStart("ide", pragmas.excludeIdeData);
  28569. args: [],
  28570. source: "messageText\x0a\x09<return 'JavaScript exception: ' + self[\x22@exception\x22].toString()>",
  28571. referencedClasses: [],
  28572. //>>excludeEnd("ide");
  28573. messageSends: []
  28574. }),
  28575. $globals.JavaScriptException);
  28576. $core.addMethod(
  28577. $core.method({
  28578. selector: "on:",
  28579. protocol: 'instance creation',
  28580. fn: function (anException){
  28581. var self=this;
  28582. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  28583. return $core.withContext(function($ctx1) {
  28584. //>>excludeEnd("ctx");
  28585. var $2,$3,$1;
  28586. $2=self._new();
  28587. $recv($2)._exception_(anException);
  28588. $3=$recv($2)._yourself();
  28589. $1=$3;
  28590. return $1;
  28591. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  28592. }, function($ctx1) {$ctx1.fill(self,"on:",{anException:anException},$globals.JavaScriptException.klass)});
  28593. //>>excludeEnd("ctx");
  28594. },
  28595. //>>excludeStart("ide", pragmas.excludeIdeData);
  28596. args: ["anException"],
  28597. source: "on: anException\x0a\x09^ self new\x0a\x09\x09exception: anException;\x0a\x09\x09yourself",
  28598. referencedClasses: [],
  28599. //>>excludeEnd("ide");
  28600. messageSends: ["exception:", "new", "yourself"]
  28601. }),
  28602. $globals.JavaScriptException.klass);
  28603. $core.addMethod(
  28604. $core.method({
  28605. selector: "on:context:",
  28606. protocol: 'instance creation',
  28607. fn: function (anException,aMethodContext){
  28608. var self=this;
  28609. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  28610. return $core.withContext(function($ctx1) {
  28611. //>>excludeEnd("ctx");
  28612. var $2,$3,$1;
  28613. $2=self._new();
  28614. $recv($2)._exception_(anException);
  28615. $recv($2)._context_(aMethodContext);
  28616. $3=$recv($2)._yourself();
  28617. $1=$3;
  28618. return $1;
  28619. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  28620. }, function($ctx1) {$ctx1.fill(self,"on:context:",{anException:anException,aMethodContext:aMethodContext},$globals.JavaScriptException.klass)});
  28621. //>>excludeEnd("ctx");
  28622. },
  28623. //>>excludeStart("ide", pragmas.excludeIdeData);
  28624. args: ["anException", "aMethodContext"],
  28625. source: "on: anException context: aMethodContext\x0a\x09^ self new\x0a\x09\x09exception: anException;\x0a\x09\x09context: aMethodContext;\x0a\x09\x09yourself",
  28626. referencedClasses: [],
  28627. //>>excludeEnd("ide");
  28628. messageSends: ["exception:", "new", "context:", "yourself"]
  28629. }),
  28630. $globals.JavaScriptException.klass);
  28631. $core.addClass('MessageNotUnderstood', $globals.Error, ['message', 'receiver'], 'Kernel-Exceptions');
  28632. //>>excludeStart("ide", pragmas.excludeIdeData);
  28633. $globals.MessageNotUnderstood.comment="This exception is provided to support `Object>>doesNotUnderstand:`.";
  28634. //>>excludeEnd("ide");
  28635. $core.addMethod(
  28636. $core.method({
  28637. selector: "message",
  28638. protocol: 'accessing',
  28639. fn: function (){
  28640. var self=this;
  28641. var $1;
  28642. $1=self["@message"];
  28643. return $1;
  28644. },
  28645. //>>excludeStart("ide", pragmas.excludeIdeData);
  28646. args: [],
  28647. source: "message\x0a\x09^ message",
  28648. referencedClasses: [],
  28649. //>>excludeEnd("ide");
  28650. messageSends: []
  28651. }),
  28652. $globals.MessageNotUnderstood);
  28653. $core.addMethod(
  28654. $core.method({
  28655. selector: "message:",
  28656. protocol: 'accessing',
  28657. fn: function (aMessage){
  28658. var self=this;
  28659. self["@message"]=aMessage;
  28660. return self;
  28661. },
  28662. //>>excludeStart("ide", pragmas.excludeIdeData);
  28663. args: ["aMessage"],
  28664. source: "message: aMessage\x0a\x09message := aMessage",
  28665. referencedClasses: [],
  28666. //>>excludeEnd("ide");
  28667. messageSends: []
  28668. }),
  28669. $globals.MessageNotUnderstood);
  28670. $core.addMethod(
  28671. $core.method({
  28672. selector: "messageText",
  28673. protocol: 'accessing',
  28674. fn: function (){
  28675. var self=this;
  28676. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  28677. return $core.withContext(function($ctx1) {
  28678. //>>excludeEnd("ctx");
  28679. var $1;
  28680. $1=$recv($recv($recv(self._receiver())._asString()).__comma(" does not understand #")).__comma($recv(self._message())._selector());
  28681. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  28682. $ctx1.sendIdx[","]=1;
  28683. //>>excludeEnd("ctx");
  28684. return $1;
  28685. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  28686. }, function($ctx1) {$ctx1.fill(self,"messageText",{},$globals.MessageNotUnderstood)});
  28687. //>>excludeEnd("ctx");
  28688. },
  28689. //>>excludeStart("ide", pragmas.excludeIdeData);
  28690. args: [],
  28691. source: "messageText\x0a\x09^ self receiver asString, ' does not understand #', self message selector",
  28692. referencedClasses: [],
  28693. //>>excludeEnd("ide");
  28694. messageSends: [",", "asString", "receiver", "selector", "message"]
  28695. }),
  28696. $globals.MessageNotUnderstood);
  28697. $core.addMethod(
  28698. $core.method({
  28699. selector: "receiver",
  28700. protocol: 'accessing',
  28701. fn: function (){
  28702. var self=this;
  28703. var $1;
  28704. $1=self["@receiver"];
  28705. return $1;
  28706. },
  28707. //>>excludeStart("ide", pragmas.excludeIdeData);
  28708. args: [],
  28709. source: "receiver\x0a\x09^ receiver",
  28710. referencedClasses: [],
  28711. //>>excludeEnd("ide");
  28712. messageSends: []
  28713. }),
  28714. $globals.MessageNotUnderstood);
  28715. $core.addMethod(
  28716. $core.method({
  28717. selector: "receiver:",
  28718. protocol: 'accessing',
  28719. fn: function (anObject){
  28720. var self=this;
  28721. self["@receiver"]=anObject;
  28722. return self;
  28723. },
  28724. //>>excludeStart("ide", pragmas.excludeIdeData);
  28725. args: ["anObject"],
  28726. source: "receiver: anObject\x0a\x09receiver := anObject",
  28727. referencedClasses: [],
  28728. //>>excludeEnd("ide");
  28729. messageSends: []
  28730. }),
  28731. $globals.MessageNotUnderstood);
  28732. $core.addClass('NonBooleanReceiver', $globals.Error, ['object'], 'Kernel-Exceptions');
  28733. //>>excludeStart("ide", pragmas.excludeIdeData);
  28734. $globals.NonBooleanReceiver.comment="NonBooleanReceiver exceptions may be thrown when executing inlined methods such as `#ifTrue:` with a non boolean receiver.";
  28735. //>>excludeEnd("ide");
  28736. $core.addMethod(
  28737. $core.method({
  28738. selector: "object",
  28739. protocol: 'accessing',
  28740. fn: function (){
  28741. var self=this;
  28742. var $1;
  28743. $1=self["@object"];
  28744. return $1;
  28745. },
  28746. //>>excludeStart("ide", pragmas.excludeIdeData);
  28747. args: [],
  28748. source: "object\x0a\x09^ object",
  28749. referencedClasses: [],
  28750. //>>excludeEnd("ide");
  28751. messageSends: []
  28752. }),
  28753. $globals.NonBooleanReceiver);
  28754. $core.addMethod(
  28755. $core.method({
  28756. selector: "object:",
  28757. protocol: 'accessing',
  28758. fn: function (anObject){
  28759. var self=this;
  28760. self["@object"]=anObject;
  28761. return self;
  28762. },
  28763. //>>excludeStart("ide", pragmas.excludeIdeData);
  28764. args: ["anObject"],
  28765. source: "object: anObject\x0a\x09object := anObject",
  28766. referencedClasses: [],
  28767. //>>excludeEnd("ide");
  28768. messageSends: []
  28769. }),
  28770. $globals.NonBooleanReceiver);
  28771. $core.addClass('PackageCommitError', $globals.Error, [], 'Kernel-Exceptions');
  28772. //>>excludeStart("ide", pragmas.excludeIdeData);
  28773. $globals.PackageCommitError.comment="I get signaled when an attempt to commit a package has failed.";
  28774. //>>excludeEnd("ide");
  28775. });
  28776. define("amber_core/Kernel-Transcript", ["amber/boot", "amber_core/Kernel-Objects"], function($boot){
  28777. var $core=$boot.api,nil=$boot.nil,$recv=$boot.asReceiver,$globals=$boot.globals;
  28778. var smalltalk=$core,_st=$recv,globals=$globals;
  28779. $core.addPackage('Kernel-Transcript');
  28780. $core.packages["Kernel-Transcript"].transport = {"type":"amd","amdNamespace":"amber_core"};
  28781. $core.addClass('ConsoleTranscript', $globals.Object, ['textarea'], 'Kernel-Transcript');
  28782. //>>excludeStart("ide", pragmas.excludeIdeData);
  28783. $globals.ConsoleTranscript.comment="I am a specific transcript emitting to the JavaScript console.\x0a\x0aIf no other transcript is registered, I am the default.";
  28784. //>>excludeEnd("ide");
  28785. $core.addMethod(
  28786. $core.method({
  28787. selector: "clear",
  28788. protocol: 'printing',
  28789. fn: function (){
  28790. var self=this;
  28791. return self;
  28792. },
  28793. //>>excludeStart("ide", pragmas.excludeIdeData);
  28794. args: [],
  28795. source: "clear\x0a\x09\x22no op\x22",
  28796. referencedClasses: [],
  28797. //>>excludeEnd("ide");
  28798. messageSends: []
  28799. }),
  28800. $globals.ConsoleTranscript);
  28801. $core.addMethod(
  28802. $core.method({
  28803. selector: "cr",
  28804. protocol: 'printing',
  28805. fn: function (){
  28806. var self=this;
  28807. return self;
  28808. },
  28809. //>>excludeStart("ide", pragmas.excludeIdeData);
  28810. args: [],
  28811. source: "cr\x0a\x09\x22no op\x22",
  28812. referencedClasses: [],
  28813. //>>excludeEnd("ide");
  28814. messageSends: []
  28815. }),
  28816. $globals.ConsoleTranscript);
  28817. $core.addMethod(
  28818. $core.method({
  28819. selector: "open",
  28820. protocol: 'actions',
  28821. fn: function (){
  28822. var self=this;
  28823. return self;
  28824. },
  28825. //>>excludeStart("ide", pragmas.excludeIdeData);
  28826. args: [],
  28827. source: "open",
  28828. referencedClasses: [],
  28829. //>>excludeEnd("ide");
  28830. messageSends: []
  28831. }),
  28832. $globals.ConsoleTranscript);
  28833. $core.addMethod(
  28834. $core.method({
  28835. selector: "show:",
  28836. protocol: 'printing',
  28837. fn: function (anObject){
  28838. var self=this;
  28839. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  28840. return $core.withContext(function($ctx1) {
  28841. //>>excludeEnd("ctx");
  28842. console.log(String($recv(anObject)._asString()));
  28843. return self;
  28844. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  28845. }, function($ctx1) {$ctx1.fill(self,"show:",{anObject:anObject},$globals.ConsoleTranscript)});
  28846. //>>excludeEnd("ctx");
  28847. },
  28848. //>>excludeStart("ide", pragmas.excludeIdeData);
  28849. args: ["anObject"],
  28850. 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<console.log(String($recv(anObject)._asString()))>",
  28851. referencedClasses: [],
  28852. //>>excludeEnd("ide");
  28853. messageSends: []
  28854. }),
  28855. $globals.ConsoleTranscript);
  28856. $core.addMethod(
  28857. $core.method({
  28858. selector: "initialize",
  28859. protocol: 'initialization',
  28860. fn: function (){
  28861. var self=this;
  28862. function $Transcript(){return $globals.Transcript||(typeof Transcript=="undefined"?nil:Transcript)}
  28863. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  28864. return $core.withContext(function($ctx1) {
  28865. //>>excludeEnd("ctx");
  28866. $recv($Transcript())._registerIfNone_(self._new());
  28867. return self;
  28868. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  28869. }, function($ctx1) {$ctx1.fill(self,"initialize",{},$globals.ConsoleTranscript.klass)});
  28870. //>>excludeEnd("ctx");
  28871. },
  28872. //>>excludeStart("ide", pragmas.excludeIdeData);
  28873. args: [],
  28874. source: "initialize\x0a\x09Transcript registerIfNone: self new",
  28875. referencedClasses: ["Transcript"],
  28876. //>>excludeEnd("ide");
  28877. messageSends: ["registerIfNone:", "new"]
  28878. }),
  28879. $globals.ConsoleTranscript.klass);
  28880. });
  28881. define("amber_core/Kernel-Announcements", ["amber/boot", "amber_core/Kernel-Objects"], function($boot){
  28882. var $core=$boot.api,nil=$boot.nil,$recv=$boot.asReceiver,$globals=$boot.globals;
  28883. var smalltalk=$core,_st=$recv,globals=$globals;
  28884. $core.addPackage('Kernel-Announcements');
  28885. $core.packages["Kernel-Announcements"].transport = {"type":"amd","amdNamespace":"amber_core"};
  28886. $core.addClass('AnnouncementSubscription', $globals.Object, ['valuable', 'announcementClass'], 'Kernel-Announcements');
  28887. //>>excludeStart("ide", pragmas.excludeIdeData);
  28888. $globals.AnnouncementSubscription.comment="I am a single entry in a subscription registry of an `Announcer`.\x0aSeveral subscriptions by the same object is possible.";
  28889. //>>excludeEnd("ide");
  28890. $core.addMethod(
  28891. $core.method({
  28892. selector: "announcementClass",
  28893. protocol: 'accessing',
  28894. fn: function (){
  28895. var self=this;
  28896. var $1;
  28897. $1=self["@announcementClass"];
  28898. return $1;
  28899. },
  28900. //>>excludeStart("ide", pragmas.excludeIdeData);
  28901. args: [],
  28902. source: "announcementClass\x0a\x09^ announcementClass",
  28903. referencedClasses: [],
  28904. //>>excludeEnd("ide");
  28905. messageSends: []
  28906. }),
  28907. $globals.AnnouncementSubscription);
  28908. $core.addMethod(
  28909. $core.method({
  28910. selector: "announcementClass:",
  28911. protocol: 'accessing',
  28912. fn: function (aClass){
  28913. var self=this;
  28914. self["@announcementClass"]=aClass;
  28915. return self;
  28916. },
  28917. //>>excludeStart("ide", pragmas.excludeIdeData);
  28918. args: ["aClass"],
  28919. source: "announcementClass: aClass\x0a\x09announcementClass := aClass",
  28920. referencedClasses: [],
  28921. //>>excludeEnd("ide");
  28922. messageSends: []
  28923. }),
  28924. $globals.AnnouncementSubscription);
  28925. $core.addMethod(
  28926. $core.method({
  28927. selector: "block",
  28928. protocol: 'accessing',
  28929. fn: function (){
  28930. var self=this;
  28931. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  28932. return $core.withContext(function($ctx1) {
  28933. //>>excludeEnd("ctx");
  28934. var $1;
  28935. self._deprecatedAPI();
  28936. $1=self._valuable();
  28937. return $1;
  28938. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  28939. }, function($ctx1) {$ctx1.fill(self,"block",{},$globals.AnnouncementSubscription)});
  28940. //>>excludeEnd("ctx");
  28941. },
  28942. //>>excludeStart("ide", pragmas.excludeIdeData);
  28943. args: [],
  28944. source: "block\x0a\x09\x22Use #valuable instead\x22\x0a\x09\x0a\x09self deprecatedAPI.\x0a\x09^ self valuable",
  28945. referencedClasses: [],
  28946. //>>excludeEnd("ide");
  28947. messageSends: ["deprecatedAPI", "valuable"]
  28948. }),
  28949. $globals.AnnouncementSubscription);
  28950. $core.addMethod(
  28951. $core.method({
  28952. selector: "block:",
  28953. protocol: 'accessing',
  28954. fn: function (aValuable){
  28955. var self=this;
  28956. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  28957. return $core.withContext(function($ctx1) {
  28958. //>>excludeEnd("ctx");
  28959. self._deprecatedAPI();
  28960. self._valuable_(aValuable);
  28961. return self;
  28962. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  28963. }, function($ctx1) {$ctx1.fill(self,"block:",{aValuable:aValuable},$globals.AnnouncementSubscription)});
  28964. //>>excludeEnd("ctx");
  28965. },
  28966. //>>excludeStart("ide", pragmas.excludeIdeData);
  28967. args: ["aValuable"],
  28968. source: "block: aValuable\x0a\x09\x22Use #valuable instead\x22\x0a\x09\x0a\x09self deprecatedAPI.\x0a\x09self valuable: aValuable",
  28969. referencedClasses: [],
  28970. //>>excludeEnd("ide");
  28971. messageSends: ["deprecatedAPI", "valuable:"]
  28972. }),
  28973. $globals.AnnouncementSubscription);
  28974. $core.addMethod(
  28975. $core.method({
  28976. selector: "deliver:",
  28977. protocol: 'announcing',
  28978. fn: function (anAnnouncement){
  28979. var self=this;
  28980. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  28981. return $core.withContext(function($ctx1) {
  28982. //>>excludeEnd("ctx");
  28983. var $1;
  28984. $1=self._handlesAnnouncement_(anAnnouncement);
  28985. if($core.assert($1)){
  28986. $recv(self._valuable())._value_(anAnnouncement);
  28987. };
  28988. return self;
  28989. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  28990. }, function($ctx1) {$ctx1.fill(self,"deliver:",{anAnnouncement:anAnnouncement},$globals.AnnouncementSubscription)});
  28991. //>>excludeEnd("ctx");
  28992. },
  28993. //>>excludeStart("ide", pragmas.excludeIdeData);
  28994. args: ["anAnnouncement"],
  28995. source: "deliver: anAnnouncement\x0a\x09(self handlesAnnouncement: anAnnouncement)\x0a\x09\x09ifTrue: [ self valuable value: anAnnouncement ]",
  28996. referencedClasses: [],
  28997. //>>excludeEnd("ide");
  28998. messageSends: ["ifTrue:", "handlesAnnouncement:", "value:", "valuable"]
  28999. }),
  29000. $globals.AnnouncementSubscription);
  29001. $core.addMethod(
  29002. $core.method({
  29003. selector: "handlesAnnouncement:",
  29004. protocol: 'announcing',
  29005. fn: function (anAnnouncement){
  29006. var self=this;
  29007. function $Smalltalk(){return $globals.Smalltalk||(typeof Smalltalk=="undefined"?nil:Smalltalk)}
  29008. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  29009. return $core.withContext(function($ctx1) {
  29010. //>>excludeEnd("ctx");
  29011. var $3,$4,$2,$1,$receiver;
  29012. $3=$recv($Smalltalk())._globals();
  29013. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  29014. $ctx1.sendIdx["globals"]=1;
  29015. //>>excludeEnd("ctx");
  29016. $4=$recv(self._announcementClass())._name();
  29017. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  29018. $ctx1.sendIdx["name"]=1;
  29019. //>>excludeEnd("ctx");
  29020. $2=$recv($3)._at_($4);
  29021. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  29022. $ctx1.sendIdx["at:"]=1;
  29023. //>>excludeEnd("ctx");
  29024. if(($receiver = $2) == null || $receiver.isNil){
  29025. return false;
  29026. } else {
  29027. var class_;
  29028. class_=$receiver;
  29029. $1=$recv($recv($recv($Smalltalk())._globals())._at_($recv($recv($recv(anAnnouncement)._class())._theNonMetaClass())._name()))._includesBehavior_(class_);
  29030. };
  29031. return $1;
  29032. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  29033. }, function($ctx1) {$ctx1.fill(self,"handlesAnnouncement:",{anAnnouncement:anAnnouncement},$globals.AnnouncementSubscription)});
  29034. //>>excludeEnd("ctx");
  29035. },
  29036. //>>excludeStart("ide", pragmas.excludeIdeData);
  29037. args: ["anAnnouncement"],
  29038. source: "handlesAnnouncement: anAnnouncement\x0a\x09\x22anAnnouncement might be announced from within another Amber environment\x22\x0a\x09\x0a\x09^ (Smalltalk globals at: self announcementClass name)\x0a\x09\x09ifNil: [ ^ false ]\x0a\x09\x09ifNotNil: [ :class |\x0a\x09\x09(Smalltalk globals at: anAnnouncement class theNonMetaClass name) includesBehavior: class ]",
  29039. referencedClasses: ["Smalltalk"],
  29040. //>>excludeEnd("ide");
  29041. messageSends: ["ifNil:ifNotNil:", "at:", "globals", "name", "announcementClass", "includesBehavior:", "theNonMetaClass", "class"]
  29042. }),
  29043. $globals.AnnouncementSubscription);
  29044. $core.addMethod(
  29045. $core.method({
  29046. selector: "receiver",
  29047. protocol: 'accessing',
  29048. fn: function (){
  29049. var self=this;
  29050. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  29051. return $core.withContext(function($ctx1) {
  29052. //>>excludeEnd("ctx");
  29053. var $1;
  29054. $1=$recv(self._valuable())._receiver();
  29055. return $1;
  29056. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  29057. }, function($ctx1) {$ctx1.fill(self,"receiver",{},$globals.AnnouncementSubscription)});
  29058. //>>excludeEnd("ctx");
  29059. },
  29060. //>>excludeStart("ide", pragmas.excludeIdeData);
  29061. args: [],
  29062. source: "receiver\x0a\x09^ self valuable receiver",
  29063. referencedClasses: [],
  29064. //>>excludeEnd("ide");
  29065. messageSends: ["receiver", "valuable"]
  29066. }),
  29067. $globals.AnnouncementSubscription);
  29068. $core.addMethod(
  29069. $core.method({
  29070. selector: "valuable",
  29071. protocol: 'accessing',
  29072. fn: function (){
  29073. var self=this;
  29074. var $1;
  29075. $1=self["@valuable"];
  29076. return $1;
  29077. },
  29078. //>>excludeStart("ide", pragmas.excludeIdeData);
  29079. args: [],
  29080. source: "valuable\x0a\x09^ valuable",
  29081. referencedClasses: [],
  29082. //>>excludeEnd("ide");
  29083. messageSends: []
  29084. }),
  29085. $globals.AnnouncementSubscription);
  29086. $core.addMethod(
  29087. $core.method({
  29088. selector: "valuable:",
  29089. protocol: 'accessing',
  29090. fn: function (aValuable){
  29091. var self=this;
  29092. self["@valuable"]=aValuable;
  29093. return self;
  29094. },
  29095. //>>excludeStart("ide", pragmas.excludeIdeData);
  29096. args: ["aValuable"],
  29097. source: "valuable: aValuable\x0a\x09valuable := aValuable",
  29098. referencedClasses: [],
  29099. //>>excludeEnd("ide");
  29100. messageSends: []
  29101. }),
  29102. $globals.AnnouncementSubscription);
  29103. $core.addClass('AnnouncementValuable', $globals.Object, ['valuable', 'receiver'], 'Kernel-Announcements');
  29104. //>>excludeStart("ide", pragmas.excludeIdeData);
  29105. $globals.AnnouncementValuable.comment="I wrap `valuable` objects (typically instances of `BlockClosure`) with a `receiver` to be able to unregister subscriptions based on a `receiver`.";
  29106. //>>excludeEnd("ide");
  29107. $core.addMethod(
  29108. $core.method({
  29109. selector: "receiver",
  29110. protocol: 'accessing',
  29111. fn: function (){
  29112. var self=this;
  29113. var $1;
  29114. $1=self["@receiver"];
  29115. return $1;
  29116. },
  29117. //>>excludeStart("ide", pragmas.excludeIdeData);
  29118. args: [],
  29119. source: "receiver\x0a\x09^ receiver",
  29120. referencedClasses: [],
  29121. //>>excludeEnd("ide");
  29122. messageSends: []
  29123. }),
  29124. $globals.AnnouncementValuable);
  29125. $core.addMethod(
  29126. $core.method({
  29127. selector: "receiver:",
  29128. protocol: 'accessing',
  29129. fn: function (anObject){
  29130. var self=this;
  29131. self["@receiver"]=anObject;
  29132. return self;
  29133. },
  29134. //>>excludeStart("ide", pragmas.excludeIdeData);
  29135. args: ["anObject"],
  29136. source: "receiver: anObject\x0a\x09receiver := anObject",
  29137. referencedClasses: [],
  29138. //>>excludeEnd("ide");
  29139. messageSends: []
  29140. }),
  29141. $globals.AnnouncementValuable);
  29142. $core.addMethod(
  29143. $core.method({
  29144. selector: "valuable",
  29145. protocol: 'accessing',
  29146. fn: function (){
  29147. var self=this;
  29148. var $1;
  29149. $1=self["@valuable"];
  29150. return $1;
  29151. },
  29152. //>>excludeStart("ide", pragmas.excludeIdeData);
  29153. args: [],
  29154. source: "valuable\x0a\x09^ valuable",
  29155. referencedClasses: [],
  29156. //>>excludeEnd("ide");
  29157. messageSends: []
  29158. }),
  29159. $globals.AnnouncementValuable);
  29160. $core.addMethod(
  29161. $core.method({
  29162. selector: "valuable:",
  29163. protocol: 'accessing',
  29164. fn: function (anObject){
  29165. var self=this;
  29166. self["@valuable"]=anObject;
  29167. return self;
  29168. },
  29169. //>>excludeStart("ide", pragmas.excludeIdeData);
  29170. args: ["anObject"],
  29171. source: "valuable: anObject\x0a\x09valuable := anObject",
  29172. referencedClasses: [],
  29173. //>>excludeEnd("ide");
  29174. messageSends: []
  29175. }),
  29176. $globals.AnnouncementValuable);
  29177. $core.addMethod(
  29178. $core.method({
  29179. selector: "value",
  29180. protocol: 'evaluating',
  29181. fn: function (){
  29182. var self=this;
  29183. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  29184. return $core.withContext(function($ctx1) {
  29185. //>>excludeEnd("ctx");
  29186. var $1;
  29187. $1=$recv(self._valuable())._value();
  29188. return $1;
  29189. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  29190. }, function($ctx1) {$ctx1.fill(self,"value",{},$globals.AnnouncementValuable)});
  29191. //>>excludeEnd("ctx");
  29192. },
  29193. //>>excludeStart("ide", pragmas.excludeIdeData);
  29194. args: [],
  29195. source: "value\x0a\x09^ self valuable value",
  29196. referencedClasses: [],
  29197. //>>excludeEnd("ide");
  29198. messageSends: ["value", "valuable"]
  29199. }),
  29200. $globals.AnnouncementValuable);
  29201. $core.addMethod(
  29202. $core.method({
  29203. selector: "value:",
  29204. protocol: 'evaluating',
  29205. fn: function (anObject){
  29206. var self=this;
  29207. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  29208. return $core.withContext(function($ctx1) {
  29209. //>>excludeEnd("ctx");
  29210. var $1;
  29211. $1=$recv(self._valuable())._value_(anObject);
  29212. return $1;
  29213. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  29214. }, function($ctx1) {$ctx1.fill(self,"value:",{anObject:anObject},$globals.AnnouncementValuable)});
  29215. //>>excludeEnd("ctx");
  29216. },
  29217. //>>excludeStart("ide", pragmas.excludeIdeData);
  29218. args: ["anObject"],
  29219. source: "value: anObject\x0a\x09^ self valuable value: anObject",
  29220. referencedClasses: [],
  29221. //>>excludeEnd("ide");
  29222. messageSends: ["value:", "valuable"]
  29223. }),
  29224. $globals.AnnouncementValuable);
  29225. $core.addClass('Announcer', $globals.Object, ['registry', 'subscriptions'], 'Kernel-Announcements');
  29226. //>>excludeStart("ide", pragmas.excludeIdeData);
  29227. $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' ].";
  29228. //>>excludeEnd("ide");
  29229. $core.addMethod(
  29230. $core.method({
  29231. selector: "announce:",
  29232. protocol: 'announcing',
  29233. fn: function (anAnnouncement){
  29234. var self=this;
  29235. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  29236. return $core.withContext(function($ctx1) {
  29237. //>>excludeEnd("ctx");
  29238. $recv(self["@subscriptions"])._do_((function(each){
  29239. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  29240. return $core.withContext(function($ctx2) {
  29241. //>>excludeEnd("ctx");
  29242. return $recv(each)._deliver_(anAnnouncement);
  29243. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  29244. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  29245. //>>excludeEnd("ctx");
  29246. }));
  29247. return self;
  29248. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  29249. }, function($ctx1) {$ctx1.fill(self,"announce:",{anAnnouncement:anAnnouncement},$globals.Announcer)});
  29250. //>>excludeEnd("ctx");
  29251. },
  29252. //>>excludeStart("ide", pragmas.excludeIdeData);
  29253. args: ["anAnnouncement"],
  29254. source: "announce: anAnnouncement\x0a\x09subscriptions do: [ :each |\x0a\x09\x09each deliver: anAnnouncement ]",
  29255. referencedClasses: [],
  29256. //>>excludeEnd("ide");
  29257. messageSends: ["do:", "deliver:"]
  29258. }),
  29259. $globals.Announcer);
  29260. $core.addMethod(
  29261. $core.method({
  29262. selector: "initialize",
  29263. protocol: 'initialization',
  29264. fn: function (){
  29265. var self=this;
  29266. function $OrderedCollection(){return $globals.OrderedCollection||(typeof OrderedCollection=="undefined"?nil:OrderedCollection)}
  29267. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  29268. return $core.withContext(function($ctx1) {
  29269. //>>excludeEnd("ctx");
  29270. (
  29271. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  29272. $ctx1.supercall = true,
  29273. //>>excludeEnd("ctx");
  29274. $globals.Announcer.superclass.fn.prototype._initialize.apply($recv(self), []));
  29275. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  29276. $ctx1.supercall = false;
  29277. //>>excludeEnd("ctx");;
  29278. self["@subscriptions"]=$recv($OrderedCollection())._new();
  29279. return self;
  29280. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  29281. }, function($ctx1) {$ctx1.fill(self,"initialize",{},$globals.Announcer)});
  29282. //>>excludeEnd("ctx");
  29283. },
  29284. //>>excludeStart("ide", pragmas.excludeIdeData);
  29285. args: [],
  29286. source: "initialize\x0a\x09super initialize.\x0a\x09subscriptions := OrderedCollection new",
  29287. referencedClasses: ["OrderedCollection"],
  29288. //>>excludeEnd("ide");
  29289. messageSends: ["initialize", "new"]
  29290. }),
  29291. $globals.Announcer);
  29292. $core.addMethod(
  29293. $core.method({
  29294. selector: "on:do:",
  29295. protocol: 'subscribing',
  29296. fn: function (aClass,aBlock){
  29297. var self=this;
  29298. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  29299. return $core.withContext(function($ctx1) {
  29300. //>>excludeEnd("ctx");
  29301. self._on_do_for_(aClass,aBlock,nil);
  29302. return self;
  29303. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  29304. }, function($ctx1) {$ctx1.fill(self,"on:do:",{aClass:aClass,aBlock:aBlock},$globals.Announcer)});
  29305. //>>excludeEnd("ctx");
  29306. },
  29307. //>>excludeStart("ide", pragmas.excludeIdeData);
  29308. args: ["aClass", "aBlock"],
  29309. source: "on: aClass do: aBlock\x0a\x09self on: aClass do: aBlock for: nil",
  29310. referencedClasses: [],
  29311. //>>excludeEnd("ide");
  29312. messageSends: ["on:do:for:"]
  29313. }),
  29314. $globals.Announcer);
  29315. $core.addMethod(
  29316. $core.method({
  29317. selector: "on:do:for:",
  29318. protocol: 'subscribing',
  29319. fn: function (aClass,aBlock,aReceiver){
  29320. var self=this;
  29321. function $AnnouncementSubscription(){return $globals.AnnouncementSubscription||(typeof AnnouncementSubscription=="undefined"?nil:AnnouncementSubscription)}
  29322. function $AnnouncementValuable(){return $globals.AnnouncementValuable||(typeof AnnouncementValuable=="undefined"?nil:AnnouncementValuable)}
  29323. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  29324. return $core.withContext(function($ctx1) {
  29325. //>>excludeEnd("ctx");
  29326. var $1,$3,$4,$6,$7,$5,$8,$2;
  29327. $1=self["@subscriptions"];
  29328. $3=$recv($AnnouncementSubscription())._new();
  29329. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  29330. $ctx1.sendIdx["new"]=1;
  29331. //>>excludeEnd("ctx");
  29332. $4=$3;
  29333. $6=$recv($AnnouncementValuable())._new();
  29334. $recv($6)._valuable_(aBlock);
  29335. $recv($6)._receiver_(aReceiver);
  29336. $7=$recv($6)._yourself();
  29337. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  29338. $ctx1.sendIdx["yourself"]=1;
  29339. //>>excludeEnd("ctx");
  29340. $5=$7;
  29341. $recv($4)._valuable_($5);
  29342. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  29343. $ctx1.sendIdx["valuable:"]=1;
  29344. //>>excludeEnd("ctx");
  29345. $recv($3)._announcementClass_(aClass);
  29346. $8=$recv($3)._yourself();
  29347. $2=$8;
  29348. $recv($1)._add_($2);
  29349. return self;
  29350. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  29351. }, function($ctx1) {$ctx1.fill(self,"on:do:for:",{aClass:aClass,aBlock:aBlock,aReceiver:aReceiver},$globals.Announcer)});
  29352. //>>excludeEnd("ctx");
  29353. },
  29354. //>>excludeStart("ide", pragmas.excludeIdeData);
  29355. args: ["aClass", "aBlock", "aReceiver"],
  29356. 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)",
  29357. referencedClasses: ["AnnouncementSubscription", "AnnouncementValuable"],
  29358. //>>excludeEnd("ide");
  29359. messageSends: ["add:", "valuable:", "new", "receiver:", "yourself", "announcementClass:"]
  29360. }),
  29361. $globals.Announcer);
  29362. $core.addMethod(
  29363. $core.method({
  29364. selector: "on:doOnce:",
  29365. protocol: 'subscribing',
  29366. fn: function (aClass,aBlock){
  29367. var self=this;
  29368. var subscription;
  29369. function $AnnouncementSubscription(){return $globals.AnnouncementSubscription||(typeof AnnouncementSubscription=="undefined"?nil:AnnouncementSubscription)}
  29370. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  29371. return $core.withContext(function($ctx1) {
  29372. //>>excludeEnd("ctx");
  29373. var $1,$2;
  29374. $1=$recv($AnnouncementSubscription())._new();
  29375. $recv($1)._announcementClass_(aClass);
  29376. $2=$recv($1)._yourself();
  29377. subscription=$2;
  29378. $recv(subscription)._valuable_((function(ann){
  29379. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  29380. return $core.withContext(function($ctx2) {
  29381. //>>excludeEnd("ctx");
  29382. $recv(self["@subscriptions"])._remove_(subscription);
  29383. return $recv(aBlock)._value_(ann);
  29384. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  29385. }, function($ctx2) {$ctx2.fillBlock({ann:ann},$ctx1,1)});
  29386. //>>excludeEnd("ctx");
  29387. }));
  29388. $recv(self["@subscriptions"])._add_(subscription);
  29389. return self;
  29390. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  29391. }, function($ctx1) {$ctx1.fill(self,"on:doOnce:",{aClass:aClass,aBlock:aBlock,subscription:subscription},$globals.Announcer)});
  29392. //>>excludeEnd("ctx");
  29393. },
  29394. //>>excludeStart("ide", pragmas.excludeIdeData);
  29395. args: ["aClass", "aBlock"],
  29396. 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",
  29397. referencedClasses: ["AnnouncementSubscription"],
  29398. //>>excludeEnd("ide");
  29399. messageSends: ["announcementClass:", "new", "yourself", "valuable:", "remove:", "value:", "add:"]
  29400. }),
  29401. $globals.Announcer);
  29402. $core.addMethod(
  29403. $core.method({
  29404. selector: "on:send:to:",
  29405. protocol: 'subscribing',
  29406. fn: function (aClass,aSelector,anObject){
  29407. var self=this;
  29408. function $AnnouncementSubscription(){return $globals.AnnouncementSubscription||(typeof AnnouncementSubscription=="undefined"?nil:AnnouncementSubscription)}
  29409. function $MessageSend(){return $globals.MessageSend||(typeof MessageSend=="undefined"?nil:MessageSend)}
  29410. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  29411. return $core.withContext(function($ctx1) {
  29412. //>>excludeEnd("ctx");
  29413. var $1,$3,$4,$6,$7,$5,$8,$2;
  29414. $1=self["@subscriptions"];
  29415. $3=$recv($AnnouncementSubscription())._new();
  29416. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  29417. $ctx1.sendIdx["new"]=1;
  29418. //>>excludeEnd("ctx");
  29419. $4=$3;
  29420. $6=$recv($MessageSend())._new();
  29421. $recv($6)._receiver_(anObject);
  29422. $recv($6)._selector_(aSelector);
  29423. $7=$recv($6)._yourself();
  29424. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  29425. $ctx1.sendIdx["yourself"]=1;
  29426. //>>excludeEnd("ctx");
  29427. $5=$7;
  29428. $recv($4)._valuable_($5);
  29429. $recv($3)._announcementClass_(aClass);
  29430. $8=$recv($3)._yourself();
  29431. $2=$8;
  29432. $recv($1)._add_($2);
  29433. return self;
  29434. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  29435. }, function($ctx1) {$ctx1.fill(self,"on:send:to:",{aClass:aClass,aSelector:aSelector,anObject:anObject},$globals.Announcer)});
  29436. //>>excludeEnd("ctx");
  29437. },
  29438. //>>excludeStart("ide", pragmas.excludeIdeData);
  29439. args: ["aClass", "aSelector", "anObject"],
  29440. 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)",
  29441. referencedClasses: ["AnnouncementSubscription", "MessageSend"],
  29442. //>>excludeEnd("ide");
  29443. messageSends: ["add:", "valuable:", "new", "receiver:", "selector:", "yourself", "announcementClass:"]
  29444. }),
  29445. $globals.Announcer);
  29446. $core.addMethod(
  29447. $core.method({
  29448. selector: "unsubscribe:",
  29449. protocol: 'subscribing',
  29450. fn: function (anObject){
  29451. var self=this;
  29452. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  29453. return $core.withContext(function($ctx1) {
  29454. //>>excludeEnd("ctx");
  29455. self["@subscriptions"]=$recv(self["@subscriptions"])._reject_((function(each){
  29456. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  29457. return $core.withContext(function($ctx2) {
  29458. //>>excludeEnd("ctx");
  29459. return $recv($recv(each)._receiver()).__eq(anObject);
  29460. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  29461. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  29462. //>>excludeEnd("ctx");
  29463. }));
  29464. return self;
  29465. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  29466. }, function($ctx1) {$ctx1.fill(self,"unsubscribe:",{anObject:anObject},$globals.Announcer)});
  29467. //>>excludeEnd("ctx");
  29468. },
  29469. //>>excludeStart("ide", pragmas.excludeIdeData);
  29470. args: ["anObject"],
  29471. source: "unsubscribe: anObject\x0a\x09subscriptions := subscriptions reject: [ :each |\x0a\x09\x09each receiver = anObject ]",
  29472. referencedClasses: [],
  29473. //>>excludeEnd("ide");
  29474. messageSends: ["reject:", "=", "receiver"]
  29475. }),
  29476. $globals.Announcer);
  29477. $core.addClass('SystemAnnouncer', $globals.Announcer, [], 'Kernel-Announcements');
  29478. //>>excludeStart("ide", pragmas.excludeIdeData);
  29479. $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`";
  29480. //>>excludeEnd("ide");
  29481. $globals.SystemAnnouncer.klass.iVarNames = ['current'];
  29482. $core.addMethod(
  29483. $core.method({
  29484. selector: "current",
  29485. protocol: 'accessing',
  29486. fn: function (){
  29487. var self=this;
  29488. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  29489. return $core.withContext(function($ctx1) {
  29490. //>>excludeEnd("ctx");
  29491. var $2,$1,$receiver;
  29492. $2=self["@current"];
  29493. if(($receiver = $2) == null || $receiver.isNil){
  29494. self["@current"]=(
  29495. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  29496. $ctx1.supercall = true,
  29497. //>>excludeEnd("ctx");
  29498. $globals.SystemAnnouncer.klass.superclass.fn.prototype._new.apply($recv(self), []));
  29499. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  29500. $ctx1.supercall = false;
  29501. //>>excludeEnd("ctx");;
  29502. $1=self["@current"];
  29503. } else {
  29504. $1=$2;
  29505. };
  29506. return $1;
  29507. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  29508. }, function($ctx1) {$ctx1.fill(self,"current",{},$globals.SystemAnnouncer.klass)});
  29509. //>>excludeEnd("ctx");
  29510. },
  29511. //>>excludeStart("ide", pragmas.excludeIdeData);
  29512. args: [],
  29513. source: "current\x0a\x09^ current ifNil: [ current := super new ]",
  29514. referencedClasses: [],
  29515. //>>excludeEnd("ide");
  29516. messageSends: ["ifNil:", "new"]
  29517. }),
  29518. $globals.SystemAnnouncer.klass);
  29519. $core.addMethod(
  29520. $core.method({
  29521. selector: "new",
  29522. protocol: 'instance creation',
  29523. fn: function (){
  29524. var self=this;
  29525. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  29526. return $core.withContext(function($ctx1) {
  29527. //>>excludeEnd("ctx");
  29528. self._shouldNotImplement();
  29529. return self;
  29530. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  29531. }, function($ctx1) {$ctx1.fill(self,"new",{},$globals.SystemAnnouncer.klass)});
  29532. //>>excludeEnd("ctx");
  29533. },
  29534. //>>excludeStart("ide", pragmas.excludeIdeData);
  29535. args: [],
  29536. source: "new\x0a\x09self shouldNotImplement",
  29537. referencedClasses: [],
  29538. //>>excludeEnd("ide");
  29539. messageSends: ["shouldNotImplement"]
  29540. }),
  29541. $globals.SystemAnnouncer.klass);
  29542. $core.addClass('SystemAnnouncement', $globals.Object, [], 'Kernel-Announcements');
  29543. //>>excludeStart("ide", pragmas.excludeIdeData);
  29544. $globals.SystemAnnouncement.comment="I am the superclass of all system announcements";
  29545. //>>excludeEnd("ide");
  29546. $core.addMethod(
  29547. $core.method({
  29548. selector: "heliosClass",
  29549. protocol: 'helios',
  29550. fn: function (){
  29551. var self=this;
  29552. return "announcement";
  29553. },
  29554. //>>excludeStart("ide", pragmas.excludeIdeData);
  29555. args: [],
  29556. source: "heliosClass\x0a\x09^ 'announcement'",
  29557. referencedClasses: [],
  29558. //>>excludeEnd("ide");
  29559. messageSends: []
  29560. }),
  29561. $globals.SystemAnnouncement.klass);
  29562. $core.addClass('ClassAnnouncement', $globals.SystemAnnouncement, ['theClass'], 'Kernel-Announcements');
  29563. //>>excludeStart("ide", pragmas.excludeIdeData);
  29564. $globals.ClassAnnouncement.comment="I am the abstract superclass of class-related announcements.";
  29565. //>>excludeEnd("ide");
  29566. $core.addMethod(
  29567. $core.method({
  29568. selector: "theClass",
  29569. protocol: 'accessing',
  29570. fn: function (){
  29571. var self=this;
  29572. var $1;
  29573. $1=self["@theClass"];
  29574. return $1;
  29575. },
  29576. //>>excludeStart("ide", pragmas.excludeIdeData);
  29577. args: [],
  29578. source: "theClass\x0a\x09^ theClass",
  29579. referencedClasses: [],
  29580. //>>excludeEnd("ide");
  29581. messageSends: []
  29582. }),
  29583. $globals.ClassAnnouncement);
  29584. $core.addMethod(
  29585. $core.method({
  29586. selector: "theClass:",
  29587. protocol: 'accessing',
  29588. fn: function (aClass){
  29589. var self=this;
  29590. self["@theClass"]=aClass;
  29591. return self;
  29592. },
  29593. //>>excludeStart("ide", pragmas.excludeIdeData);
  29594. args: ["aClass"],
  29595. source: "theClass: aClass\x0a\x09theClass := aClass",
  29596. referencedClasses: [],
  29597. //>>excludeEnd("ide");
  29598. messageSends: []
  29599. }),
  29600. $globals.ClassAnnouncement);
  29601. $core.addClass('ClassAdded', $globals.ClassAnnouncement, [], 'Kernel-Announcements');
  29602. //>>excludeStart("ide", pragmas.excludeIdeData);
  29603. $globals.ClassAdded.comment="I am emitted when a class is added to the system.\x0aSee ClassBuilder >> #addSubclassOf:... methods";
  29604. //>>excludeEnd("ide");
  29605. $core.addClass('ClassCommentChanged', $globals.ClassAnnouncement, [], 'Kernel-Announcements');
  29606. //>>excludeStart("ide", pragmas.excludeIdeData);
  29607. $globals.ClassCommentChanged.comment="I am emitted when the comment of a class changes. (Behavior >> #comment)";
  29608. //>>excludeEnd("ide");
  29609. $core.addClass('ClassDefinitionChanged', $globals.ClassAnnouncement, [], 'Kernel-Announcements');
  29610. //>>excludeStart("ide", pragmas.excludeIdeData);
  29611. $globals.ClassDefinitionChanged.comment="I am emitted when the definition of a class changes.\x0aSee ClassBuilder >> #class:instanceVariableNames:";
  29612. //>>excludeEnd("ide");
  29613. $core.addClass('ClassMigrated', $globals.ClassAnnouncement, ['oldClass'], 'Kernel-Announcements');
  29614. //>>excludeStart("ide", pragmas.excludeIdeData);
  29615. $globals.ClassMigrated.comment="I am emitted when a class is migrated.";
  29616. //>>excludeEnd("ide");
  29617. $core.addMethod(
  29618. $core.method({
  29619. selector: "oldClass",
  29620. protocol: 'accessing',
  29621. fn: function (){
  29622. var self=this;
  29623. var $1;
  29624. $1=self["@oldClass"];
  29625. return $1;
  29626. },
  29627. //>>excludeStart("ide", pragmas.excludeIdeData);
  29628. args: [],
  29629. source: "oldClass\x0a\x09^ oldClass",
  29630. referencedClasses: [],
  29631. //>>excludeEnd("ide");
  29632. messageSends: []
  29633. }),
  29634. $globals.ClassMigrated);
  29635. $core.addMethod(
  29636. $core.method({
  29637. selector: "oldClass:",
  29638. protocol: 'accessing',
  29639. fn: function (aClass){
  29640. var self=this;
  29641. self["@oldClass"]=aClass;
  29642. return self;
  29643. },
  29644. //>>excludeStart("ide", pragmas.excludeIdeData);
  29645. args: ["aClass"],
  29646. source: "oldClass: aClass\x0a\x09oldClass := aClass",
  29647. referencedClasses: [],
  29648. //>>excludeEnd("ide");
  29649. messageSends: []
  29650. }),
  29651. $globals.ClassMigrated);
  29652. $core.addClass('ClassMoved', $globals.ClassAnnouncement, ['oldPackage'], 'Kernel-Announcements');
  29653. //>>excludeStart("ide", pragmas.excludeIdeData);
  29654. $globals.ClassMoved.comment="I am emitted when a class is moved from one package to another.";
  29655. //>>excludeEnd("ide");
  29656. $core.addMethod(
  29657. $core.method({
  29658. selector: "oldPackage",
  29659. protocol: 'accessing',
  29660. fn: function (){
  29661. var self=this;
  29662. var $1;
  29663. $1=self["@oldPackage"];
  29664. return $1;
  29665. },
  29666. //>>excludeStart("ide", pragmas.excludeIdeData);
  29667. args: [],
  29668. source: "oldPackage\x0a\x09^ oldPackage",
  29669. referencedClasses: [],
  29670. //>>excludeEnd("ide");
  29671. messageSends: []
  29672. }),
  29673. $globals.ClassMoved);
  29674. $core.addMethod(
  29675. $core.method({
  29676. selector: "oldPackage:",
  29677. protocol: 'accessing',
  29678. fn: function (aPackage){
  29679. var self=this;
  29680. self["@oldPackage"]=aPackage;
  29681. return self;
  29682. },
  29683. //>>excludeStart("ide", pragmas.excludeIdeData);
  29684. args: ["aPackage"],
  29685. source: "oldPackage: aPackage\x0a\x09oldPackage := aPackage",
  29686. referencedClasses: [],
  29687. //>>excludeEnd("ide");
  29688. messageSends: []
  29689. }),
  29690. $globals.ClassMoved);
  29691. $core.addClass('ClassRemoved', $globals.ClassAnnouncement, [], 'Kernel-Announcements');
  29692. //>>excludeStart("ide", pragmas.excludeIdeData);
  29693. $globals.ClassRemoved.comment="I am emitted when a class is removed.\x0aSee Smalltalk >> #removeClass:";
  29694. //>>excludeEnd("ide");
  29695. $core.addClass('ClassRenamed', $globals.ClassAnnouncement, [], 'Kernel-Announcements');
  29696. //>>excludeStart("ide", pragmas.excludeIdeData);
  29697. $globals.ClassRenamed.comment="I am emitted when a class is renamed.\x0aSee ClassBuilder >> #renameClass:to:";
  29698. //>>excludeEnd("ide");
  29699. $core.addClass('MethodAnnouncement', $globals.SystemAnnouncement, ['method'], 'Kernel-Announcements');
  29700. //>>excludeStart("ide", pragmas.excludeIdeData);
  29701. $globals.MethodAnnouncement.comment="I am the abstract superclass of method-related announcements.";
  29702. //>>excludeEnd("ide");
  29703. $core.addMethod(
  29704. $core.method({
  29705. selector: "method",
  29706. protocol: 'accessing',
  29707. fn: function (){
  29708. var self=this;
  29709. var $1;
  29710. $1=self["@method"];
  29711. return $1;
  29712. },
  29713. //>>excludeStart("ide", pragmas.excludeIdeData);
  29714. args: [],
  29715. source: "method\x0a\x09^ method",
  29716. referencedClasses: [],
  29717. //>>excludeEnd("ide");
  29718. messageSends: []
  29719. }),
  29720. $globals.MethodAnnouncement);
  29721. $core.addMethod(
  29722. $core.method({
  29723. selector: "method:",
  29724. protocol: 'accessing',
  29725. fn: function (aCompiledMethod){
  29726. var self=this;
  29727. self["@method"]=aCompiledMethod;
  29728. return self;
  29729. },
  29730. //>>excludeStart("ide", pragmas.excludeIdeData);
  29731. args: ["aCompiledMethod"],
  29732. source: "method: aCompiledMethod\x0a\x09method := aCompiledMethod",
  29733. referencedClasses: [],
  29734. //>>excludeEnd("ide");
  29735. messageSends: []
  29736. }),
  29737. $globals.MethodAnnouncement);
  29738. $core.addClass('MethodAdded', $globals.MethodAnnouncement, [], 'Kernel-Announcements');
  29739. //>>excludeStart("ide", pragmas.excludeIdeData);
  29740. $globals.MethodAdded.comment="I am emitted when a `CompiledMethod` is added to a class.";
  29741. //>>excludeEnd("ide");
  29742. $core.addClass('MethodModified', $globals.MethodAnnouncement, ['oldMethod'], 'Kernel-Announcements');
  29743. //>>excludeStart("ide", pragmas.excludeIdeData);
  29744. $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.";
  29745. //>>excludeEnd("ide");
  29746. $core.addMethod(
  29747. $core.method({
  29748. selector: "oldMethod",
  29749. protocol: 'accessing',
  29750. fn: function (){
  29751. var self=this;
  29752. var $1;
  29753. $1=self["@oldMethod"];
  29754. return $1;
  29755. },
  29756. //>>excludeStart("ide", pragmas.excludeIdeData);
  29757. args: [],
  29758. source: "oldMethod\x0a\x09^ oldMethod",
  29759. referencedClasses: [],
  29760. //>>excludeEnd("ide");
  29761. messageSends: []
  29762. }),
  29763. $globals.MethodModified);
  29764. $core.addMethod(
  29765. $core.method({
  29766. selector: "oldMethod:",
  29767. protocol: 'accessing',
  29768. fn: function (aMethod){
  29769. var self=this;
  29770. self["@oldMethod"]=aMethod;
  29771. return self;
  29772. },
  29773. //>>excludeStart("ide", pragmas.excludeIdeData);
  29774. args: ["aMethod"],
  29775. source: "oldMethod: aMethod\x0a\x09oldMethod := aMethod",
  29776. referencedClasses: [],
  29777. //>>excludeEnd("ide");
  29778. messageSends: []
  29779. }),
  29780. $globals.MethodModified);
  29781. $core.addClass('MethodMoved', $globals.MethodAnnouncement, ['oldProtocol'], 'Kernel-Announcements');
  29782. //>>excludeStart("ide", pragmas.excludeIdeData);
  29783. $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.";
  29784. //>>excludeEnd("ide");
  29785. $core.addMethod(
  29786. $core.method({
  29787. selector: "oldProtocol",
  29788. protocol: 'accessing',
  29789. fn: function (){
  29790. var self=this;
  29791. var $1;
  29792. $1=self["@oldProtocol"];
  29793. return $1;
  29794. },
  29795. //>>excludeStart("ide", pragmas.excludeIdeData);
  29796. args: [],
  29797. source: "oldProtocol\x0a\x09^ oldProtocol",
  29798. referencedClasses: [],
  29799. //>>excludeEnd("ide");
  29800. messageSends: []
  29801. }),
  29802. $globals.MethodMoved);
  29803. $core.addMethod(
  29804. $core.method({
  29805. selector: "oldProtocol:",
  29806. protocol: 'accessing',
  29807. fn: function (aString){
  29808. var self=this;
  29809. self["@oldProtocol"]=aString;
  29810. return self;
  29811. },
  29812. //>>excludeStart("ide", pragmas.excludeIdeData);
  29813. args: ["aString"],
  29814. source: "oldProtocol: aString\x0a\x09oldProtocol := aString",
  29815. referencedClasses: [],
  29816. //>>excludeEnd("ide");
  29817. messageSends: []
  29818. }),
  29819. $globals.MethodMoved);
  29820. $core.addClass('MethodRemoved', $globals.MethodAnnouncement, [], 'Kernel-Announcements');
  29821. //>>excludeStart("ide", pragmas.excludeIdeData);
  29822. $globals.MethodRemoved.comment="I am emitted when a `CompiledMethod` is removed from a class.";
  29823. //>>excludeEnd("ide");
  29824. $core.addClass('PackageAnnouncement', $globals.SystemAnnouncement, ['package'], 'Kernel-Announcements');
  29825. //>>excludeStart("ide", pragmas.excludeIdeData);
  29826. $globals.PackageAnnouncement.comment="I am the abstract superclass of package-related announcements.";
  29827. //>>excludeEnd("ide");
  29828. $core.addMethod(
  29829. $core.method({
  29830. selector: "package",
  29831. protocol: 'accessing',
  29832. fn: function (){
  29833. var self=this;
  29834. var $1;
  29835. $1=self["@package"];
  29836. return $1;
  29837. },
  29838. //>>excludeStart("ide", pragmas.excludeIdeData);
  29839. args: [],
  29840. source: "package\x0a\x09^ package",
  29841. referencedClasses: [],
  29842. //>>excludeEnd("ide");
  29843. messageSends: []
  29844. }),
  29845. $globals.PackageAnnouncement);
  29846. $core.addMethod(
  29847. $core.method({
  29848. selector: "package:",
  29849. protocol: 'accessing',
  29850. fn: function (aPackage){
  29851. var self=this;
  29852. self["@package"]=aPackage;
  29853. return self;
  29854. },
  29855. //>>excludeStart("ide", pragmas.excludeIdeData);
  29856. args: ["aPackage"],
  29857. source: "package: aPackage\x0a\x09package := aPackage",
  29858. referencedClasses: [],
  29859. //>>excludeEnd("ide");
  29860. messageSends: []
  29861. }),
  29862. $globals.PackageAnnouncement);
  29863. $core.addClass('PackageAdded', $globals.PackageAnnouncement, [], 'Kernel-Announcements');
  29864. //>>excludeStart("ide", pragmas.excludeIdeData);
  29865. $globals.PackageAdded.comment="I am emitted when a `Package` is added to the system.";
  29866. //>>excludeEnd("ide");
  29867. $core.addClass('PackageClean', $globals.PackageAnnouncement, [], 'Kernel-Announcements');
  29868. //>>excludeStart("ide", pragmas.excludeIdeData);
  29869. $globals.PackageClean.comment="I am emitted when a package is committed and becomes clean.";
  29870. //>>excludeEnd("ide");
  29871. $core.addClass('PackageDirty', $globals.PackageAnnouncement, [], 'Kernel-Announcements');
  29872. //>>excludeStart("ide", pragmas.excludeIdeData);
  29873. $globals.PackageDirty.comment="I am emitted when a package becomes dirty.";
  29874. //>>excludeEnd("ide");
  29875. $core.addClass('PackageRemoved', $globals.PackageAnnouncement, [], 'Kernel-Announcements');
  29876. //>>excludeStart("ide", pragmas.excludeIdeData);
  29877. $globals.PackageRemoved.comment="I am emitted when a `Package` is removed from the system.";
  29878. //>>excludeEnd("ide");
  29879. $core.addClass('ProtocolAnnouncement', $globals.SystemAnnouncement, ['theClass', 'protocol'], 'Kernel-Announcements');
  29880. //>>excludeStart("ide", pragmas.excludeIdeData);
  29881. $globals.ProtocolAnnouncement.comment="I am the abstract superclass of protocol-related announcements.";
  29882. //>>excludeEnd("ide");
  29883. $core.addMethod(
  29884. $core.method({
  29885. selector: "package",
  29886. protocol: 'accessing',
  29887. fn: function (){
  29888. var self=this;
  29889. function $Package(){return $globals.Package||(typeof Package=="undefined"?nil:Package)}
  29890. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  29891. return $core.withContext(function($ctx1) {
  29892. //>>excludeEnd("ctx");
  29893. var $2,$1,$3,$4;
  29894. $2=self._protocol();
  29895. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  29896. $ctx1.sendIdx["protocol"]=1;
  29897. //>>excludeEnd("ctx");
  29898. $1=$recv($2)._beginsWith_("*");
  29899. if(!$core.assert($1)){
  29900. $3=$recv(self._theClass())._package();
  29901. return $3;
  29902. };
  29903. $4=$recv($Package())._named_ifAbsent_($recv(self._protocol())._allButFirst(),(function(){
  29904. return nil;
  29905. }));
  29906. return $4;
  29907. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  29908. }, function($ctx1) {$ctx1.fill(self,"package",{},$globals.ProtocolAnnouncement)});
  29909. //>>excludeEnd("ctx");
  29910. },
  29911. //>>excludeStart("ide", pragmas.excludeIdeData);
  29912. args: [],
  29913. source: "package\x0a\x0a\x09(self protocol beginsWith: '*') ifFalse: [\x0a\x09\x09^ self theClass package ].\x0a\x09\x09\x0a\x09^ Package \x0a\x09\x09named: self protocol allButFirst\x0a\x09\x09ifAbsent: [ nil ]",
  29914. referencedClasses: ["Package"],
  29915. //>>excludeEnd("ide");
  29916. messageSends: ["ifFalse:", "beginsWith:", "protocol", "package", "theClass", "named:ifAbsent:", "allButFirst"]
  29917. }),
  29918. $globals.ProtocolAnnouncement);
  29919. $core.addMethod(
  29920. $core.method({
  29921. selector: "protocol",
  29922. protocol: 'accessing',
  29923. fn: function (){
  29924. var self=this;
  29925. var $1;
  29926. $1=self["@protocol"];
  29927. return $1;
  29928. },
  29929. //>>excludeStart("ide", pragmas.excludeIdeData);
  29930. args: [],
  29931. source: "protocol\x0a\x09^ protocol",
  29932. referencedClasses: [],
  29933. //>>excludeEnd("ide");
  29934. messageSends: []
  29935. }),
  29936. $globals.ProtocolAnnouncement);
  29937. $core.addMethod(
  29938. $core.method({
  29939. selector: "protocol:",
  29940. protocol: 'accessing',
  29941. fn: function (aString){
  29942. var self=this;
  29943. self["@protocol"]=aString;
  29944. return self;
  29945. },
  29946. //>>excludeStart("ide", pragmas.excludeIdeData);
  29947. args: ["aString"],
  29948. source: "protocol: aString\x0a\x09protocol := aString",
  29949. referencedClasses: [],
  29950. //>>excludeEnd("ide");
  29951. messageSends: []
  29952. }),
  29953. $globals.ProtocolAnnouncement);
  29954. $core.addMethod(
  29955. $core.method({
  29956. selector: "theClass",
  29957. protocol: 'accessing',
  29958. fn: function (){
  29959. var self=this;
  29960. var $1;
  29961. $1=self["@theClass"];
  29962. return $1;
  29963. },
  29964. //>>excludeStart("ide", pragmas.excludeIdeData);
  29965. args: [],
  29966. source: "theClass\x0a\x09^ theClass",
  29967. referencedClasses: [],
  29968. //>>excludeEnd("ide");
  29969. messageSends: []
  29970. }),
  29971. $globals.ProtocolAnnouncement);
  29972. $core.addMethod(
  29973. $core.method({
  29974. selector: "theClass:",
  29975. protocol: 'accessing',
  29976. fn: function (aClass){
  29977. var self=this;
  29978. self["@theClass"]=aClass;
  29979. return self;
  29980. },
  29981. //>>excludeStart("ide", pragmas.excludeIdeData);
  29982. args: ["aClass"],
  29983. source: "theClass: aClass\x0a\x09theClass := aClass",
  29984. referencedClasses: [],
  29985. //>>excludeEnd("ide");
  29986. messageSends: []
  29987. }),
  29988. $globals.ProtocolAnnouncement);
  29989. $core.addClass('ProtocolAdded', $globals.ProtocolAnnouncement, [], 'Kernel-Announcements');
  29990. //>>excludeStart("ide", pragmas.excludeIdeData);
  29991. $globals.ProtocolAdded.comment="I am emitted when a protocol is added to a class.";
  29992. //>>excludeEnd("ide");
  29993. $core.addClass('ProtocolRemoved', $globals.ProtocolAnnouncement, [], 'Kernel-Announcements');
  29994. //>>excludeStart("ide", pragmas.excludeIdeData);
  29995. $globals.ProtocolRemoved.comment="I am emitted when a protocol is removed from a class.";
  29996. //>>excludeEnd("ide");
  29997. });
  29998. define("amber_core/Compiler-Exceptions", ["amber/boot", "amber_core/Kernel-Exceptions", "amber_core/Kernel-Objects"], function($boot){
  29999. var $core=$boot.api,nil=$boot.nil,$recv=$boot.asReceiver,$globals=$boot.globals;
  30000. var smalltalk=$core,_st=$recv,globals=$globals;
  30001. $core.addPackage('Compiler-Exceptions');
  30002. $core.packages["Compiler-Exceptions"].transport = {"type":"amd","amdNamespace":"amber_core"};
  30003. $core.addClass('CompilerError', $globals.Error, [], 'Compiler-Exceptions');
  30004. //>>excludeStart("ide", pragmas.excludeIdeData);
  30005. $globals.CompilerError.comment="I am the common superclass of all compiling errors.";
  30006. //>>excludeEnd("ide");
  30007. $core.addClass('ParseError', $globals.CompilerError, [], 'Compiler-Exceptions');
  30008. //>>excludeStart("ide", pragmas.excludeIdeData);
  30009. $globals.ParseError.comment="Instance of ParseError are signaled on any parsing error.\x0aSee `Smalltalk >> #parse:`";
  30010. //>>excludeEnd("ide");
  30011. $core.addClass('SemanticError', $globals.CompilerError, [], 'Compiler-Exceptions');
  30012. //>>excludeStart("ide", pragmas.excludeIdeData);
  30013. $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";
  30014. //>>excludeEnd("ide");
  30015. $core.addClass('InliningError', $globals.SemanticError, [], 'Compiler-Exceptions');
  30016. //>>excludeStart("ide", pragmas.excludeIdeData);
  30017. $globals.InliningError.comment="Instances of InliningError are signaled when using an `InliningCodeGenerator`in a `Compiler`.";
  30018. //>>excludeEnd("ide");
  30019. $core.addClass('InvalidAssignmentError', $globals.SemanticError, ['variableName'], 'Compiler-Exceptions');
  30020. //>>excludeStart("ide", pragmas.excludeIdeData);
  30021. $globals.InvalidAssignmentError.comment="I get signaled when a pseudo variable gets assigned.";
  30022. //>>excludeEnd("ide");
  30023. $core.addMethod(
  30024. $core.method({
  30025. selector: "messageText",
  30026. protocol: 'accessing',
  30027. fn: function (){
  30028. var self=this;
  30029. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  30030. return $core.withContext(function($ctx1) {
  30031. //>>excludeEnd("ctx");
  30032. var $1;
  30033. $1=" Invalid assignment to variable: ".__comma(self._variableName());
  30034. return $1;
  30035. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  30036. }, function($ctx1) {$ctx1.fill(self,"messageText",{},$globals.InvalidAssignmentError)});
  30037. //>>excludeEnd("ctx");
  30038. },
  30039. //>>excludeStart("ide", pragmas.excludeIdeData);
  30040. args: [],
  30041. source: "messageText\x0a\x09^ ' Invalid assignment to variable: ', self variableName",
  30042. referencedClasses: [],
  30043. //>>excludeEnd("ide");
  30044. messageSends: [",", "variableName"]
  30045. }),
  30046. $globals.InvalidAssignmentError);
  30047. $core.addMethod(
  30048. $core.method({
  30049. selector: "variableName",
  30050. protocol: 'accessing',
  30051. fn: function (){
  30052. var self=this;
  30053. var $1;
  30054. $1=self["@variableName"];
  30055. return $1;
  30056. },
  30057. //>>excludeStart("ide", pragmas.excludeIdeData);
  30058. args: [],
  30059. source: "variableName\x0a\x09^ variableName",
  30060. referencedClasses: [],
  30061. //>>excludeEnd("ide");
  30062. messageSends: []
  30063. }),
  30064. $globals.InvalidAssignmentError);
  30065. $core.addMethod(
  30066. $core.method({
  30067. selector: "variableName:",
  30068. protocol: 'accessing',
  30069. fn: function (aString){
  30070. var self=this;
  30071. self["@variableName"]=aString;
  30072. return self;
  30073. },
  30074. //>>excludeStart("ide", pragmas.excludeIdeData);
  30075. args: ["aString"],
  30076. source: "variableName: aString\x0a\x09variableName := aString",
  30077. referencedClasses: [],
  30078. //>>excludeEnd("ide");
  30079. messageSends: []
  30080. }),
  30081. $globals.InvalidAssignmentError);
  30082. $core.addClass('ShadowingVariableError', $globals.SemanticError, ['variableName'], 'Compiler-Exceptions');
  30083. //>>excludeStart("ide", pragmas.excludeIdeData);
  30084. $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.";
  30085. //>>excludeEnd("ide");
  30086. $core.addMethod(
  30087. $core.method({
  30088. selector: "messageText",
  30089. protocol: 'accessing',
  30090. fn: function (){
  30091. var self=this;
  30092. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  30093. return $core.withContext(function($ctx1) {
  30094. //>>excludeEnd("ctx");
  30095. var $1;
  30096. $1=$recv("Variable shadowing error: ".__comma(self._variableName())).__comma(" is already defined");
  30097. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  30098. $ctx1.sendIdx[","]=1;
  30099. //>>excludeEnd("ctx");
  30100. return $1;
  30101. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  30102. }, function($ctx1) {$ctx1.fill(self,"messageText",{},$globals.ShadowingVariableError)});
  30103. //>>excludeEnd("ctx");
  30104. },
  30105. //>>excludeStart("ide", pragmas.excludeIdeData);
  30106. args: [],
  30107. source: "messageText\x0a\x09^ 'Variable shadowing error: ', self variableName, ' is already defined'",
  30108. referencedClasses: [],
  30109. //>>excludeEnd("ide");
  30110. messageSends: [",", "variableName"]
  30111. }),
  30112. $globals.ShadowingVariableError);
  30113. $core.addMethod(
  30114. $core.method({
  30115. selector: "variableName",
  30116. protocol: 'accessing',
  30117. fn: function (){
  30118. var self=this;
  30119. var $1;
  30120. $1=self["@variableName"];
  30121. return $1;
  30122. },
  30123. //>>excludeStart("ide", pragmas.excludeIdeData);
  30124. args: [],
  30125. source: "variableName\x0a\x09^ variableName",
  30126. referencedClasses: [],
  30127. //>>excludeEnd("ide");
  30128. messageSends: []
  30129. }),
  30130. $globals.ShadowingVariableError);
  30131. $core.addMethod(
  30132. $core.method({
  30133. selector: "variableName:",
  30134. protocol: 'accessing',
  30135. fn: function (aString){
  30136. var self=this;
  30137. self["@variableName"]=aString;
  30138. return self;
  30139. },
  30140. //>>excludeStart("ide", pragmas.excludeIdeData);
  30141. args: ["aString"],
  30142. source: "variableName: aString\x0a\x09variableName := aString",
  30143. referencedClasses: [],
  30144. //>>excludeEnd("ide");
  30145. messageSends: []
  30146. }),
  30147. $globals.ShadowingVariableError);
  30148. $core.addClass('UnknownVariableError', $globals.SemanticError, ['variableName'], 'Compiler-Exceptions');
  30149. //>>excludeStart("ide", pragmas.excludeIdeData);
  30150. $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.";
  30151. //>>excludeEnd("ide");
  30152. $core.addMethod(
  30153. $core.method({
  30154. selector: "messageText",
  30155. protocol: 'accessing',
  30156. fn: function (){
  30157. var self=this;
  30158. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  30159. return $core.withContext(function($ctx1) {
  30160. //>>excludeEnd("ctx");
  30161. var $1;
  30162. $1=$recv("Unknown Variable error: ".__comma(self._variableName())).__comma(" is not defined");
  30163. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  30164. $ctx1.sendIdx[","]=1;
  30165. //>>excludeEnd("ctx");
  30166. return $1;
  30167. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  30168. }, function($ctx1) {$ctx1.fill(self,"messageText",{},$globals.UnknownVariableError)});
  30169. //>>excludeEnd("ctx");
  30170. },
  30171. //>>excludeStart("ide", pragmas.excludeIdeData);
  30172. args: [],
  30173. source: "messageText\x0a\x09^ 'Unknown Variable error: ', self variableName, ' is not defined'",
  30174. referencedClasses: [],
  30175. //>>excludeEnd("ide");
  30176. messageSends: [",", "variableName"]
  30177. }),
  30178. $globals.UnknownVariableError);
  30179. $core.addMethod(
  30180. $core.method({
  30181. selector: "variableName",
  30182. protocol: 'accessing',
  30183. fn: function (){
  30184. var self=this;
  30185. var $1;
  30186. $1=self["@variableName"];
  30187. return $1;
  30188. },
  30189. //>>excludeStart("ide", pragmas.excludeIdeData);
  30190. args: [],
  30191. source: "variableName\x0a\x09^ variableName",
  30192. referencedClasses: [],
  30193. //>>excludeEnd("ide");
  30194. messageSends: []
  30195. }),
  30196. $globals.UnknownVariableError);
  30197. $core.addMethod(
  30198. $core.method({
  30199. selector: "variableName:",
  30200. protocol: 'accessing',
  30201. fn: function (aString){
  30202. var self=this;
  30203. self["@variableName"]=aString;
  30204. return self;
  30205. },
  30206. //>>excludeStart("ide", pragmas.excludeIdeData);
  30207. args: ["aString"],
  30208. source: "variableName: aString\x0a\x09variableName := aString",
  30209. referencedClasses: [],
  30210. //>>excludeEnd("ide");
  30211. messageSends: []
  30212. }),
  30213. $globals.UnknownVariableError);
  30214. $core.addClass('RethrowErrorHandler', $globals.Object, [], 'Compiler-Exceptions');
  30215. //>>excludeStart("ide", pragmas.excludeIdeData);
  30216. $globals.RethrowErrorHandler.comment="This class is used in the commandline version of the compiler.\x0aIt uses the handleError: message of ErrorHandler for printing the stacktrace and throws the error again as JS exception.\x0aAs a result Smalltalk errors are not swallowd by the Amber runtime and compilation can be aborted.";
  30217. //>>excludeEnd("ide");
  30218. $core.addMethod(
  30219. $core.method({
  30220. selector: "basicSignal:",
  30221. protocol: 'error handling',
  30222. fn: function (anError){
  30223. var self=this;
  30224. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  30225. return $core.withContext(function($ctx1) {
  30226. //>>excludeEnd("ctx");
  30227. throw anError;
  30228. return self;
  30229. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  30230. }, function($ctx1) {$ctx1.fill(self,"basicSignal:",{anError:anError},$globals.RethrowErrorHandler)});
  30231. //>>excludeEnd("ctx");
  30232. },
  30233. //>>excludeStart("ide", pragmas.excludeIdeData);
  30234. args: ["anError"],
  30235. source: "basicSignal: anError\x0a <throw anError>",
  30236. referencedClasses: [],
  30237. //>>excludeEnd("ide");
  30238. messageSends: []
  30239. }),
  30240. $globals.RethrowErrorHandler);
  30241. $core.addMethod(
  30242. $core.method({
  30243. selector: "handleError:",
  30244. protocol: 'error handling',
  30245. fn: function (anError){
  30246. var self=this;
  30247. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  30248. return $core.withContext(function($ctx1) {
  30249. //>>excludeEnd("ctx");
  30250. self._basicSignal_(anError);
  30251. return self;
  30252. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  30253. }, function($ctx1) {$ctx1.fill(self,"handleError:",{anError:anError},$globals.RethrowErrorHandler)});
  30254. //>>excludeEnd("ctx");
  30255. },
  30256. //>>excludeStart("ide", pragmas.excludeIdeData);
  30257. args: ["anError"],
  30258. source: "handleError: anError\x0a self basicSignal: anError",
  30259. referencedClasses: [],
  30260. //>>excludeEnd("ide");
  30261. messageSends: ["basicSignal:"]
  30262. }),
  30263. $globals.RethrowErrorHandler);
  30264. });
  30265. define("amber_core/Compiler-Core", ["amber/boot", "amber_core/Kernel-Objects", "amber_core/Kernel-Infrastructure", "amber_core/Kernel-Collections"], function($boot){
  30266. var $core=$boot.api,nil=$boot.nil,$recv=$boot.asReceiver,$globals=$boot.globals;
  30267. var smalltalk=$core,_st=$recv,globals=$globals;
  30268. $core.addPackage('Compiler-Core');
  30269. $core.packages["Compiler-Core"].transport = {"type":"amd","amdNamespace":"amber_core"};
  30270. $core.addClass('AbstractCodeGenerator', $globals.Object, ['currentClass', 'source'], 'Compiler-Core');
  30271. //>>excludeStart("ide", pragmas.excludeIdeData);
  30272. $globals.AbstractCodeGenerator.comment="I am the abstract super class of all code generators and provide their common API.";
  30273. //>>excludeEnd("ide");
  30274. $core.addMethod(
  30275. $core.method({
  30276. selector: "classNameFor:",
  30277. protocol: 'accessing',
  30278. fn: function (aClass){
  30279. var self=this;
  30280. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  30281. return $core.withContext(function($ctx1) {
  30282. //>>excludeEnd("ctx");
  30283. var $2,$3,$4,$1;
  30284. $2=$recv(aClass)._isMetaclass();
  30285. if($core.assert($2)){
  30286. $3=$recv($recv(aClass)._instanceClass())._name();
  30287. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  30288. $ctx1.sendIdx["name"]=1;
  30289. //>>excludeEnd("ctx");
  30290. $1=$recv($3).__comma(".klass");
  30291. } else {
  30292. $4=$recv(aClass)._isNil();
  30293. if($core.assert($4)){
  30294. $1="nil";
  30295. } else {
  30296. $1=$recv(aClass)._name();
  30297. };
  30298. };
  30299. return $1;
  30300. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  30301. }, function($ctx1) {$ctx1.fill(self,"classNameFor:",{aClass:aClass},$globals.AbstractCodeGenerator)});
  30302. //>>excludeEnd("ctx");
  30303. },
  30304. //>>excludeStart("ide", pragmas.excludeIdeData);
  30305. args: ["aClass"],
  30306. source: "classNameFor: aClass\x0a\x09^ aClass isMetaclass\x0a\x09\x09ifTrue: [ aClass instanceClass name, '.klass' ]\x0a\x09\x09ifFalse: [\x0a\x09\x09aClass isNil\x0a\x09\x09\x09ifTrue: [ 'nil' ]\x0a\x09\x09\x09ifFalse: [ aClass name ]]",
  30307. referencedClasses: [],
  30308. //>>excludeEnd("ide");
  30309. messageSends: ["ifTrue:ifFalse:", "isMetaclass", ",", "name", "instanceClass", "isNil"]
  30310. }),
  30311. $globals.AbstractCodeGenerator);
  30312. $core.addMethod(
  30313. $core.method({
  30314. selector: "compileNode:",
  30315. protocol: 'compiling',
  30316. fn: function (aNode){
  30317. var self=this;
  30318. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  30319. return $core.withContext(function($ctx1) {
  30320. //>>excludeEnd("ctx");
  30321. self._subclassResponsibility();
  30322. return self;
  30323. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  30324. }, function($ctx1) {$ctx1.fill(self,"compileNode:",{aNode:aNode},$globals.AbstractCodeGenerator)});
  30325. //>>excludeEnd("ctx");
  30326. },
  30327. //>>excludeStart("ide", pragmas.excludeIdeData);
  30328. args: ["aNode"],
  30329. source: "compileNode: aNode\x0a\x09self subclassResponsibility",
  30330. referencedClasses: [],
  30331. //>>excludeEnd("ide");
  30332. messageSends: ["subclassResponsibility"]
  30333. }),
  30334. $globals.AbstractCodeGenerator);
  30335. $core.addMethod(
  30336. $core.method({
  30337. selector: "currentClass",
  30338. protocol: 'accessing',
  30339. fn: function (){
  30340. var self=this;
  30341. var $1;
  30342. $1=self["@currentClass"];
  30343. return $1;
  30344. },
  30345. //>>excludeStart("ide", pragmas.excludeIdeData);
  30346. args: [],
  30347. source: "currentClass\x0a\x09^ currentClass",
  30348. referencedClasses: [],
  30349. //>>excludeEnd("ide");
  30350. messageSends: []
  30351. }),
  30352. $globals.AbstractCodeGenerator);
  30353. $core.addMethod(
  30354. $core.method({
  30355. selector: "currentClass:",
  30356. protocol: 'accessing',
  30357. fn: function (aClass){
  30358. var self=this;
  30359. self["@currentClass"]=aClass;
  30360. return self;
  30361. },
  30362. //>>excludeStart("ide", pragmas.excludeIdeData);
  30363. args: ["aClass"],
  30364. source: "currentClass: aClass\x0a\x09currentClass := aClass",
  30365. referencedClasses: [],
  30366. //>>excludeEnd("ide");
  30367. messageSends: []
  30368. }),
  30369. $globals.AbstractCodeGenerator);
  30370. $core.addMethod(
  30371. $core.method({
  30372. selector: "pseudoVariables",
  30373. protocol: 'accessing',
  30374. fn: function (){
  30375. var self=this;
  30376. function $Smalltalk(){return $globals.Smalltalk||(typeof Smalltalk=="undefined"?nil:Smalltalk)}
  30377. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  30378. return $core.withContext(function($ctx1) {
  30379. //>>excludeEnd("ctx");
  30380. var $1;
  30381. $1=$recv($Smalltalk())._pseudoVariableNames();
  30382. return $1;
  30383. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  30384. }, function($ctx1) {$ctx1.fill(self,"pseudoVariables",{},$globals.AbstractCodeGenerator)});
  30385. //>>excludeEnd("ctx");
  30386. },
  30387. //>>excludeStart("ide", pragmas.excludeIdeData);
  30388. args: [],
  30389. source: "pseudoVariables\x0a\x09^ Smalltalk pseudoVariableNames",
  30390. referencedClasses: ["Smalltalk"],
  30391. //>>excludeEnd("ide");
  30392. messageSends: ["pseudoVariableNames"]
  30393. }),
  30394. $globals.AbstractCodeGenerator);
  30395. $core.addMethod(
  30396. $core.method({
  30397. selector: "source",
  30398. protocol: 'accessing',
  30399. fn: function (){
  30400. var self=this;
  30401. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  30402. return $core.withContext(function($ctx1) {
  30403. //>>excludeEnd("ctx");
  30404. var $2,$1,$receiver;
  30405. $2=self["@source"];
  30406. if(($receiver = $2) == null || $receiver.isNil){
  30407. $1="";
  30408. } else {
  30409. $1=$2;
  30410. };
  30411. return $1;
  30412. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  30413. }, function($ctx1) {$ctx1.fill(self,"source",{},$globals.AbstractCodeGenerator)});
  30414. //>>excludeEnd("ctx");
  30415. },
  30416. //>>excludeStart("ide", pragmas.excludeIdeData);
  30417. args: [],
  30418. source: "source\x0a\x09^ source ifNil: [ '' ]",
  30419. referencedClasses: [],
  30420. //>>excludeEnd("ide");
  30421. messageSends: ["ifNil:"]
  30422. }),
  30423. $globals.AbstractCodeGenerator);
  30424. $core.addMethod(
  30425. $core.method({
  30426. selector: "source:",
  30427. protocol: 'accessing',
  30428. fn: function (aString){
  30429. var self=this;
  30430. self["@source"]=aString;
  30431. return self;
  30432. },
  30433. //>>excludeStart("ide", pragmas.excludeIdeData);
  30434. args: ["aString"],
  30435. source: "source: aString\x0a\x09source := aString",
  30436. referencedClasses: [],
  30437. //>>excludeEnd("ide");
  30438. messageSends: []
  30439. }),
  30440. $globals.AbstractCodeGenerator);
  30441. $core.addClass('CodeGenerator', $globals.AbstractCodeGenerator, [], 'Compiler-Core');
  30442. //>>excludeStart("ide", pragmas.excludeIdeData);
  30443. $globals.CodeGenerator.comment="I am a basic code generator. I generate a valid JavaScript output, but no not perform any inlining.\x0aSee `InliningCodeGenerator` for an optimized JavaScript code generation.";
  30444. //>>excludeEnd("ide");
  30445. $core.addMethod(
  30446. $core.method({
  30447. selector: "compileNode:",
  30448. protocol: 'compiling',
  30449. fn: function (aNode){
  30450. var self=this;
  30451. var ir,stream;
  30452. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  30453. return $core.withContext(function($ctx1) {
  30454. //>>excludeEnd("ctx");
  30455. var $2,$3,$1;
  30456. $recv(self._semanticAnalyzer())._visit_(aNode);
  30457. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  30458. $ctx1.sendIdx["visit:"]=1;
  30459. //>>excludeEnd("ctx");
  30460. ir=$recv(self._translator())._visit_(aNode);
  30461. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  30462. $ctx1.sendIdx["visit:"]=2;
  30463. //>>excludeEnd("ctx");
  30464. $2=self._irTranslator();
  30465. $recv($2)._currentClass_(self._currentClass());
  30466. $recv($2)._visit_(ir);
  30467. $3=$recv($2)._contents();
  30468. $1=$3;
  30469. return $1;
  30470. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  30471. }, function($ctx1) {$ctx1.fill(self,"compileNode:",{aNode:aNode,ir:ir,stream:stream},$globals.CodeGenerator)});
  30472. //>>excludeEnd("ctx");
  30473. },
  30474. //>>excludeStart("ide", pragmas.excludeIdeData);
  30475. args: ["aNode"],
  30476. source: "compileNode: aNode\x0a\x09| ir stream |\x0a\x09self semanticAnalyzer visit: aNode.\x0a\x09ir := self translator visit: aNode.\x0a\x09^ self irTranslator\x0a\x09\x09currentClass: self currentClass;\x0a\x09\x09visit: ir;\x0a\x09\x09contents",
  30477. referencedClasses: [],
  30478. //>>excludeEnd("ide");
  30479. messageSends: ["visit:", "semanticAnalyzer", "translator", "currentClass:", "irTranslator", "currentClass", "contents"]
  30480. }),
  30481. $globals.CodeGenerator);
  30482. $core.addMethod(
  30483. $core.method({
  30484. selector: "irTranslator",
  30485. protocol: 'compiling',
  30486. fn: function (){
  30487. var self=this;
  30488. function $IRJSTranslator(){return $globals.IRJSTranslator||(typeof IRJSTranslator=="undefined"?nil:IRJSTranslator)}
  30489. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  30490. return $core.withContext(function($ctx1) {
  30491. //>>excludeEnd("ctx");
  30492. var $1;
  30493. $1=$recv($IRJSTranslator())._new();
  30494. return $1;
  30495. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  30496. }, function($ctx1) {$ctx1.fill(self,"irTranslator",{},$globals.CodeGenerator)});
  30497. //>>excludeEnd("ctx");
  30498. },
  30499. //>>excludeStart("ide", pragmas.excludeIdeData);
  30500. args: [],
  30501. source: "irTranslator\x0a\x09^ IRJSTranslator new",
  30502. referencedClasses: ["IRJSTranslator"],
  30503. //>>excludeEnd("ide");
  30504. messageSends: ["new"]
  30505. }),
  30506. $globals.CodeGenerator);
  30507. $core.addMethod(
  30508. $core.method({
  30509. selector: "semanticAnalyzer",
  30510. protocol: 'compiling',
  30511. fn: function (){
  30512. var self=this;
  30513. function $SemanticAnalyzer(){return $globals.SemanticAnalyzer||(typeof SemanticAnalyzer=="undefined"?nil:SemanticAnalyzer)}
  30514. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  30515. return $core.withContext(function($ctx1) {
  30516. //>>excludeEnd("ctx");
  30517. var $1;
  30518. $1=$recv($SemanticAnalyzer())._on_(self._currentClass());
  30519. return $1;
  30520. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  30521. }, function($ctx1) {$ctx1.fill(self,"semanticAnalyzer",{},$globals.CodeGenerator)});
  30522. //>>excludeEnd("ctx");
  30523. },
  30524. //>>excludeStart("ide", pragmas.excludeIdeData);
  30525. args: [],
  30526. source: "semanticAnalyzer\x0a\x09^ SemanticAnalyzer on: self currentClass",
  30527. referencedClasses: ["SemanticAnalyzer"],
  30528. //>>excludeEnd("ide");
  30529. messageSends: ["on:", "currentClass"]
  30530. }),
  30531. $globals.CodeGenerator);
  30532. $core.addMethod(
  30533. $core.method({
  30534. selector: "translator",
  30535. protocol: 'compiling',
  30536. fn: function (){
  30537. var self=this;
  30538. function $IRASTTranslator(){return $globals.IRASTTranslator||(typeof IRASTTranslator=="undefined"?nil:IRASTTranslator)}
  30539. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  30540. return $core.withContext(function($ctx1) {
  30541. //>>excludeEnd("ctx");
  30542. var $2,$3,$1;
  30543. $2=$recv($IRASTTranslator())._new();
  30544. $recv($2)._source_(self._source());
  30545. $recv($2)._theClass_(self._currentClass());
  30546. $3=$recv($2)._yourself();
  30547. $1=$3;
  30548. return $1;
  30549. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  30550. }, function($ctx1) {$ctx1.fill(self,"translator",{},$globals.CodeGenerator)});
  30551. //>>excludeEnd("ctx");
  30552. },
  30553. //>>excludeStart("ide", pragmas.excludeIdeData);
  30554. args: [],
  30555. source: "translator\x0a\x09^ IRASTTranslator new\x0a\x09\x09source: self source;\x0a\x09\x09theClass: self currentClass;\x0a\x09\x09yourself",
  30556. referencedClasses: ["IRASTTranslator"],
  30557. //>>excludeEnd("ide");
  30558. messageSends: ["source:", "new", "source", "theClass:", "currentClass", "yourself"]
  30559. }),
  30560. $globals.CodeGenerator);
  30561. $core.addClass('Compiler', $globals.Object, ['currentClass', 'source', 'unknownVariables', 'codeGeneratorClass'], 'Compiler-Core');
  30562. //>>excludeStart("ide", pragmas.excludeIdeData);
  30563. $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`";
  30564. //>>excludeEnd("ide");
  30565. $core.addMethod(
  30566. $core.method({
  30567. selector: "codeGeneratorClass",
  30568. protocol: 'accessing',
  30569. fn: function (){
  30570. var self=this;
  30571. function $InliningCodeGenerator(){return $globals.InliningCodeGenerator||(typeof InliningCodeGenerator=="undefined"?nil:InliningCodeGenerator)}
  30572. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  30573. return $core.withContext(function($ctx1) {
  30574. //>>excludeEnd("ctx");
  30575. var $2,$1,$receiver;
  30576. $2=self["@codeGeneratorClass"];
  30577. if(($receiver = $2) == null || $receiver.isNil){
  30578. $1=$InliningCodeGenerator();
  30579. } else {
  30580. $1=$2;
  30581. };
  30582. return $1;
  30583. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  30584. }, function($ctx1) {$ctx1.fill(self,"codeGeneratorClass",{},$globals.Compiler)});
  30585. //>>excludeEnd("ctx");
  30586. },
  30587. //>>excludeStart("ide", pragmas.excludeIdeData);
  30588. args: [],
  30589. source: "codeGeneratorClass\x0a\x09^ codeGeneratorClass ifNil: [ InliningCodeGenerator ]",
  30590. referencedClasses: ["InliningCodeGenerator"],
  30591. //>>excludeEnd("ide");
  30592. messageSends: ["ifNil:"]
  30593. }),
  30594. $globals.Compiler);
  30595. $core.addMethod(
  30596. $core.method({
  30597. selector: "codeGeneratorClass:",
  30598. protocol: 'accessing',
  30599. fn: function (aClass){
  30600. var self=this;
  30601. self["@codeGeneratorClass"]=aClass;
  30602. return self;
  30603. },
  30604. //>>excludeStart("ide", pragmas.excludeIdeData);
  30605. args: ["aClass"],
  30606. source: "codeGeneratorClass: aClass\x0a\x09codeGeneratorClass := aClass",
  30607. referencedClasses: [],
  30608. //>>excludeEnd("ide");
  30609. messageSends: []
  30610. }),
  30611. $globals.Compiler);
  30612. $core.addMethod(
  30613. $core.method({
  30614. selector: "compile:",
  30615. protocol: 'compiling',
  30616. fn: function (aString){
  30617. var self=this;
  30618. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  30619. return $core.withContext(function($ctx1) {
  30620. //>>excludeEnd("ctx");
  30621. var $1;
  30622. $1=self._compileNode_(self._parse_(aString));
  30623. return $1;
  30624. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  30625. }, function($ctx1) {$ctx1.fill(self,"compile:",{aString:aString},$globals.Compiler)});
  30626. //>>excludeEnd("ctx");
  30627. },
  30628. //>>excludeStart("ide", pragmas.excludeIdeData);
  30629. args: ["aString"],
  30630. source: "compile: aString\x0a\x09^ self compileNode: (self parse: aString)",
  30631. referencedClasses: [],
  30632. //>>excludeEnd("ide");
  30633. messageSends: ["compileNode:", "parse:"]
  30634. }),
  30635. $globals.Compiler);
  30636. $core.addMethod(
  30637. $core.method({
  30638. selector: "compile:forClass:",
  30639. protocol: 'compiling',
  30640. fn: function (aString,aClass){
  30641. var self=this;
  30642. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  30643. return $core.withContext(function($ctx1) {
  30644. //>>excludeEnd("ctx");
  30645. var $1;
  30646. self._currentClass_(aClass);
  30647. self._source_(aString);
  30648. $1=self._compile_(aString);
  30649. return $1;
  30650. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  30651. }, function($ctx1) {$ctx1.fill(self,"compile:forClass:",{aString:aString,aClass:aClass},$globals.Compiler)});
  30652. //>>excludeEnd("ctx");
  30653. },
  30654. //>>excludeStart("ide", pragmas.excludeIdeData);
  30655. args: ["aString", "aClass"],
  30656. source: "compile: aString forClass: aClass\x0a\x09self currentClass: aClass.\x0a\x09self source: aString.\x0a\x09^ self compile: aString",
  30657. referencedClasses: [],
  30658. //>>excludeEnd("ide");
  30659. messageSends: ["currentClass:", "source:", "compile:"]
  30660. }),
  30661. $globals.Compiler);
  30662. $core.addMethod(
  30663. $core.method({
  30664. selector: "compileExpression:",
  30665. protocol: 'compiling',
  30666. fn: function (aString){
  30667. var self=this;
  30668. function $DoIt(){return $globals.DoIt||(typeof DoIt=="undefined"?nil:DoIt)}
  30669. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  30670. return $core.withContext(function($ctx1) {
  30671. //>>excludeEnd("ctx");
  30672. var $1,$2;
  30673. self._currentClass_($DoIt());
  30674. $1=$recv("doIt ^ [ ".__comma(aString)).__comma(" ] value");
  30675. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  30676. $ctx1.sendIdx[","]=1;
  30677. //>>excludeEnd("ctx");
  30678. self._source_($1);
  30679. $2=self._compileNode_(self._parse_(self._source()));
  30680. return $2;
  30681. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  30682. }, function($ctx1) {$ctx1.fill(self,"compileExpression:",{aString:aString},$globals.Compiler)});
  30683. //>>excludeEnd("ctx");
  30684. },
  30685. //>>excludeStart("ide", pragmas.excludeIdeData);
  30686. args: ["aString"],
  30687. source: "compileExpression: aString\x0a\x09self currentClass: DoIt.\x0a\x09self source: 'doIt ^ [ ', aString, ' ] value'.\x0a\x09^ self compileNode: (self parse: self source)",
  30688. referencedClasses: ["DoIt"],
  30689. //>>excludeEnd("ide");
  30690. messageSends: ["currentClass:", "source:", ",", "compileNode:", "parse:", "source"]
  30691. }),
  30692. $globals.Compiler);
  30693. $core.addMethod(
  30694. $core.method({
  30695. selector: "compileExpression:on:",
  30696. protocol: 'compiling',
  30697. fn: function (aString,anObject){
  30698. var self=this;
  30699. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  30700. return $core.withContext(function($ctx1) {
  30701. //>>excludeEnd("ctx");
  30702. var $1,$2;
  30703. self._currentClass_($recv(anObject)._class());
  30704. $1=$recv("xxxDoIt ^ [ ".__comma(aString)).__comma(" ] value");
  30705. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  30706. $ctx1.sendIdx[","]=1;
  30707. //>>excludeEnd("ctx");
  30708. self._source_($1);
  30709. $2=self._compileNode_(self._parse_(self._source()));
  30710. return $2;
  30711. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  30712. }, function($ctx1) {$ctx1.fill(self,"compileExpression:on:",{aString:aString,anObject:anObject},$globals.Compiler)});
  30713. //>>excludeEnd("ctx");
  30714. },
  30715. //>>excludeStart("ide", pragmas.excludeIdeData);
  30716. args: ["aString", "anObject"],
  30717. source: "compileExpression: aString on: anObject\x0a\x09self currentClass: anObject class.\x0a\x09self source: 'xxxDoIt ^ [ ', aString, ' ] value'.\x0a\x09^ self compileNode: (self parse: self source)",
  30718. referencedClasses: [],
  30719. //>>excludeEnd("ide");
  30720. messageSends: ["currentClass:", "class", "source:", ",", "compileNode:", "parse:", "source"]
  30721. }),
  30722. $globals.Compiler);
  30723. $core.addMethod(
  30724. $core.method({
  30725. selector: "compileNode:",
  30726. protocol: 'compiling',
  30727. fn: function (aNode){
  30728. var self=this;
  30729. var generator,result;
  30730. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  30731. return $core.withContext(function($ctx1) {
  30732. //>>excludeEnd("ctx");
  30733. var $1,$2,$3;
  30734. generator=$recv(self._codeGeneratorClass())._new();
  30735. $1=generator;
  30736. $recv($1)._source_(self._source());
  30737. $2=$recv($1)._currentClass_(self._currentClass());
  30738. result=$recv(generator)._compileNode_(aNode);
  30739. self._unknownVariables_([]);
  30740. $3=result;
  30741. return $3;
  30742. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  30743. }, function($ctx1) {$ctx1.fill(self,"compileNode:",{aNode:aNode,generator:generator,result:result},$globals.Compiler)});
  30744. //>>excludeEnd("ctx");
  30745. },
  30746. //>>excludeStart("ide", pragmas.excludeIdeData);
  30747. args: ["aNode"],
  30748. source: "compileNode: aNode\x0a\x09| generator result |\x0a\x09generator := self codeGeneratorClass new.\x0a\x09generator\x0a\x09\x09source: self source;\x0a\x09\x09currentClass: self currentClass.\x0a\x09result := generator compileNode: aNode.\x0a\x09self unknownVariables: #().\x0a\x09^ result",
  30749. referencedClasses: [],
  30750. //>>excludeEnd("ide");
  30751. messageSends: ["new", "codeGeneratorClass", "source:", "source", "currentClass:", "currentClass", "compileNode:", "unknownVariables:"]
  30752. }),
  30753. $globals.Compiler);
  30754. $core.addMethod(
  30755. $core.method({
  30756. selector: "currentClass",
  30757. protocol: 'accessing',
  30758. fn: function (){
  30759. var self=this;
  30760. var $1;
  30761. $1=self["@currentClass"];
  30762. return $1;
  30763. },
  30764. //>>excludeStart("ide", pragmas.excludeIdeData);
  30765. args: [],
  30766. source: "currentClass\x0a\x09^ currentClass",
  30767. referencedClasses: [],
  30768. //>>excludeEnd("ide");
  30769. messageSends: []
  30770. }),
  30771. $globals.Compiler);
  30772. $core.addMethod(
  30773. $core.method({
  30774. selector: "currentClass:",
  30775. protocol: 'accessing',
  30776. fn: function (aClass){
  30777. var self=this;
  30778. self["@currentClass"]=aClass;
  30779. return self;
  30780. },
  30781. //>>excludeStart("ide", pragmas.excludeIdeData);
  30782. args: ["aClass"],
  30783. source: "currentClass: aClass\x0a\x09currentClass := aClass",
  30784. referencedClasses: [],
  30785. //>>excludeEnd("ide");
  30786. messageSends: []
  30787. }),
  30788. $globals.Compiler);
  30789. $core.addMethod(
  30790. $core.method({
  30791. selector: "eval:",
  30792. protocol: 'compiling',
  30793. fn: function (aString){
  30794. var self=this;
  30795. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  30796. return $core.withContext(function($ctx1) {
  30797. //>>excludeEnd("ctx");
  30798. return eval(aString);
  30799. return self;
  30800. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  30801. }, function($ctx1) {$ctx1.fill(self,"eval:",{aString:aString},$globals.Compiler)});
  30802. //>>excludeEnd("ctx");
  30803. },
  30804. //>>excludeStart("ide", pragmas.excludeIdeData);
  30805. args: ["aString"],
  30806. source: "eval: aString\x0a\x09<return eval(aString)>",
  30807. referencedClasses: [],
  30808. //>>excludeEnd("ide");
  30809. messageSends: []
  30810. }),
  30811. $globals.Compiler);
  30812. $core.addMethod(
  30813. $core.method({
  30814. selector: "evaluateExpression:",
  30815. protocol: 'compiling',
  30816. fn: function (aString){
  30817. var self=this;
  30818. function $DoIt(){return $globals.DoIt||(typeof DoIt=="undefined"?nil:DoIt)}
  30819. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  30820. return $core.withContext(function($ctx1) {
  30821. //>>excludeEnd("ctx");
  30822. var $1;
  30823. $1=self._evaluateExpression_on_(aString,$recv($DoIt())._new());
  30824. return $1;
  30825. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  30826. }, function($ctx1) {$ctx1.fill(self,"evaluateExpression:",{aString:aString},$globals.Compiler)});
  30827. //>>excludeEnd("ctx");
  30828. },
  30829. //>>excludeStart("ide", pragmas.excludeIdeData);
  30830. args: ["aString"],
  30831. 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",
  30832. referencedClasses: ["DoIt"],
  30833. //>>excludeEnd("ide");
  30834. messageSends: ["evaluateExpression:on:", "new"]
  30835. }),
  30836. $globals.Compiler);
  30837. $core.addMethod(
  30838. $core.method({
  30839. selector: "evaluateExpression:on:",
  30840. protocol: 'compiling',
  30841. fn: function (aString,anObject){
  30842. var self=this;
  30843. var result,method;
  30844. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  30845. return $core.withContext(function($ctx1) {
  30846. //>>excludeEnd("ctx");
  30847. var $1,$2;
  30848. method=self._eval_(self._compileExpression_on_(aString,anObject));
  30849. $recv(method)._protocol_("**xxxDoIt");
  30850. $1=$recv(anObject)._class();
  30851. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  30852. $ctx1.sendIdx["class"]=1;
  30853. //>>excludeEnd("ctx");
  30854. $recv($1)._addCompiledMethod_(method);
  30855. result=$recv(anObject)._xxxDoIt();
  30856. $recv($recv(anObject)._class())._removeCompiledMethod_(method);
  30857. $2=result;
  30858. return $2;
  30859. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  30860. }, function($ctx1) {$ctx1.fill(self,"evaluateExpression:on:",{aString:aString,anObject:anObject,result:result,method:method},$globals.Compiler)});
  30861. //>>excludeEnd("ctx");
  30862. },
  30863. //>>excludeStart("ide", pragmas.excludeIdeData);
  30864. args: ["aString", "anObject"],
  30865. 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 eval: (self compileExpression: aString on: anObject).\x0a\x09method protocol: '**xxxDoIt'.\x0a\x09anObject class addCompiledMethod: method.\x0a\x09result := anObject xxxDoIt.\x0a\x09anObject class removeCompiledMethod: method.\x0a\x09^ result",
  30866. referencedClasses: [],
  30867. //>>excludeEnd("ide");
  30868. messageSends: ["eval:", "compileExpression:on:", "protocol:", "addCompiledMethod:", "class", "xxxDoIt", "removeCompiledMethod:"]
  30869. }),
  30870. $globals.Compiler);
  30871. $core.addMethod(
  30872. $core.method({
  30873. selector: "install:forClass:protocol:",
  30874. protocol: 'compiling',
  30875. fn: function (aString,aBehavior,anotherString){
  30876. var self=this;
  30877. function $ClassBuilder(){return $globals.ClassBuilder||(typeof ClassBuilder=="undefined"?nil:ClassBuilder)}
  30878. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  30879. return $core.withContext(function($ctx1) {
  30880. //>>excludeEnd("ctx");
  30881. var $1;
  30882. $1=$recv($recv($ClassBuilder())._new())._installMethod_forClass_protocol_(self._eval_(self._compile_forClass_(aString,aBehavior)),aBehavior,anotherString);
  30883. return $1;
  30884. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  30885. }, function($ctx1) {$ctx1.fill(self,"install:forClass:protocol:",{aString:aString,aBehavior:aBehavior,anotherString:anotherString},$globals.Compiler)});
  30886. //>>excludeEnd("ctx");
  30887. },
  30888. //>>excludeStart("ide", pragmas.excludeIdeData);
  30889. args: ["aString", "aBehavior", "anotherString"],
  30890. source: "install: aString forClass: aBehavior protocol: anotherString\x0a\x09^ ClassBuilder new\x0a\x09\x09installMethod: (self eval: (self compile: aString forClass: aBehavior))\x0a\x09\x09forClass: aBehavior\x0a\x09\x09protocol: anotherString",
  30891. referencedClasses: ["ClassBuilder"],
  30892. //>>excludeEnd("ide");
  30893. messageSends: ["installMethod:forClass:protocol:", "new", "eval:", "compile:forClass:"]
  30894. }),
  30895. $globals.Compiler);
  30896. $core.addMethod(
  30897. $core.method({
  30898. selector: "parse:",
  30899. protocol: 'compiling',
  30900. fn: function (aString){
  30901. var self=this;
  30902. function $Smalltalk(){return $globals.Smalltalk||(typeof Smalltalk=="undefined"?nil:Smalltalk)}
  30903. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  30904. return $core.withContext(function($ctx1) {
  30905. //>>excludeEnd("ctx");
  30906. var $1;
  30907. $1=$recv($Smalltalk())._parse_(aString);
  30908. return $1;
  30909. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  30910. }, function($ctx1) {$ctx1.fill(self,"parse:",{aString:aString},$globals.Compiler)});
  30911. //>>excludeEnd("ctx");
  30912. },
  30913. //>>excludeStart("ide", pragmas.excludeIdeData);
  30914. args: ["aString"],
  30915. source: "parse: aString\x0a\x09^ Smalltalk parse: aString",
  30916. referencedClasses: ["Smalltalk"],
  30917. //>>excludeEnd("ide");
  30918. messageSends: ["parse:"]
  30919. }),
  30920. $globals.Compiler);
  30921. $core.addMethod(
  30922. $core.method({
  30923. selector: "parseExpression:",
  30924. protocol: 'compiling',
  30925. fn: function (aString){
  30926. var self=this;
  30927. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  30928. return $core.withContext(function($ctx1) {
  30929. //>>excludeEnd("ctx");
  30930. var $2,$1;
  30931. $2=$recv("doIt ^ [ ".__comma(aString)).__comma(" ] value");
  30932. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  30933. $ctx1.sendIdx[","]=1;
  30934. //>>excludeEnd("ctx");
  30935. $1=self._parse_($2);
  30936. return $1;
  30937. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  30938. }, function($ctx1) {$ctx1.fill(self,"parseExpression:",{aString:aString},$globals.Compiler)});
  30939. //>>excludeEnd("ctx");
  30940. },
  30941. //>>excludeStart("ide", pragmas.excludeIdeData);
  30942. args: ["aString"],
  30943. source: "parseExpression: aString\x0a\x09^ self parse: 'doIt ^ [ ', aString, ' ] value'",
  30944. referencedClasses: [],
  30945. //>>excludeEnd("ide");
  30946. messageSends: ["parse:", ","]
  30947. }),
  30948. $globals.Compiler);
  30949. $core.addMethod(
  30950. $core.method({
  30951. selector: "recompile:",
  30952. protocol: 'compiling',
  30953. fn: function (aClass){
  30954. var self=this;
  30955. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  30956. return $core.withContext(function($ctx1) {
  30957. //>>excludeEnd("ctx");
  30958. var $1;
  30959. $recv($recv($recv(aClass)._methodDictionary())._values())._do_displayingProgress_((function(each){
  30960. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  30961. return $core.withContext(function($ctx2) {
  30962. //>>excludeEnd("ctx");
  30963. return self._install_forClass_protocol_($recv(each)._source(),aClass,$recv(each)._protocol());
  30964. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  30965. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  30966. //>>excludeEnd("ctx");
  30967. }),"Recompiling ".__comma($recv(aClass)._name()));
  30968. $1=$recv(aClass)._isMetaclass();
  30969. if(!$core.assert($1)){
  30970. self._recompile_($recv(aClass)._class());
  30971. };
  30972. return self;
  30973. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  30974. }, function($ctx1) {$ctx1.fill(self,"recompile:",{aClass:aClass},$globals.Compiler)});
  30975. //>>excludeEnd("ctx");
  30976. },
  30977. //>>excludeStart("ide", pragmas.excludeIdeData);
  30978. args: ["aClass"],
  30979. source: "recompile: aClass\x0a\x09aClass methodDictionary values\x0a\x09\x09do: [ :each | \x0a\x09\x09\x09self \x0a\x09\x09\x09\x09install: each source \x0a\x09\x09\x09\x09forClass: aClass \x0a\x09\x09\x09\x09protocol: each protocol ]\x0a\x09\x09displayingProgress: 'Recompiling ', aClass name.\x0a\x09aClass isMetaclass ifFalse: [ self recompile: aClass class ]",
  30980. referencedClasses: [],
  30981. //>>excludeEnd("ide");
  30982. messageSends: ["do:displayingProgress:", "values", "methodDictionary", "install:forClass:protocol:", "source", "protocol", ",", "name", "ifFalse:", "isMetaclass", "recompile:", "class"]
  30983. }),
  30984. $globals.Compiler);
  30985. $core.addMethod(
  30986. $core.method({
  30987. selector: "recompileAll",
  30988. protocol: 'compiling',
  30989. fn: function (){
  30990. var self=this;
  30991. function $Smalltalk(){return $globals.Smalltalk||(typeof Smalltalk=="undefined"?nil:Smalltalk)}
  30992. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  30993. return $core.withContext(function($ctx1) {
  30994. //>>excludeEnd("ctx");
  30995. $recv($recv($Smalltalk())._classes())._do_displayingProgress_((function(each){
  30996. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  30997. return $core.withContext(function($ctx2) {
  30998. //>>excludeEnd("ctx");
  30999. return self._recompile_(each);
  31000. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31001. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  31002. //>>excludeEnd("ctx");
  31003. }),"Compiling all classes...");
  31004. return self;
  31005. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31006. }, function($ctx1) {$ctx1.fill(self,"recompileAll",{},$globals.Compiler)});
  31007. //>>excludeEnd("ctx");
  31008. },
  31009. //>>excludeStart("ide", pragmas.excludeIdeData);
  31010. args: [],
  31011. source: "recompileAll\x0a\x09Smalltalk classes \x0a\x09\x09do: [ :each | self recompile: each ]\x0a\x09\x09displayingProgress: 'Compiling all classes...'",
  31012. referencedClasses: ["Smalltalk"],
  31013. //>>excludeEnd("ide");
  31014. messageSends: ["do:displayingProgress:", "classes", "recompile:"]
  31015. }),
  31016. $globals.Compiler);
  31017. $core.addMethod(
  31018. $core.method({
  31019. selector: "source",
  31020. protocol: 'accessing',
  31021. fn: function (){
  31022. var self=this;
  31023. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31024. return $core.withContext(function($ctx1) {
  31025. //>>excludeEnd("ctx");
  31026. var $2,$1,$receiver;
  31027. $2=self["@source"];
  31028. if(($receiver = $2) == null || $receiver.isNil){
  31029. $1="";
  31030. } else {
  31031. $1=$2;
  31032. };
  31033. return $1;
  31034. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31035. }, function($ctx1) {$ctx1.fill(self,"source",{},$globals.Compiler)});
  31036. //>>excludeEnd("ctx");
  31037. },
  31038. //>>excludeStart("ide", pragmas.excludeIdeData);
  31039. args: [],
  31040. source: "source\x0a\x09^ source ifNil: [ '' ]",
  31041. referencedClasses: [],
  31042. //>>excludeEnd("ide");
  31043. messageSends: ["ifNil:"]
  31044. }),
  31045. $globals.Compiler);
  31046. $core.addMethod(
  31047. $core.method({
  31048. selector: "source:",
  31049. protocol: 'accessing',
  31050. fn: function (aString){
  31051. var self=this;
  31052. self["@source"]=aString;
  31053. return self;
  31054. },
  31055. //>>excludeStart("ide", pragmas.excludeIdeData);
  31056. args: ["aString"],
  31057. source: "source: aString\x0a\x09source := aString",
  31058. referencedClasses: [],
  31059. //>>excludeEnd("ide");
  31060. messageSends: []
  31061. }),
  31062. $globals.Compiler);
  31063. $core.addMethod(
  31064. $core.method({
  31065. selector: "unknownVariables",
  31066. protocol: 'accessing',
  31067. fn: function (){
  31068. var self=this;
  31069. var $1;
  31070. $1=self["@unknownVariables"];
  31071. return $1;
  31072. },
  31073. //>>excludeStart("ide", pragmas.excludeIdeData);
  31074. args: [],
  31075. source: "unknownVariables\x0a\x09^ unknownVariables",
  31076. referencedClasses: [],
  31077. //>>excludeEnd("ide");
  31078. messageSends: []
  31079. }),
  31080. $globals.Compiler);
  31081. $core.addMethod(
  31082. $core.method({
  31083. selector: "unknownVariables:",
  31084. protocol: 'accessing',
  31085. fn: function (aCollection){
  31086. var self=this;
  31087. self["@unknownVariables"]=aCollection;
  31088. return self;
  31089. },
  31090. //>>excludeStart("ide", pragmas.excludeIdeData);
  31091. args: ["aCollection"],
  31092. source: "unknownVariables: aCollection\x0a\x09unknownVariables := aCollection",
  31093. referencedClasses: [],
  31094. //>>excludeEnd("ide");
  31095. messageSends: []
  31096. }),
  31097. $globals.Compiler);
  31098. $core.addMethod(
  31099. $core.method({
  31100. selector: "recompile:",
  31101. protocol: 'compiling',
  31102. fn: function (aClass){
  31103. var self=this;
  31104. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31105. return $core.withContext(function($ctx1) {
  31106. //>>excludeEnd("ctx");
  31107. $recv(self._new())._recompile_(aClass);
  31108. return self;
  31109. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31110. }, function($ctx1) {$ctx1.fill(self,"recompile:",{aClass:aClass},$globals.Compiler.klass)});
  31111. //>>excludeEnd("ctx");
  31112. },
  31113. //>>excludeStart("ide", pragmas.excludeIdeData);
  31114. args: ["aClass"],
  31115. source: "recompile: aClass\x0a\x09self new recompile: aClass",
  31116. referencedClasses: [],
  31117. //>>excludeEnd("ide");
  31118. messageSends: ["recompile:", "new"]
  31119. }),
  31120. $globals.Compiler.klass);
  31121. $core.addMethod(
  31122. $core.method({
  31123. selector: "recompileAll",
  31124. protocol: 'compiling',
  31125. fn: function (){
  31126. var self=this;
  31127. function $Smalltalk(){return $globals.Smalltalk||(typeof Smalltalk=="undefined"?nil:Smalltalk)}
  31128. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31129. return $core.withContext(function($ctx1) {
  31130. //>>excludeEnd("ctx");
  31131. $recv($recv($Smalltalk())._classes())._do_((function(each){
  31132. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31133. return $core.withContext(function($ctx2) {
  31134. //>>excludeEnd("ctx");
  31135. return self._recompile_(each);
  31136. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31137. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  31138. //>>excludeEnd("ctx");
  31139. }));
  31140. return self;
  31141. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31142. }, function($ctx1) {$ctx1.fill(self,"recompileAll",{},$globals.Compiler.klass)});
  31143. //>>excludeEnd("ctx");
  31144. },
  31145. //>>excludeStart("ide", pragmas.excludeIdeData);
  31146. args: [],
  31147. source: "recompileAll\x0a\x09Smalltalk classes do: [ :each |\x0a\x09\x09self recompile: each ]",
  31148. referencedClasses: ["Smalltalk"],
  31149. //>>excludeEnd("ide");
  31150. messageSends: ["do:", "classes", "recompile:"]
  31151. }),
  31152. $globals.Compiler.klass);
  31153. $core.addClass('DoIt', $globals.Object, [], 'Compiler-Core');
  31154. //>>excludeStart("ide", pragmas.excludeIdeData);
  31155. $globals.DoIt.comment="`DoIt` is the class used to compile and evaluate expressions. See `Compiler >> evaluateExpression:`.";
  31156. //>>excludeEnd("ide");
  31157. $core.addClass('Evaluator', $globals.InterfacingObject, [], 'Compiler-Core');
  31158. //>>excludeStart("ide", pragmas.excludeIdeData);
  31159. $globals.Evaluator.comment="I evaluate code against a receiver, dispatching #evaluate:on: to the receiver.";
  31160. //>>excludeEnd("ide");
  31161. $core.addMethod(
  31162. $core.method({
  31163. selector: "evaluate:context:",
  31164. protocol: 'evaluating',
  31165. fn: function (aString,aContext){
  31166. var self=this;
  31167. var compiler,ast;
  31168. function $Compiler(){return $globals.Compiler||(typeof Compiler=="undefined"?nil:Compiler)}
  31169. function $Error(){return $globals.Error||(typeof Error=="undefined"?nil:Error)}
  31170. function $AISemanticAnalyzer(){return $globals.AISemanticAnalyzer||(typeof AISemanticAnalyzer=="undefined"?nil:AISemanticAnalyzer)}
  31171. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31172. return $core.withContext(function($ctx1) {
  31173. //>>excludeEnd("ctx");
  31174. var $1,$2,$3,$4;
  31175. var $early={};
  31176. try {
  31177. compiler=$recv($Compiler())._new();
  31178. $recv((function(){
  31179. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31180. return $core.withContext(function($ctx2) {
  31181. //>>excludeEnd("ctx");
  31182. ast=$recv(compiler)._parseExpression_(aString);
  31183. return ast;
  31184. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31185. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  31186. //>>excludeEnd("ctx");
  31187. }))._on_do_($Error(),(function(ex){
  31188. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31189. return $core.withContext(function($ctx2) {
  31190. //>>excludeEnd("ctx");
  31191. $1=self._alert_($recv(ex)._messageText());
  31192. throw $early=[$1];
  31193. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31194. }, function($ctx2) {$ctx2.fillBlock({ex:ex},$ctx1,2)});
  31195. //>>excludeEnd("ctx");
  31196. }));
  31197. $2=$recv($AISemanticAnalyzer())._on_($recv($recv(aContext)._receiver())._class());
  31198. $recv($2)._context_(aContext);
  31199. $3=$recv($2)._visit_(ast);
  31200. $4=$recv(aContext)._evaluateNode_(ast);
  31201. return $4;
  31202. }
  31203. catch(e) {if(e===$early)return e[0]; throw e}
  31204. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31205. }, function($ctx1) {$ctx1.fill(self,"evaluate:context:",{aString:aString,aContext:aContext,compiler:compiler,ast:ast},$globals.Evaluator)});
  31206. //>>excludeEnd("ctx");
  31207. },
  31208. //>>excludeStart("ide", pragmas.excludeIdeData);
  31209. args: ["aString", "aContext"],
  31210. 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 | ^ self 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",
  31211. referencedClasses: ["Compiler", "Error", "AISemanticAnalyzer"],
  31212. //>>excludeEnd("ide");
  31213. messageSends: ["new", "on:do:", "parseExpression:", "alert:", "messageText", "context:", "on:", "class", "receiver", "visit:", "evaluateNode:"]
  31214. }),
  31215. $globals.Evaluator);
  31216. $core.addMethod(
  31217. $core.method({
  31218. selector: "evaluate:for:",
  31219. protocol: 'evaluating',
  31220. fn: function (aString,anObject){
  31221. var self=this;
  31222. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31223. return $core.withContext(function($ctx1) {
  31224. //>>excludeEnd("ctx");
  31225. var $1;
  31226. $1=$recv(anObject)._evaluate_on_(aString,self);
  31227. return $1;
  31228. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31229. }, function($ctx1) {$ctx1.fill(self,"evaluate:for:",{aString:aString,anObject:anObject},$globals.Evaluator)});
  31230. //>>excludeEnd("ctx");
  31231. },
  31232. //>>excludeStart("ide", pragmas.excludeIdeData);
  31233. args: ["aString", "anObject"],
  31234. source: "evaluate: aString for: anObject\x0a\x09^ anObject evaluate: aString on: self",
  31235. referencedClasses: [],
  31236. //>>excludeEnd("ide");
  31237. messageSends: ["evaluate:on:"]
  31238. }),
  31239. $globals.Evaluator);
  31240. $core.addMethod(
  31241. $core.method({
  31242. selector: "evaluate:receiver:",
  31243. protocol: 'evaluating',
  31244. fn: function (aString,anObject){
  31245. var self=this;
  31246. var compiler;
  31247. function $Compiler(){return $globals.Compiler||(typeof Compiler=="undefined"?nil:Compiler)}
  31248. function $Error(){return $globals.Error||(typeof Error=="undefined"?nil:Error)}
  31249. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31250. return $core.withContext(function($ctx1) {
  31251. //>>excludeEnd("ctx");
  31252. var $1,$2;
  31253. var $early={};
  31254. try {
  31255. compiler=$recv($Compiler())._new();
  31256. $recv((function(){
  31257. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31258. return $core.withContext(function($ctx2) {
  31259. //>>excludeEnd("ctx");
  31260. return $recv(compiler)._parseExpression_(aString);
  31261. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31262. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  31263. //>>excludeEnd("ctx");
  31264. }))._on_do_($Error(),(function(ex){
  31265. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31266. return $core.withContext(function($ctx2) {
  31267. //>>excludeEnd("ctx");
  31268. $1=self._alert_($recv(ex)._messageText());
  31269. throw $early=[$1];
  31270. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31271. }, function($ctx2) {$ctx2.fillBlock({ex:ex},$ctx1,2)});
  31272. //>>excludeEnd("ctx");
  31273. }));
  31274. $2=$recv(compiler)._evaluateExpression_on_(aString,anObject);
  31275. return $2;
  31276. }
  31277. catch(e) {if(e===$early)return e[0]; throw e}
  31278. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31279. }, function($ctx1) {$ctx1.fill(self,"evaluate:receiver:",{aString:aString,anObject:anObject,compiler:compiler},$globals.Evaluator)});
  31280. //>>excludeEnd("ctx");
  31281. },
  31282. //>>excludeStart("ide", pragmas.excludeIdeData);
  31283. args: ["aString", "anObject"],
  31284. 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 | ^ self alert: ex messageText ].\x0a\x0a\x09^ compiler evaluateExpression: aString on: anObject",
  31285. referencedClasses: ["Compiler", "Error"],
  31286. //>>excludeEnd("ide");
  31287. messageSends: ["new", "on:do:", "parseExpression:", "alert:", "messageText", "evaluateExpression:on:"]
  31288. }),
  31289. $globals.Evaluator);
  31290. $core.addMethod(
  31291. $core.method({
  31292. selector: "evaluate:for:",
  31293. protocol: 'instance creation',
  31294. fn: function (aString,anObject){
  31295. var self=this;
  31296. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31297. return $core.withContext(function($ctx1) {
  31298. //>>excludeEnd("ctx");
  31299. var $1;
  31300. $1=$recv(self._new())._evaluate_for_(aString,anObject);
  31301. return $1;
  31302. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31303. }, function($ctx1) {$ctx1.fill(self,"evaluate:for:",{aString:aString,anObject:anObject},$globals.Evaluator.klass)});
  31304. //>>excludeEnd("ctx");
  31305. },
  31306. //>>excludeStart("ide", pragmas.excludeIdeData);
  31307. args: ["aString", "anObject"],
  31308. source: "evaluate: aString for: anObject\x0a\x09^ self new evaluate: aString for: anObject",
  31309. referencedClasses: [],
  31310. //>>excludeEnd("ide");
  31311. messageSends: ["evaluate:for:", "new"]
  31312. }),
  31313. $globals.Evaluator.klass);
  31314. $core.addClass('NodeVisitor', $globals.Object, [], 'Compiler-Core');
  31315. //>>excludeStart("ide", pragmas.excludeIdeData);
  31316. $globals.NodeVisitor.comment="I am the abstract super class of all AST node visitors.";
  31317. //>>excludeEnd("ide");
  31318. $core.addMethod(
  31319. $core.method({
  31320. selector: "visit:",
  31321. protocol: 'visiting',
  31322. fn: function (aNode){
  31323. var self=this;
  31324. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31325. return $core.withContext(function($ctx1) {
  31326. //>>excludeEnd("ctx");
  31327. var $1;
  31328. $1=$recv(aNode)._accept_(self);
  31329. return $1;
  31330. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31331. }, function($ctx1) {$ctx1.fill(self,"visit:",{aNode:aNode},$globals.NodeVisitor)});
  31332. //>>excludeEnd("ctx");
  31333. },
  31334. //>>excludeStart("ide", pragmas.excludeIdeData);
  31335. args: ["aNode"],
  31336. source: "visit: aNode\x0a\x09^ aNode accept: self",
  31337. referencedClasses: [],
  31338. //>>excludeEnd("ide");
  31339. messageSends: ["accept:"]
  31340. }),
  31341. $globals.NodeVisitor);
  31342. $core.addMethod(
  31343. $core.method({
  31344. selector: "visitAll:",
  31345. protocol: 'visiting',
  31346. fn: function (aCollection){
  31347. var self=this;
  31348. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31349. return $core.withContext(function($ctx1) {
  31350. //>>excludeEnd("ctx");
  31351. var $1;
  31352. $1=$recv(aCollection)._collect_((function(each){
  31353. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31354. return $core.withContext(function($ctx2) {
  31355. //>>excludeEnd("ctx");
  31356. return self._visit_(each);
  31357. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31358. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  31359. //>>excludeEnd("ctx");
  31360. }));
  31361. return $1;
  31362. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31363. }, function($ctx1) {$ctx1.fill(self,"visitAll:",{aCollection:aCollection},$globals.NodeVisitor)});
  31364. //>>excludeEnd("ctx");
  31365. },
  31366. //>>excludeStart("ide", pragmas.excludeIdeData);
  31367. args: ["aCollection"],
  31368. source: "visitAll: aCollection\x0a\x09^ aCollection collect: [ :each | self visit: each ]",
  31369. referencedClasses: [],
  31370. //>>excludeEnd("ide");
  31371. messageSends: ["collect:", "visit:"]
  31372. }),
  31373. $globals.NodeVisitor);
  31374. $core.addMethod(
  31375. $core.method({
  31376. selector: "visitAssignmentNode:",
  31377. protocol: 'visiting',
  31378. fn: function (aNode){
  31379. var self=this;
  31380. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31381. return $core.withContext(function($ctx1) {
  31382. //>>excludeEnd("ctx");
  31383. var $1;
  31384. $1=self._visitNode_(aNode);
  31385. return $1;
  31386. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31387. }, function($ctx1) {$ctx1.fill(self,"visitAssignmentNode:",{aNode:aNode},$globals.NodeVisitor)});
  31388. //>>excludeEnd("ctx");
  31389. },
  31390. //>>excludeStart("ide", pragmas.excludeIdeData);
  31391. args: ["aNode"],
  31392. source: "visitAssignmentNode: aNode\x0a\x09^ self visitNode: aNode",
  31393. referencedClasses: [],
  31394. //>>excludeEnd("ide");
  31395. messageSends: ["visitNode:"]
  31396. }),
  31397. $globals.NodeVisitor);
  31398. $core.addMethod(
  31399. $core.method({
  31400. selector: "visitBlockNode:",
  31401. protocol: 'visiting',
  31402. fn: function (aNode){
  31403. var self=this;
  31404. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31405. return $core.withContext(function($ctx1) {
  31406. //>>excludeEnd("ctx");
  31407. var $1;
  31408. $1=self._visitNode_(aNode);
  31409. return $1;
  31410. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31411. }, function($ctx1) {$ctx1.fill(self,"visitBlockNode:",{aNode:aNode},$globals.NodeVisitor)});
  31412. //>>excludeEnd("ctx");
  31413. },
  31414. //>>excludeStart("ide", pragmas.excludeIdeData);
  31415. args: ["aNode"],
  31416. source: "visitBlockNode: aNode\x0a\x09^ self visitNode: aNode",
  31417. referencedClasses: [],
  31418. //>>excludeEnd("ide");
  31419. messageSends: ["visitNode:"]
  31420. }),
  31421. $globals.NodeVisitor);
  31422. $core.addMethod(
  31423. $core.method({
  31424. selector: "visitBlockSequenceNode:",
  31425. protocol: 'visiting',
  31426. fn: function (aNode){
  31427. var self=this;
  31428. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31429. return $core.withContext(function($ctx1) {
  31430. //>>excludeEnd("ctx");
  31431. var $1;
  31432. $1=self._visitSequenceNode_(aNode);
  31433. return $1;
  31434. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31435. }, function($ctx1) {$ctx1.fill(self,"visitBlockSequenceNode:",{aNode:aNode},$globals.NodeVisitor)});
  31436. //>>excludeEnd("ctx");
  31437. },
  31438. //>>excludeStart("ide", pragmas.excludeIdeData);
  31439. args: ["aNode"],
  31440. source: "visitBlockSequenceNode: aNode\x0a\x09^ self visitSequenceNode: aNode",
  31441. referencedClasses: [],
  31442. //>>excludeEnd("ide");
  31443. messageSends: ["visitSequenceNode:"]
  31444. }),
  31445. $globals.NodeVisitor);
  31446. $core.addMethod(
  31447. $core.method({
  31448. selector: "visitCascadeNode:",
  31449. protocol: 'visiting',
  31450. fn: function (aNode){
  31451. var self=this;
  31452. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31453. return $core.withContext(function($ctx1) {
  31454. //>>excludeEnd("ctx");
  31455. var $1;
  31456. $1=self._visitNode_(aNode);
  31457. return $1;
  31458. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31459. }, function($ctx1) {$ctx1.fill(self,"visitCascadeNode:",{aNode:aNode},$globals.NodeVisitor)});
  31460. //>>excludeEnd("ctx");
  31461. },
  31462. //>>excludeStart("ide", pragmas.excludeIdeData);
  31463. args: ["aNode"],
  31464. source: "visitCascadeNode: aNode\x0a\x09^ self visitNode: aNode",
  31465. referencedClasses: [],
  31466. //>>excludeEnd("ide");
  31467. messageSends: ["visitNode:"]
  31468. }),
  31469. $globals.NodeVisitor);
  31470. $core.addMethod(
  31471. $core.method({
  31472. selector: "visitDynamicArrayNode:",
  31473. protocol: 'visiting',
  31474. fn: function (aNode){
  31475. var self=this;
  31476. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31477. return $core.withContext(function($ctx1) {
  31478. //>>excludeEnd("ctx");
  31479. var $1;
  31480. $1=self._visitNode_(aNode);
  31481. return $1;
  31482. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31483. }, function($ctx1) {$ctx1.fill(self,"visitDynamicArrayNode:",{aNode:aNode},$globals.NodeVisitor)});
  31484. //>>excludeEnd("ctx");
  31485. },
  31486. //>>excludeStart("ide", pragmas.excludeIdeData);
  31487. args: ["aNode"],
  31488. source: "visitDynamicArrayNode: aNode\x0a\x09^ self visitNode: aNode",
  31489. referencedClasses: [],
  31490. //>>excludeEnd("ide");
  31491. messageSends: ["visitNode:"]
  31492. }),
  31493. $globals.NodeVisitor);
  31494. $core.addMethod(
  31495. $core.method({
  31496. selector: "visitDynamicDictionaryNode:",
  31497. protocol: 'visiting',
  31498. fn: function (aNode){
  31499. var self=this;
  31500. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31501. return $core.withContext(function($ctx1) {
  31502. //>>excludeEnd("ctx");
  31503. var $1;
  31504. $1=self._visitNode_(aNode);
  31505. return $1;
  31506. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31507. }, function($ctx1) {$ctx1.fill(self,"visitDynamicDictionaryNode:",{aNode:aNode},$globals.NodeVisitor)});
  31508. //>>excludeEnd("ctx");
  31509. },
  31510. //>>excludeStart("ide", pragmas.excludeIdeData);
  31511. args: ["aNode"],
  31512. source: "visitDynamicDictionaryNode: aNode\x0a\x09^ self visitNode: aNode",
  31513. referencedClasses: [],
  31514. //>>excludeEnd("ide");
  31515. messageSends: ["visitNode:"]
  31516. }),
  31517. $globals.NodeVisitor);
  31518. $core.addMethod(
  31519. $core.method({
  31520. selector: "visitJSStatementNode:",
  31521. protocol: 'visiting',
  31522. fn: function (aNode){
  31523. var self=this;
  31524. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31525. return $core.withContext(function($ctx1) {
  31526. //>>excludeEnd("ctx");
  31527. var $1;
  31528. $1=self._visitNode_(aNode);
  31529. return $1;
  31530. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31531. }, function($ctx1) {$ctx1.fill(self,"visitJSStatementNode:",{aNode:aNode},$globals.NodeVisitor)});
  31532. //>>excludeEnd("ctx");
  31533. },
  31534. //>>excludeStart("ide", pragmas.excludeIdeData);
  31535. args: ["aNode"],
  31536. source: "visitJSStatementNode: aNode\x0a\x09^ self visitNode: aNode",
  31537. referencedClasses: [],
  31538. //>>excludeEnd("ide");
  31539. messageSends: ["visitNode:"]
  31540. }),
  31541. $globals.NodeVisitor);
  31542. $core.addMethod(
  31543. $core.method({
  31544. selector: "visitMethodNode:",
  31545. protocol: 'visiting',
  31546. fn: function (aNode){
  31547. var self=this;
  31548. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31549. return $core.withContext(function($ctx1) {
  31550. //>>excludeEnd("ctx");
  31551. var $1;
  31552. $1=self._visitNode_(aNode);
  31553. return $1;
  31554. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31555. }, function($ctx1) {$ctx1.fill(self,"visitMethodNode:",{aNode:aNode},$globals.NodeVisitor)});
  31556. //>>excludeEnd("ctx");
  31557. },
  31558. //>>excludeStart("ide", pragmas.excludeIdeData);
  31559. args: ["aNode"],
  31560. source: "visitMethodNode: aNode\x0a\x09^ self visitNode: aNode",
  31561. referencedClasses: [],
  31562. //>>excludeEnd("ide");
  31563. messageSends: ["visitNode:"]
  31564. }),
  31565. $globals.NodeVisitor);
  31566. $core.addMethod(
  31567. $core.method({
  31568. selector: "visitNode:",
  31569. protocol: 'visiting',
  31570. fn: function (aNode){
  31571. var self=this;
  31572. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31573. return $core.withContext(function($ctx1) {
  31574. //>>excludeEnd("ctx");
  31575. var $1;
  31576. $1=self._visitAll_($recv(aNode)._nodes());
  31577. return $1;
  31578. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31579. }, function($ctx1) {$ctx1.fill(self,"visitNode:",{aNode:aNode},$globals.NodeVisitor)});
  31580. //>>excludeEnd("ctx");
  31581. },
  31582. //>>excludeStart("ide", pragmas.excludeIdeData);
  31583. args: ["aNode"],
  31584. source: "visitNode: aNode\x0a\x09^ self visitAll: aNode nodes",
  31585. referencedClasses: [],
  31586. //>>excludeEnd("ide");
  31587. messageSends: ["visitAll:", "nodes"]
  31588. }),
  31589. $globals.NodeVisitor);
  31590. $core.addMethod(
  31591. $core.method({
  31592. selector: "visitReturnNode:",
  31593. protocol: 'visiting',
  31594. fn: function (aNode){
  31595. var self=this;
  31596. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31597. return $core.withContext(function($ctx1) {
  31598. //>>excludeEnd("ctx");
  31599. var $1;
  31600. $1=self._visitNode_(aNode);
  31601. return $1;
  31602. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31603. }, function($ctx1) {$ctx1.fill(self,"visitReturnNode:",{aNode:aNode},$globals.NodeVisitor)});
  31604. //>>excludeEnd("ctx");
  31605. },
  31606. //>>excludeStart("ide", pragmas.excludeIdeData);
  31607. args: ["aNode"],
  31608. source: "visitReturnNode: aNode\x0a\x09^ self visitNode: aNode",
  31609. referencedClasses: [],
  31610. //>>excludeEnd("ide");
  31611. messageSends: ["visitNode:"]
  31612. }),
  31613. $globals.NodeVisitor);
  31614. $core.addMethod(
  31615. $core.method({
  31616. selector: "visitSendNode:",
  31617. protocol: 'visiting',
  31618. fn: function (aNode){
  31619. var self=this;
  31620. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31621. return $core.withContext(function($ctx1) {
  31622. //>>excludeEnd("ctx");
  31623. var $1;
  31624. $1=self._visitNode_(aNode);
  31625. return $1;
  31626. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31627. }, function($ctx1) {$ctx1.fill(self,"visitSendNode:",{aNode:aNode},$globals.NodeVisitor)});
  31628. //>>excludeEnd("ctx");
  31629. },
  31630. //>>excludeStart("ide", pragmas.excludeIdeData);
  31631. args: ["aNode"],
  31632. source: "visitSendNode: aNode\x0a\x09^ self visitNode: aNode",
  31633. referencedClasses: [],
  31634. //>>excludeEnd("ide");
  31635. messageSends: ["visitNode:"]
  31636. }),
  31637. $globals.NodeVisitor);
  31638. $core.addMethod(
  31639. $core.method({
  31640. selector: "visitSequenceNode:",
  31641. protocol: 'visiting',
  31642. fn: function (aNode){
  31643. var self=this;
  31644. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31645. return $core.withContext(function($ctx1) {
  31646. //>>excludeEnd("ctx");
  31647. var $1;
  31648. $1=self._visitNode_(aNode);
  31649. return $1;
  31650. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31651. }, function($ctx1) {$ctx1.fill(self,"visitSequenceNode:",{aNode:aNode},$globals.NodeVisitor)});
  31652. //>>excludeEnd("ctx");
  31653. },
  31654. //>>excludeStart("ide", pragmas.excludeIdeData);
  31655. args: ["aNode"],
  31656. source: "visitSequenceNode: aNode\x0a\x09^ self visitNode: aNode",
  31657. referencedClasses: [],
  31658. //>>excludeEnd("ide");
  31659. messageSends: ["visitNode:"]
  31660. }),
  31661. $globals.NodeVisitor);
  31662. $core.addMethod(
  31663. $core.method({
  31664. selector: "visitValueNode:",
  31665. protocol: 'visiting',
  31666. fn: function (aNode){
  31667. var self=this;
  31668. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31669. return $core.withContext(function($ctx1) {
  31670. //>>excludeEnd("ctx");
  31671. var $1;
  31672. $1=self._visitNode_(aNode);
  31673. return $1;
  31674. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31675. }, function($ctx1) {$ctx1.fill(self,"visitValueNode:",{aNode:aNode},$globals.NodeVisitor)});
  31676. //>>excludeEnd("ctx");
  31677. },
  31678. //>>excludeStart("ide", pragmas.excludeIdeData);
  31679. args: ["aNode"],
  31680. source: "visitValueNode: aNode\x0a\x09^ self visitNode: aNode",
  31681. referencedClasses: [],
  31682. //>>excludeEnd("ide");
  31683. messageSends: ["visitNode:"]
  31684. }),
  31685. $globals.NodeVisitor);
  31686. $core.addMethod(
  31687. $core.method({
  31688. selector: "visitVariableNode:",
  31689. protocol: 'visiting',
  31690. fn: function (aNode){
  31691. var self=this;
  31692. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31693. return $core.withContext(function($ctx1) {
  31694. //>>excludeEnd("ctx");
  31695. var $1;
  31696. $1=self._visitNode_(aNode);
  31697. return $1;
  31698. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31699. }, function($ctx1) {$ctx1.fill(self,"visitVariableNode:",{aNode:aNode},$globals.NodeVisitor)});
  31700. //>>excludeEnd("ctx");
  31701. },
  31702. //>>excludeStart("ide", pragmas.excludeIdeData);
  31703. args: ["aNode"],
  31704. source: "visitVariableNode: aNode\x0a\x09^ self visitNode: aNode",
  31705. referencedClasses: [],
  31706. //>>excludeEnd("ide");
  31707. messageSends: ["visitNode:"]
  31708. }),
  31709. $globals.NodeVisitor);
  31710. $core.addMethod(
  31711. $core.method({
  31712. selector: "asVariableName",
  31713. protocol: '*Compiler-Core',
  31714. fn: function (){
  31715. var self=this;
  31716. function $Smalltalk(){return $globals.Smalltalk||(typeof Smalltalk=="undefined"?nil:Smalltalk)}
  31717. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31718. return $core.withContext(function($ctx1) {
  31719. //>>excludeEnd("ctx");
  31720. var $2,$1;
  31721. $2=$recv($recv($Smalltalk())._reservedWords())._includes_(self);
  31722. if($core.assert($2)){
  31723. $1=self.__comma("_");
  31724. } else {
  31725. $1=self;
  31726. };
  31727. return $1;
  31728. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31729. }, function($ctx1) {$ctx1.fill(self,"asVariableName",{},$globals.String)});
  31730. //>>excludeEnd("ctx");
  31731. },
  31732. //>>excludeStart("ide", pragmas.excludeIdeData);
  31733. args: [],
  31734. source: "asVariableName\x0a\x09^ (Smalltalk reservedWords includes: self)\x0a\x09\x09ifTrue: [ self, '_' ]\x0a\x09\x09ifFalse: [ self ]",
  31735. referencedClasses: ["Smalltalk"],
  31736. //>>excludeEnd("ide");
  31737. messageSends: ["ifTrue:ifFalse:", "includes:", "reservedWords", ","]
  31738. }),
  31739. $globals.String);
  31740. });
  31741. define("amber_core/Compiler-AST", ["amber/boot", "amber_core/Kernel-Objects", "amber_core/Kernel-Methods"], function($boot){
  31742. var $core=$boot.api,nil=$boot.nil,$recv=$boot.asReceiver,$globals=$boot.globals;
  31743. var smalltalk=$core,_st=$recv,globals=$globals;
  31744. $core.addPackage('Compiler-AST');
  31745. $core.packages["Compiler-AST"].transport = {"type":"amd","amdNamespace":"amber_core"};
  31746. $core.addClass('Node', $globals.Object, ['parent', 'position', 'source', 'nodes', 'shouldBeInlined', 'shouldBeAliased'], 'Compiler-AST');
  31747. //>>excludeStart("ide", pragmas.excludeIdeData);
  31748. $globals.Node.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.";
  31749. //>>excludeEnd("ide");
  31750. $core.addMethod(
  31751. $core.method({
  31752. selector: "accept:",
  31753. protocol: 'visiting',
  31754. fn: function (aVisitor){
  31755. var self=this;
  31756. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31757. return $core.withContext(function($ctx1) {
  31758. //>>excludeEnd("ctx");
  31759. var $1;
  31760. $1=$recv(aVisitor)._visitNode_(self);
  31761. return $1;
  31762. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31763. }, function($ctx1) {$ctx1.fill(self,"accept:",{aVisitor:aVisitor},$globals.Node)});
  31764. //>>excludeEnd("ctx");
  31765. },
  31766. //>>excludeStart("ide", pragmas.excludeIdeData);
  31767. args: ["aVisitor"],
  31768. source: "accept: aVisitor\x0a\x09^ aVisitor visitNode: self",
  31769. referencedClasses: [],
  31770. //>>excludeEnd("ide");
  31771. messageSends: ["visitNode:"]
  31772. }),
  31773. $globals.Node);
  31774. $core.addMethod(
  31775. $core.method({
  31776. selector: "addNode:",
  31777. protocol: 'accessing',
  31778. fn: function (aNode){
  31779. var self=this;
  31780. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31781. return $core.withContext(function($ctx1) {
  31782. //>>excludeEnd("ctx");
  31783. $recv(self._nodes())._add_(aNode);
  31784. $recv(aNode)._parent_(self);
  31785. return self;
  31786. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31787. }, function($ctx1) {$ctx1.fill(self,"addNode:",{aNode:aNode},$globals.Node)});
  31788. //>>excludeEnd("ctx");
  31789. },
  31790. //>>excludeStart("ide", pragmas.excludeIdeData);
  31791. args: ["aNode"],
  31792. source: "addNode: aNode\x0a\x09self nodes add: aNode.\x0a\x09aNode parent: self",
  31793. referencedClasses: [],
  31794. //>>excludeEnd("ide");
  31795. messageSends: ["add:", "nodes", "parent:"]
  31796. }),
  31797. $globals.Node);
  31798. $core.addMethod(
  31799. $core.method({
  31800. selector: "allNodes",
  31801. protocol: 'accessing',
  31802. fn: function (){
  31803. var self=this;
  31804. var allNodes;
  31805. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31806. return $core.withContext(function($ctx1) {
  31807. //>>excludeEnd("ctx");
  31808. var $1,$2;
  31809. $1=self._nodes();
  31810. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31811. $ctx1.sendIdx["nodes"]=1;
  31812. //>>excludeEnd("ctx");
  31813. allNodes=$recv($1)._asSet();
  31814. $recv(self._nodes())._do_((function(each){
  31815. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31816. return $core.withContext(function($ctx2) {
  31817. //>>excludeEnd("ctx");
  31818. return $recv(allNodes)._addAll_($recv(each)._allNodes());
  31819. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31820. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  31821. //>>excludeEnd("ctx");
  31822. }));
  31823. $2=allNodes;
  31824. return $2;
  31825. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31826. }, function($ctx1) {$ctx1.fill(self,"allNodes",{allNodes:allNodes},$globals.Node)});
  31827. //>>excludeEnd("ctx");
  31828. },
  31829. //>>excludeStart("ide", pragmas.excludeIdeData);
  31830. args: [],
  31831. source: "allNodes\x0a\x09| allNodes |\x0a\x09\x0a\x09allNodes := self nodes asSet.\x0a\x09self nodes do: [ :each | \x0a\x09\x09allNodes addAll: each allNodes ].\x0a\x09\x0a\x09^ allNodes",
  31832. referencedClasses: [],
  31833. //>>excludeEnd("ide");
  31834. messageSends: ["asSet", "nodes", "do:", "addAll:", "allNodes"]
  31835. }),
  31836. $globals.Node);
  31837. $core.addMethod(
  31838. $core.method({
  31839. selector: "inPosition:",
  31840. protocol: 'testing',
  31841. fn: function (aPoint){
  31842. var self=this;
  31843. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31844. return $core.withContext(function($ctx1) {
  31845. //>>excludeEnd("ctx");
  31846. var $1;
  31847. $1=$recv($recv(self._positionStart()).__lt_eq(aPoint))._and_((function(){
  31848. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31849. return $core.withContext(function($ctx2) {
  31850. //>>excludeEnd("ctx");
  31851. return $recv(self._positionEnd()).__gt_eq(aPoint);
  31852. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31853. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  31854. //>>excludeEnd("ctx");
  31855. }));
  31856. return $1;
  31857. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31858. }, function($ctx1) {$ctx1.fill(self,"inPosition:",{aPoint:aPoint},$globals.Node)});
  31859. //>>excludeEnd("ctx");
  31860. },
  31861. //>>excludeStart("ide", pragmas.excludeIdeData);
  31862. args: ["aPoint"],
  31863. source: "inPosition: aPoint\x0a\x09^ (self positionStart <= aPoint and: [\x0a\x09\x09self positionEnd >= aPoint ])",
  31864. referencedClasses: [],
  31865. //>>excludeEnd("ide");
  31866. messageSends: ["and:", "<=", "positionStart", ">=", "positionEnd"]
  31867. }),
  31868. $globals.Node);
  31869. $core.addMethod(
  31870. $core.method({
  31871. selector: "isAssignmentNode",
  31872. protocol: 'testing',
  31873. fn: function (){
  31874. var self=this;
  31875. return false;
  31876. },
  31877. //>>excludeStart("ide", pragmas.excludeIdeData);
  31878. args: [],
  31879. source: "isAssignmentNode\x0a\x09^ false",
  31880. referencedClasses: [],
  31881. //>>excludeEnd("ide");
  31882. messageSends: []
  31883. }),
  31884. $globals.Node);
  31885. $core.addMethod(
  31886. $core.method({
  31887. selector: "isBlockNode",
  31888. protocol: 'testing',
  31889. fn: function (){
  31890. var self=this;
  31891. return false;
  31892. },
  31893. //>>excludeStart("ide", pragmas.excludeIdeData);
  31894. args: [],
  31895. source: "isBlockNode\x0a\x09^ false",
  31896. referencedClasses: [],
  31897. //>>excludeEnd("ide");
  31898. messageSends: []
  31899. }),
  31900. $globals.Node);
  31901. $core.addMethod(
  31902. $core.method({
  31903. selector: "isBlockSequenceNode",
  31904. protocol: 'testing',
  31905. fn: function (){
  31906. var self=this;
  31907. return false;
  31908. },
  31909. //>>excludeStart("ide", pragmas.excludeIdeData);
  31910. args: [],
  31911. source: "isBlockSequenceNode\x0a\x09^ false",
  31912. referencedClasses: [],
  31913. //>>excludeEnd("ide");
  31914. messageSends: []
  31915. }),
  31916. $globals.Node);
  31917. $core.addMethod(
  31918. $core.method({
  31919. selector: "isCascadeNode",
  31920. protocol: 'testing',
  31921. fn: function (){
  31922. var self=this;
  31923. return false;
  31924. },
  31925. //>>excludeStart("ide", pragmas.excludeIdeData);
  31926. args: [],
  31927. source: "isCascadeNode\x0a\x09^ false",
  31928. referencedClasses: [],
  31929. //>>excludeEnd("ide");
  31930. messageSends: []
  31931. }),
  31932. $globals.Node);
  31933. $core.addMethod(
  31934. $core.method({
  31935. selector: "isImmutable",
  31936. protocol: 'testing',
  31937. fn: function (){
  31938. var self=this;
  31939. return false;
  31940. },
  31941. //>>excludeStart("ide", pragmas.excludeIdeData);
  31942. args: [],
  31943. source: "isImmutable\x0a\x09^ false",
  31944. referencedClasses: [],
  31945. //>>excludeEnd("ide");
  31946. messageSends: []
  31947. }),
  31948. $globals.Node);
  31949. $core.addMethod(
  31950. $core.method({
  31951. selector: "isJSStatementNode",
  31952. protocol: 'testing',
  31953. fn: function (){
  31954. var self=this;
  31955. return false;
  31956. },
  31957. //>>excludeStart("ide", pragmas.excludeIdeData);
  31958. args: [],
  31959. source: "isJSStatementNode\x0a\x09^ false",
  31960. referencedClasses: [],
  31961. //>>excludeEnd("ide");
  31962. messageSends: []
  31963. }),
  31964. $globals.Node);
  31965. $core.addMethod(
  31966. $core.method({
  31967. selector: "isLastChild",
  31968. protocol: 'testing',
  31969. fn: function (){
  31970. var self=this;
  31971. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31972. return $core.withContext(function($ctx1) {
  31973. //>>excludeEnd("ctx");
  31974. var $1;
  31975. $1=$recv($recv($recv(self._parent())._nodes())._last()).__eq(self);
  31976. return $1;
  31977. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  31978. }, function($ctx1) {$ctx1.fill(self,"isLastChild",{},$globals.Node)});
  31979. //>>excludeEnd("ctx");
  31980. },
  31981. //>>excludeStart("ide", pragmas.excludeIdeData);
  31982. args: [],
  31983. source: "isLastChild\x0a\x09^ self parent nodes last = self",
  31984. referencedClasses: [],
  31985. //>>excludeEnd("ide");
  31986. messageSends: ["=", "last", "nodes", "parent"]
  31987. }),
  31988. $globals.Node);
  31989. $core.addMethod(
  31990. $core.method({
  31991. selector: "isNavigationNode",
  31992. protocol: 'testing',
  31993. fn: function (){
  31994. var self=this;
  31995. return false;
  31996. },
  31997. //>>excludeStart("ide", pragmas.excludeIdeData);
  31998. args: [],
  31999. source: "isNavigationNode\x0a\x09\x22Answer true if the node can be navigated to\x22\x0a\x09\x0a\x09^ false",
  32000. referencedClasses: [],
  32001. //>>excludeEnd("ide");
  32002. messageSends: []
  32003. }),
  32004. $globals.Node);
  32005. $core.addMethod(
  32006. $core.method({
  32007. selector: "isNode",
  32008. protocol: 'testing',
  32009. fn: function (){
  32010. var self=this;
  32011. return true;
  32012. },
  32013. //>>excludeStart("ide", pragmas.excludeIdeData);
  32014. args: [],
  32015. source: "isNode\x0a\x09^ true",
  32016. referencedClasses: [],
  32017. //>>excludeEnd("ide");
  32018. messageSends: []
  32019. }),
  32020. $globals.Node);
  32021. $core.addMethod(
  32022. $core.method({
  32023. selector: "isReferenced",
  32024. protocol: 'testing',
  32025. fn: function (){
  32026. var self=this;
  32027. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32028. return $core.withContext(function($ctx1) {
  32029. //>>excludeEnd("ctx");
  32030. var $4,$3,$2,$1;
  32031. $4=self._parent();
  32032. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32033. $ctx1.sendIdx["parent"]=1;
  32034. //>>excludeEnd("ctx");
  32035. $3=$recv($4)._isSequenceNode();
  32036. $2=$recv($3)._or_((function(){
  32037. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32038. return $core.withContext(function($ctx2) {
  32039. //>>excludeEnd("ctx");
  32040. return $recv(self._parent())._isAssignmentNode();
  32041. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32042. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  32043. //>>excludeEnd("ctx");
  32044. }));
  32045. $1=$recv($2)._not();
  32046. return $1;
  32047. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32048. }, function($ctx1) {$ctx1.fill(self,"isReferenced",{},$globals.Node)});
  32049. //>>excludeEnd("ctx");
  32050. },
  32051. //>>excludeStart("ide", pragmas.excludeIdeData);
  32052. args: [],
  32053. source: "isReferenced\x0a\x09\x22Answer true if the receiver is referenced by other nodes.\x0a\x09Do not take sequences or assignments into account\x22\x0a\x09\x0a\x09^ (self parent isSequenceNode or: [\x0a\x09\x09self parent isAssignmentNode ]) not",
  32054. referencedClasses: [],
  32055. //>>excludeEnd("ide");
  32056. messageSends: ["not", "or:", "isSequenceNode", "parent", "isAssignmentNode"]
  32057. }),
  32058. $globals.Node);
  32059. $core.addMethod(
  32060. $core.method({
  32061. selector: "isReturnNode",
  32062. protocol: 'testing',
  32063. fn: function (){
  32064. var self=this;
  32065. return false;
  32066. },
  32067. //>>excludeStart("ide", pragmas.excludeIdeData);
  32068. args: [],
  32069. source: "isReturnNode\x0a\x09^ false",
  32070. referencedClasses: [],
  32071. //>>excludeEnd("ide");
  32072. messageSends: []
  32073. }),
  32074. $globals.Node);
  32075. $core.addMethod(
  32076. $core.method({
  32077. selector: "isSendNode",
  32078. protocol: 'testing',
  32079. fn: function (){
  32080. var self=this;
  32081. return false;
  32082. },
  32083. //>>excludeStart("ide", pragmas.excludeIdeData);
  32084. args: [],
  32085. source: "isSendNode\x0a\x09^ false",
  32086. referencedClasses: [],
  32087. //>>excludeEnd("ide");
  32088. messageSends: []
  32089. }),
  32090. $globals.Node);
  32091. $core.addMethod(
  32092. $core.method({
  32093. selector: "isSequenceNode",
  32094. protocol: 'testing',
  32095. fn: function (){
  32096. var self=this;
  32097. return false;
  32098. },
  32099. //>>excludeStart("ide", pragmas.excludeIdeData);
  32100. args: [],
  32101. source: "isSequenceNode\x0a\x09^ false",
  32102. referencedClasses: [],
  32103. //>>excludeEnd("ide");
  32104. messageSends: []
  32105. }),
  32106. $globals.Node);
  32107. $core.addMethod(
  32108. $core.method({
  32109. selector: "isValueNode",
  32110. protocol: 'testing',
  32111. fn: function (){
  32112. var self=this;
  32113. return false;
  32114. },
  32115. //>>excludeStart("ide", pragmas.excludeIdeData);
  32116. args: [],
  32117. source: "isValueNode\x0a\x09^ false",
  32118. referencedClasses: [],
  32119. //>>excludeEnd("ide");
  32120. messageSends: []
  32121. }),
  32122. $globals.Node);
  32123. $core.addMethod(
  32124. $core.method({
  32125. selector: "isVariableNode",
  32126. protocol: 'testing',
  32127. fn: function (){
  32128. var self=this;
  32129. return false;
  32130. },
  32131. //>>excludeStart("ide", pragmas.excludeIdeData);
  32132. args: [],
  32133. source: "isVariableNode\x0a\x09^ false",
  32134. referencedClasses: [],
  32135. //>>excludeEnd("ide");
  32136. messageSends: []
  32137. }),
  32138. $globals.Node);
  32139. $core.addMethod(
  32140. $core.method({
  32141. selector: "method",
  32142. protocol: 'accessing',
  32143. fn: function (){
  32144. var self=this;
  32145. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32146. return $core.withContext(function($ctx1) {
  32147. //>>excludeEnd("ctx");
  32148. var $2,$1,$receiver;
  32149. $2=self._parent();
  32150. if(($receiver = $2) == null || $receiver.isNil){
  32151. $1=$2;
  32152. } else {
  32153. var node;
  32154. node=$receiver;
  32155. $1=$recv(node)._method();
  32156. };
  32157. return $1;
  32158. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32159. }, function($ctx1) {$ctx1.fill(self,"method",{},$globals.Node)});
  32160. //>>excludeEnd("ctx");
  32161. },
  32162. //>>excludeStart("ide", pragmas.excludeIdeData);
  32163. args: [],
  32164. source: "method\x0a\x09^ self parent ifNotNil: [ :node | node method ]",
  32165. referencedClasses: [],
  32166. //>>excludeEnd("ide");
  32167. messageSends: ["ifNotNil:", "parent", "method"]
  32168. }),
  32169. $globals.Node);
  32170. $core.addMethod(
  32171. $core.method({
  32172. selector: "navigationNodeAt:ifAbsent:",
  32173. protocol: 'accessing',
  32174. fn: function (aPoint,aBlock){
  32175. var self=this;
  32176. var children;
  32177. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32178. return $core.withContext(function($ctx1) {
  32179. //>>excludeEnd("ctx");
  32180. var $1,$4,$3,$2;
  32181. var $early={};
  32182. try {
  32183. children=$recv(self._allNodes())._select_((function(each){
  32184. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32185. return $core.withContext(function($ctx2) {
  32186. //>>excludeEnd("ctx");
  32187. return $recv($recv(each)._isNavigationNode())._and_((function(){
  32188. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32189. return $core.withContext(function($ctx3) {
  32190. //>>excludeEnd("ctx");
  32191. return $recv(each)._inPosition_(aPoint);
  32192. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32193. }, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)});
  32194. //>>excludeEnd("ctx");
  32195. }));
  32196. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32197. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  32198. //>>excludeEnd("ctx");
  32199. }));
  32200. $recv(children)._ifEmpty_((function(){
  32201. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32202. return $core.withContext(function($ctx2) {
  32203. //>>excludeEnd("ctx");
  32204. $1=$recv(aBlock)._value();
  32205. throw $early=[$1];
  32206. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32207. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,3)});
  32208. //>>excludeEnd("ctx");
  32209. }));
  32210. $2=$recv($recv($recv(children)._asArray())._sort_((function(a,b){
  32211. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32212. return $core.withContext(function($ctx2) {
  32213. //>>excludeEnd("ctx");
  32214. $4=$recv(a)._positionStart();
  32215. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32216. $ctx2.sendIdx["positionStart"]=1;
  32217. //>>excludeEnd("ctx");
  32218. $3=$recv($4)._dist_(aPoint);
  32219. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32220. $ctx2.sendIdx["dist:"]=1;
  32221. //>>excludeEnd("ctx");
  32222. return $recv($3).__lt_eq($recv($recv(b)._positionStart())._dist_(aPoint));
  32223. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32224. }, function($ctx2) {$ctx2.fillBlock({a:a,b:b},$ctx1,4)});
  32225. //>>excludeEnd("ctx");
  32226. })))._first();
  32227. return $2;
  32228. }
  32229. catch(e) {if(e===$early)return e[0]; throw e}
  32230. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32231. }, function($ctx1) {$ctx1.fill(self,"navigationNodeAt:ifAbsent:",{aPoint:aPoint,aBlock:aBlock,children:children},$globals.Node)});
  32232. //>>excludeEnd("ctx");
  32233. },
  32234. //>>excludeStart("ide", pragmas.excludeIdeData);
  32235. args: ["aPoint", "aBlock"],
  32236. 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 allNodes 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",
  32237. referencedClasses: [],
  32238. //>>excludeEnd("ide");
  32239. messageSends: ["select:", "allNodes", "and:", "isNavigationNode", "inPosition:", "ifEmpty:", "value", "first", "sort:", "asArray", "<=", "dist:", "positionStart"]
  32240. }),
  32241. $globals.Node);
  32242. $core.addMethod(
  32243. $core.method({
  32244. selector: "nextChild",
  32245. protocol: 'accessing',
  32246. fn: function (){
  32247. var self=this;
  32248. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32249. return $core.withContext(function($ctx1) {
  32250. //>>excludeEnd("ctx");
  32251. var $3,$2,$1;
  32252. $3=self._nodes();
  32253. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32254. $ctx1.sendIdx["nodes"]=1;
  32255. //>>excludeEnd("ctx");
  32256. $2=$recv($3)._isEmpty();
  32257. if($core.assert($2)){
  32258. $1=self;
  32259. } else {
  32260. $1=$recv($recv(self._nodes())._first())._nextChild();
  32261. };
  32262. return $1;
  32263. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32264. }, function($ctx1) {$ctx1.fill(self,"nextChild",{},$globals.Node)});
  32265. //>>excludeEnd("ctx");
  32266. },
  32267. //>>excludeStart("ide", pragmas.excludeIdeData);
  32268. args: [],
  32269. source: "nextChild\x0a\x09\x22Answer the next node after aNode.\x0a\x09Recurse into the possible children of the receiver to answer the next node to be evaluated\x22\x0a\x09\x0a\x09^ self nodes isEmpty\x0a\x09\x09ifTrue: [ self ]\x0a\x09\x09ifFalse: [ self nodes first nextChild ]",
  32270. referencedClasses: [],
  32271. //>>excludeEnd("ide");
  32272. messageSends: ["ifTrue:ifFalse:", "isEmpty", "nodes", "nextChild", "first"]
  32273. }),
  32274. $globals.Node);
  32275. $core.addMethod(
  32276. $core.method({
  32277. selector: "nextNode",
  32278. protocol: 'accessing',
  32279. fn: function (){
  32280. var self=this;
  32281. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32282. return $core.withContext(function($ctx1) {
  32283. //>>excludeEnd("ctx");
  32284. var $2,$1,$receiver;
  32285. $2=self._parent();
  32286. if(($receiver = $2) == null || $receiver.isNil){
  32287. $1=$2;
  32288. } else {
  32289. var node;
  32290. node=$receiver;
  32291. $1=$recv(node)._nextNode_(self);
  32292. };
  32293. return $1;
  32294. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32295. }, function($ctx1) {$ctx1.fill(self,"nextNode",{},$globals.Node)});
  32296. //>>excludeEnd("ctx");
  32297. },
  32298. //>>excludeStart("ide", pragmas.excludeIdeData);
  32299. args: [],
  32300. source: "nextNode\x0a\x09^ self parent ifNotNil: [ :node |\x0a\x09\x09node nextNode: self ]",
  32301. referencedClasses: [],
  32302. //>>excludeEnd("ide");
  32303. messageSends: ["ifNotNil:", "parent", "nextNode:"]
  32304. }),
  32305. $globals.Node);
  32306. $core.addMethod(
  32307. $core.method({
  32308. selector: "nextNode:",
  32309. protocol: 'accessing',
  32310. fn: function (aNode){
  32311. var self=this;
  32312. var next;
  32313. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32314. return $core.withContext(function($ctx1) {
  32315. //>>excludeEnd("ctx");
  32316. var $1,$2;
  32317. var $early={};
  32318. try {
  32319. $1=self._nodes();
  32320. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32321. $ctx1.sendIdx["nodes"]=1;
  32322. //>>excludeEnd("ctx");
  32323. next=$recv($1)._at_ifAbsent_($recv($recv(self._nodes())._indexOf_(aNode)).__plus((1)),(function(){
  32324. throw $early=[self];
  32325. }));
  32326. $2=$recv(next)._nextChild();
  32327. return $2;
  32328. }
  32329. catch(e) {if(e===$early)return e[0]; throw e}
  32330. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32331. }, function($ctx1) {$ctx1.fill(self,"nextNode:",{aNode:aNode,next:next},$globals.Node)});
  32332. //>>excludeEnd("ctx");
  32333. },
  32334. //>>excludeStart("ide", pragmas.excludeIdeData);
  32335. args: ["aNode"],
  32336. source: "nextNode: aNode\x0a\x09\x22Answer the next node after aNode.\x0a\x09Recurse into the possible children of the next node to answer the next node to be evaluated\x22\x0a\x09\x0a\x09| next |\x0a\x09\x0a\x09next := self nodes \x0a\x09\x09at: (self nodes indexOf: aNode) + 1\x0a\x09\x09ifAbsent: [ ^ self ].\x0a\x09\x0a\x09^ next nextChild",
  32337. referencedClasses: [],
  32338. //>>excludeEnd("ide");
  32339. messageSends: ["at:ifAbsent:", "nodes", "+", "indexOf:", "nextChild"]
  32340. }),
  32341. $globals.Node);
  32342. $core.addMethod(
  32343. $core.method({
  32344. selector: "nodes",
  32345. protocol: 'accessing',
  32346. fn: function (){
  32347. var self=this;
  32348. function $Array(){return $globals.Array||(typeof Array=="undefined"?nil:Array)}
  32349. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32350. return $core.withContext(function($ctx1) {
  32351. //>>excludeEnd("ctx");
  32352. var $2,$1,$receiver;
  32353. $2=self["@nodes"];
  32354. if(($receiver = $2) == null || $receiver.isNil){
  32355. self["@nodes"]=$recv($Array())._new();
  32356. $1=self["@nodes"];
  32357. } else {
  32358. $1=$2;
  32359. };
  32360. return $1;
  32361. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32362. }, function($ctx1) {$ctx1.fill(self,"nodes",{},$globals.Node)});
  32363. //>>excludeEnd("ctx");
  32364. },
  32365. //>>excludeStart("ide", pragmas.excludeIdeData);
  32366. args: [],
  32367. source: "nodes\x0a\x09^ nodes ifNil: [ nodes := Array new ]",
  32368. referencedClasses: ["Array"],
  32369. //>>excludeEnd("ide");
  32370. messageSends: ["ifNil:", "new"]
  32371. }),
  32372. $globals.Node);
  32373. $core.addMethod(
  32374. $core.method({
  32375. selector: "nodes:",
  32376. protocol: 'building',
  32377. fn: function (aCollection){
  32378. var self=this;
  32379. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32380. return $core.withContext(function($ctx1) {
  32381. //>>excludeEnd("ctx");
  32382. self["@nodes"]=aCollection;
  32383. $recv(aCollection)._do_((function(each){
  32384. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32385. return $core.withContext(function($ctx2) {
  32386. //>>excludeEnd("ctx");
  32387. return $recv(each)._parent_(self);
  32388. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32389. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  32390. //>>excludeEnd("ctx");
  32391. }));
  32392. return self;
  32393. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32394. }, function($ctx1) {$ctx1.fill(self,"nodes:",{aCollection:aCollection},$globals.Node)});
  32395. //>>excludeEnd("ctx");
  32396. },
  32397. //>>excludeStart("ide", pragmas.excludeIdeData);
  32398. args: ["aCollection"],
  32399. source: "nodes: aCollection\x0a\x09nodes := aCollection.\x0a\x09aCollection do: [ :each | each parent: self ]",
  32400. referencedClasses: [],
  32401. //>>excludeEnd("ide");
  32402. messageSends: ["do:", "parent:"]
  32403. }),
  32404. $globals.Node);
  32405. $core.addMethod(
  32406. $core.method({
  32407. selector: "parent",
  32408. protocol: 'accessing',
  32409. fn: function (){
  32410. var self=this;
  32411. var $1;
  32412. $1=self["@parent"];
  32413. return $1;
  32414. },
  32415. //>>excludeStart("ide", pragmas.excludeIdeData);
  32416. args: [],
  32417. source: "parent\x0a\x09^ parent",
  32418. referencedClasses: [],
  32419. //>>excludeEnd("ide");
  32420. messageSends: []
  32421. }),
  32422. $globals.Node);
  32423. $core.addMethod(
  32424. $core.method({
  32425. selector: "parent:",
  32426. protocol: 'accessing',
  32427. fn: function (aNode){
  32428. var self=this;
  32429. self["@parent"]=aNode;
  32430. return self;
  32431. },
  32432. //>>excludeStart("ide", pragmas.excludeIdeData);
  32433. args: ["aNode"],
  32434. source: "parent: aNode\x0a\x09parent := aNode",
  32435. referencedClasses: [],
  32436. //>>excludeEnd("ide");
  32437. messageSends: []
  32438. }),
  32439. $globals.Node);
  32440. $core.addMethod(
  32441. $core.method({
  32442. selector: "position",
  32443. protocol: 'accessing',
  32444. fn: function (){
  32445. var self=this;
  32446. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32447. return $core.withContext(function($ctx1) {
  32448. //>>excludeEnd("ctx");
  32449. var $2,$3,$1,$receiver;
  32450. $2=self["@position"];
  32451. if(($receiver = $2) == null || $receiver.isNil){
  32452. $3=self._parent();
  32453. if(($receiver = $3) == null || $receiver.isNil){
  32454. $1=$3;
  32455. } else {
  32456. var node;
  32457. node=$receiver;
  32458. $1=$recv(node)._position();
  32459. };
  32460. } else {
  32461. $1=$2;
  32462. };
  32463. return $1;
  32464. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32465. }, function($ctx1) {$ctx1.fill(self,"position",{},$globals.Node)});
  32466. //>>excludeEnd("ctx");
  32467. },
  32468. //>>excludeStart("ide", pragmas.excludeIdeData);
  32469. args: [],
  32470. 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 ] ]",
  32471. referencedClasses: [],
  32472. //>>excludeEnd("ide");
  32473. messageSends: ["ifNil:", "ifNotNil:", "parent", "position"]
  32474. }),
  32475. $globals.Node);
  32476. $core.addMethod(
  32477. $core.method({
  32478. selector: "position:",
  32479. protocol: 'accessing',
  32480. fn: function (aPosition){
  32481. var self=this;
  32482. self["@position"]=aPosition;
  32483. return self;
  32484. },
  32485. //>>excludeStart("ide", pragmas.excludeIdeData);
  32486. args: ["aPosition"],
  32487. source: "position: aPosition\x0a\x09position := aPosition",
  32488. referencedClasses: [],
  32489. //>>excludeEnd("ide");
  32490. messageSends: []
  32491. }),
  32492. $globals.Node);
  32493. $core.addMethod(
  32494. $core.method({
  32495. selector: "positionEnd",
  32496. protocol: 'accessing',
  32497. fn: function (){
  32498. var self=this;
  32499. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32500. return $core.withContext(function($ctx1) {
  32501. //>>excludeEnd("ctx");
  32502. var $2,$7,$6,$5,$4,$3,$1;
  32503. $2=self._positionStart();
  32504. $7=self._source();
  32505. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32506. $ctx1.sendIdx["source"]=1;
  32507. //>>excludeEnd("ctx");
  32508. $6=$recv($7)._lines();
  32509. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32510. $ctx1.sendIdx["lines"]=1;
  32511. //>>excludeEnd("ctx");
  32512. $5=$recv($6)._size();
  32513. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32514. $ctx1.sendIdx["size"]=1;
  32515. //>>excludeEnd("ctx");
  32516. $4=$recv($5).__minus((1));
  32517. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32518. $ctx1.sendIdx["-"]=1;
  32519. //>>excludeEnd("ctx");
  32520. $3=$recv($4).__at($recv($recv($recv($recv(self._source())._lines())._last())._size()).__minus((1)));
  32521. $1=$recv($2).__plus($3);
  32522. return $1;
  32523. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32524. }, function($ctx1) {$ctx1.fill(self,"positionEnd",{},$globals.Node)});
  32525. //>>excludeEnd("ctx");
  32526. },
  32527. //>>excludeStart("ide", pragmas.excludeIdeData);
  32528. args: [],
  32529. source: "positionEnd\x0a\x09^ self positionStart + ((self source lines size - 1) @ (self source lines last size - 1))",
  32530. referencedClasses: [],
  32531. //>>excludeEnd("ide");
  32532. messageSends: ["+", "positionStart", "@", "-", "size", "lines", "source", "last"]
  32533. }),
  32534. $globals.Node);
  32535. $core.addMethod(
  32536. $core.method({
  32537. selector: "positionStart",
  32538. protocol: 'accessing',
  32539. fn: function (){
  32540. var self=this;
  32541. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32542. return $core.withContext(function($ctx1) {
  32543. //>>excludeEnd("ctx");
  32544. var $1;
  32545. $1=self._position();
  32546. return $1;
  32547. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32548. }, function($ctx1) {$ctx1.fill(self,"positionStart",{},$globals.Node)});
  32549. //>>excludeEnd("ctx");
  32550. },
  32551. //>>excludeStart("ide", pragmas.excludeIdeData);
  32552. args: [],
  32553. source: "positionStart\x0a\x09^ self position",
  32554. referencedClasses: [],
  32555. //>>excludeEnd("ide");
  32556. messageSends: ["position"]
  32557. }),
  32558. $globals.Node);
  32559. $core.addMethod(
  32560. $core.method({
  32561. selector: "postCopy",
  32562. protocol: 'copying',
  32563. fn: function (){
  32564. var self=this;
  32565. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32566. return $core.withContext(function($ctx1) {
  32567. //>>excludeEnd("ctx");
  32568. (
  32569. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32570. $ctx1.supercall = true,
  32571. //>>excludeEnd("ctx");
  32572. $globals.Node.superclass.fn.prototype._postCopy.apply($recv(self), []));
  32573. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32574. $ctx1.supercall = false;
  32575. //>>excludeEnd("ctx");;
  32576. $recv(self._nodes())._do_((function(each){
  32577. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32578. return $core.withContext(function($ctx2) {
  32579. //>>excludeEnd("ctx");
  32580. return $recv(each)._parent_(self);
  32581. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32582. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  32583. //>>excludeEnd("ctx");
  32584. }));
  32585. return self;
  32586. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32587. }, function($ctx1) {$ctx1.fill(self,"postCopy",{},$globals.Node)});
  32588. //>>excludeEnd("ctx");
  32589. },
  32590. //>>excludeStart("ide", pragmas.excludeIdeData);
  32591. args: [],
  32592. source: "postCopy\x0a\x09super postCopy.\x0a\x09self nodes do: [ :each | each parent: self ]",
  32593. referencedClasses: [],
  32594. //>>excludeEnd("ide");
  32595. messageSends: ["postCopy", "do:", "nodes", "parent:"]
  32596. }),
  32597. $globals.Node);
  32598. $core.addMethod(
  32599. $core.method({
  32600. selector: "requiresSmalltalkContext",
  32601. protocol: 'testing',
  32602. fn: function (){
  32603. var self=this;
  32604. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32605. return $core.withContext(function($ctx1) {
  32606. //>>excludeEnd("ctx");
  32607. var $1;
  32608. $1=$recv($recv(self._nodes())._detect_ifNone_((function(each){
  32609. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32610. return $core.withContext(function($ctx2) {
  32611. //>>excludeEnd("ctx");
  32612. return $recv(each)._requiresSmalltalkContext();
  32613. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32614. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  32615. //>>excludeEnd("ctx");
  32616. }),(function(){
  32617. return nil;
  32618. })))._notNil();
  32619. return $1;
  32620. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32621. }, function($ctx1) {$ctx1.fill(self,"requiresSmalltalkContext",{},$globals.Node)});
  32622. //>>excludeEnd("ctx");
  32623. },
  32624. //>>excludeStart("ide", pragmas.excludeIdeData);
  32625. args: [],
  32626. 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 nodes \x0a\x09\x09detect: [ :each | each requiresSmalltalkContext ]\x0a\x09\x09ifNone: [ nil ]) notNil",
  32627. referencedClasses: [],
  32628. //>>excludeEnd("ide");
  32629. messageSends: ["notNil", "detect:ifNone:", "nodes", "requiresSmalltalkContext"]
  32630. }),
  32631. $globals.Node);
  32632. $core.addMethod(
  32633. $core.method({
  32634. selector: "shouldBeAliased",
  32635. protocol: 'accessing',
  32636. fn: function (){
  32637. var self=this;
  32638. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32639. return $core.withContext(function($ctx1) {
  32640. //>>excludeEnd("ctx");
  32641. var $2,$1,$receiver;
  32642. $2=self["@shouldBeAliased"];
  32643. if(($receiver = $2) == null || $receiver.isNil){
  32644. $1=false;
  32645. } else {
  32646. $1=$2;
  32647. };
  32648. return $1;
  32649. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32650. }, function($ctx1) {$ctx1.fill(self,"shouldBeAliased",{},$globals.Node)});
  32651. //>>excludeEnd("ctx");
  32652. },
  32653. //>>excludeStart("ide", pragmas.excludeIdeData);
  32654. args: [],
  32655. source: "shouldBeAliased\x0a\x09^ shouldBeAliased ifNil: [ false ]",
  32656. referencedClasses: [],
  32657. //>>excludeEnd("ide");
  32658. messageSends: ["ifNil:"]
  32659. }),
  32660. $globals.Node);
  32661. $core.addMethod(
  32662. $core.method({
  32663. selector: "shouldBeAliased:",
  32664. protocol: 'accessing',
  32665. fn: function (aBoolean){
  32666. var self=this;
  32667. self["@shouldBeAliased"]=aBoolean;
  32668. return self;
  32669. },
  32670. //>>excludeStart("ide", pragmas.excludeIdeData);
  32671. args: ["aBoolean"],
  32672. source: "shouldBeAliased: aBoolean\x0a\x09shouldBeAliased := aBoolean",
  32673. referencedClasses: [],
  32674. //>>excludeEnd("ide");
  32675. messageSends: []
  32676. }),
  32677. $globals.Node);
  32678. $core.addMethod(
  32679. $core.method({
  32680. selector: "shouldBeInlined",
  32681. protocol: 'accessing',
  32682. fn: function (){
  32683. var self=this;
  32684. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32685. return $core.withContext(function($ctx1) {
  32686. //>>excludeEnd("ctx");
  32687. var $2,$1,$receiver;
  32688. $2=self["@shouldBeInlined"];
  32689. if(($receiver = $2) == null || $receiver.isNil){
  32690. $1=false;
  32691. } else {
  32692. $1=$2;
  32693. };
  32694. return $1;
  32695. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32696. }, function($ctx1) {$ctx1.fill(self,"shouldBeInlined",{},$globals.Node)});
  32697. //>>excludeEnd("ctx");
  32698. },
  32699. //>>excludeStart("ide", pragmas.excludeIdeData);
  32700. args: [],
  32701. source: "shouldBeInlined\x0a\x09^ shouldBeInlined ifNil: [ false ]",
  32702. referencedClasses: [],
  32703. //>>excludeEnd("ide");
  32704. messageSends: ["ifNil:"]
  32705. }),
  32706. $globals.Node);
  32707. $core.addMethod(
  32708. $core.method({
  32709. selector: "shouldBeInlined:",
  32710. protocol: 'accessing',
  32711. fn: function (aBoolean){
  32712. var self=this;
  32713. self["@shouldBeInlined"]=aBoolean;
  32714. return self;
  32715. },
  32716. //>>excludeStart("ide", pragmas.excludeIdeData);
  32717. args: ["aBoolean"],
  32718. source: "shouldBeInlined: aBoolean\x0a\x09shouldBeInlined := aBoolean",
  32719. referencedClasses: [],
  32720. //>>excludeEnd("ide");
  32721. messageSends: []
  32722. }),
  32723. $globals.Node);
  32724. $core.addMethod(
  32725. $core.method({
  32726. selector: "size",
  32727. protocol: 'accessing',
  32728. fn: function (){
  32729. var self=this;
  32730. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32731. return $core.withContext(function($ctx1) {
  32732. //>>excludeEnd("ctx");
  32733. var $1;
  32734. $1=$recv(self._source())._size();
  32735. return $1;
  32736. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32737. }, function($ctx1) {$ctx1.fill(self,"size",{},$globals.Node)});
  32738. //>>excludeEnd("ctx");
  32739. },
  32740. //>>excludeStart("ide", pragmas.excludeIdeData);
  32741. args: [],
  32742. source: "size\x0a\x09^ self source size",
  32743. referencedClasses: [],
  32744. //>>excludeEnd("ide");
  32745. messageSends: ["size", "source"]
  32746. }),
  32747. $globals.Node);
  32748. $core.addMethod(
  32749. $core.method({
  32750. selector: "source",
  32751. protocol: 'accessing',
  32752. fn: function (){
  32753. var self=this;
  32754. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32755. return $core.withContext(function($ctx1) {
  32756. //>>excludeEnd("ctx");
  32757. var $2,$1,$receiver;
  32758. $2=self["@source"];
  32759. if(($receiver = $2) == null || $receiver.isNil){
  32760. $1="";
  32761. } else {
  32762. $1=$2;
  32763. };
  32764. return $1;
  32765. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32766. }, function($ctx1) {$ctx1.fill(self,"source",{},$globals.Node)});
  32767. //>>excludeEnd("ctx");
  32768. },
  32769. //>>excludeStart("ide", pragmas.excludeIdeData);
  32770. args: [],
  32771. source: "source\x0a\x09^ source ifNil: [ '' ]",
  32772. referencedClasses: [],
  32773. //>>excludeEnd("ide");
  32774. messageSends: ["ifNil:"]
  32775. }),
  32776. $globals.Node);
  32777. $core.addMethod(
  32778. $core.method({
  32779. selector: "source:",
  32780. protocol: 'accessing',
  32781. fn: function (aString){
  32782. var self=this;
  32783. self["@source"]=aString;
  32784. return self;
  32785. },
  32786. //>>excludeStart("ide", pragmas.excludeIdeData);
  32787. args: ["aString"],
  32788. source: "source: aString\x0a\x09source := aString",
  32789. referencedClasses: [],
  32790. //>>excludeEnd("ide");
  32791. messageSends: []
  32792. }),
  32793. $globals.Node);
  32794. $core.addMethod(
  32795. $core.method({
  32796. selector: "stopOnStepping",
  32797. protocol: 'testing',
  32798. fn: function (){
  32799. var self=this;
  32800. return false;
  32801. },
  32802. //>>excludeStart("ide", pragmas.excludeIdeData);
  32803. args: [],
  32804. source: "stopOnStepping\x0a\x09^ false",
  32805. referencedClasses: [],
  32806. //>>excludeEnd("ide");
  32807. messageSends: []
  32808. }),
  32809. $globals.Node);
  32810. $core.addMethod(
  32811. $core.method({
  32812. selector: "subtreeNeedsAliasing",
  32813. protocol: 'testing',
  32814. fn: function (){
  32815. var self=this;
  32816. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32817. return $core.withContext(function($ctx1) {
  32818. //>>excludeEnd("ctx");
  32819. var $1;
  32820. $1=$recv($recv(self._shouldBeAliased())._or_((function(){
  32821. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32822. return $core.withContext(function($ctx2) {
  32823. //>>excludeEnd("ctx");
  32824. return self._shouldBeInlined();
  32825. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32826. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  32827. //>>excludeEnd("ctx");
  32828. })))._or_((function(){
  32829. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32830. return $core.withContext(function($ctx2) {
  32831. //>>excludeEnd("ctx");
  32832. return $recv(self._nodes())._anySatisfy_((function(each){
  32833. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32834. return $core.withContext(function($ctx3) {
  32835. //>>excludeEnd("ctx");
  32836. return $recv(each)._subtreeNeedsAliasing();
  32837. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32838. }, function($ctx3) {$ctx3.fillBlock({each:each},$ctx2,3)});
  32839. //>>excludeEnd("ctx");
  32840. }));
  32841. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32842. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
  32843. //>>excludeEnd("ctx");
  32844. }));
  32845. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32846. $ctx1.sendIdx["or:"]=1;
  32847. //>>excludeEnd("ctx");
  32848. return $1;
  32849. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32850. }, function($ctx1) {$ctx1.fill(self,"subtreeNeedsAliasing",{},$globals.Node)});
  32851. //>>excludeEnd("ctx");
  32852. },
  32853. //>>excludeStart("ide", pragmas.excludeIdeData);
  32854. args: [],
  32855. source: "subtreeNeedsAliasing\x0a\x09^ (self shouldBeAliased or: [ self shouldBeInlined ]) or: [\x0a\x09\x09self nodes anySatisfy: [ :each | each subtreeNeedsAliasing ] ]",
  32856. referencedClasses: [],
  32857. //>>excludeEnd("ide");
  32858. messageSends: ["or:", "shouldBeAliased", "shouldBeInlined", "anySatisfy:", "nodes", "subtreeNeedsAliasing"]
  32859. }),
  32860. $globals.Node);
  32861. $core.addClass('AssignmentNode', $globals.Node, ['left', 'right'], 'Compiler-AST');
  32862. //>>excludeStart("ide", pragmas.excludeIdeData);
  32863. $globals.AssignmentNode.comment="I represent an assignment node.";
  32864. //>>excludeEnd("ide");
  32865. $core.addMethod(
  32866. $core.method({
  32867. selector: "accept:",
  32868. protocol: 'visiting',
  32869. fn: function (aVisitor){
  32870. var self=this;
  32871. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32872. return $core.withContext(function($ctx1) {
  32873. //>>excludeEnd("ctx");
  32874. var $1;
  32875. $1=$recv(aVisitor)._visitAssignmentNode_(self);
  32876. return $1;
  32877. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32878. }, function($ctx1) {$ctx1.fill(self,"accept:",{aVisitor:aVisitor},$globals.AssignmentNode)});
  32879. //>>excludeEnd("ctx");
  32880. },
  32881. //>>excludeStart("ide", pragmas.excludeIdeData);
  32882. args: ["aVisitor"],
  32883. source: "accept: aVisitor\x0a\x09^ aVisitor visitAssignmentNode: self",
  32884. referencedClasses: [],
  32885. //>>excludeEnd("ide");
  32886. messageSends: ["visitAssignmentNode:"]
  32887. }),
  32888. $globals.AssignmentNode);
  32889. $core.addMethod(
  32890. $core.method({
  32891. selector: "isAssignmentNode",
  32892. protocol: 'testing',
  32893. fn: function (){
  32894. var self=this;
  32895. return true;
  32896. },
  32897. //>>excludeStart("ide", pragmas.excludeIdeData);
  32898. args: [],
  32899. source: "isAssignmentNode\x0a\x09^ true",
  32900. referencedClasses: [],
  32901. //>>excludeEnd("ide");
  32902. messageSends: []
  32903. }),
  32904. $globals.AssignmentNode);
  32905. $core.addMethod(
  32906. $core.method({
  32907. selector: "left",
  32908. protocol: 'accessing',
  32909. fn: function (){
  32910. var self=this;
  32911. var $1;
  32912. $1=self["@left"];
  32913. return $1;
  32914. },
  32915. //>>excludeStart("ide", pragmas.excludeIdeData);
  32916. args: [],
  32917. source: "left\x0a\x09^ left",
  32918. referencedClasses: [],
  32919. //>>excludeEnd("ide");
  32920. messageSends: []
  32921. }),
  32922. $globals.AssignmentNode);
  32923. $core.addMethod(
  32924. $core.method({
  32925. selector: "left:",
  32926. protocol: 'accessing',
  32927. fn: function (aNode){
  32928. var self=this;
  32929. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32930. return $core.withContext(function($ctx1) {
  32931. //>>excludeEnd("ctx");
  32932. self["@left"]=aNode;
  32933. $recv(aNode)._parent_(self);
  32934. return self;
  32935. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32936. }, function($ctx1) {$ctx1.fill(self,"left:",{aNode:aNode},$globals.AssignmentNode)});
  32937. //>>excludeEnd("ctx");
  32938. },
  32939. //>>excludeStart("ide", pragmas.excludeIdeData);
  32940. args: ["aNode"],
  32941. source: "left: aNode\x0a\x09left := aNode.\x0a\x09aNode parent: self",
  32942. referencedClasses: [],
  32943. //>>excludeEnd("ide");
  32944. messageSends: ["parent:"]
  32945. }),
  32946. $globals.AssignmentNode);
  32947. $core.addMethod(
  32948. $core.method({
  32949. selector: "nodes",
  32950. protocol: 'accessing',
  32951. fn: function (){
  32952. var self=this;
  32953. function $Array(){return $globals.Array||(typeof Array=="undefined"?nil:Array)}
  32954. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32955. return $core.withContext(function($ctx1) {
  32956. //>>excludeEnd("ctx");
  32957. var $1;
  32958. $1=$recv($Array())._with_with_(self._left(),self._right());
  32959. return $1;
  32960. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32961. }, function($ctx1) {$ctx1.fill(self,"nodes",{},$globals.AssignmentNode)});
  32962. //>>excludeEnd("ctx");
  32963. },
  32964. //>>excludeStart("ide", pragmas.excludeIdeData);
  32965. args: [],
  32966. source: "nodes\x0a\x09^ Array with: self left with: self right",
  32967. referencedClasses: ["Array"],
  32968. //>>excludeEnd("ide");
  32969. messageSends: ["with:with:", "left", "right"]
  32970. }),
  32971. $globals.AssignmentNode);
  32972. $core.addMethod(
  32973. $core.method({
  32974. selector: "right",
  32975. protocol: 'accessing',
  32976. fn: function (){
  32977. var self=this;
  32978. var $1;
  32979. $1=self["@right"];
  32980. return $1;
  32981. },
  32982. //>>excludeStart("ide", pragmas.excludeIdeData);
  32983. args: [],
  32984. source: "right\x0a\x09^ right",
  32985. referencedClasses: [],
  32986. //>>excludeEnd("ide");
  32987. messageSends: []
  32988. }),
  32989. $globals.AssignmentNode);
  32990. $core.addMethod(
  32991. $core.method({
  32992. selector: "right:",
  32993. protocol: 'accessing',
  32994. fn: function (aNode){
  32995. var self=this;
  32996. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  32997. return $core.withContext(function($ctx1) {
  32998. //>>excludeEnd("ctx");
  32999. self["@right"]=aNode;
  33000. $recv(aNode)._parent_(self);
  33001. return self;
  33002. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  33003. }, function($ctx1) {$ctx1.fill(self,"right:",{aNode:aNode},$globals.AssignmentNode)});
  33004. //>>excludeEnd("ctx");
  33005. },
  33006. //>>excludeStart("ide", pragmas.excludeIdeData);
  33007. args: ["aNode"],
  33008. source: "right: aNode\x0a\x09right := aNode.\x0a\x09aNode parent: self",
  33009. referencedClasses: [],
  33010. //>>excludeEnd("ide");
  33011. messageSends: ["parent:"]
  33012. }),
  33013. $globals.AssignmentNode);
  33014. $core.addMethod(
  33015. $core.method({
  33016. selector: "shouldBeAliased",
  33017. protocol: 'testing',
  33018. fn: function (){
  33019. var self=this;
  33020. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  33021. return $core.withContext(function($ctx1) {
  33022. //>>excludeEnd("ctx");
  33023. var $2,$1;
  33024. $2=(
  33025. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  33026. $ctx1.supercall = true,
  33027. //>>excludeEnd("ctx");
  33028. $globals.AssignmentNode.superclass.fn.prototype._shouldBeAliased.apply($recv(self), []));
  33029. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  33030. $ctx1.supercall = false;
  33031. //>>excludeEnd("ctx");;
  33032. $1=$recv($2)._or_((function(){
  33033. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  33034. return $core.withContext(function($ctx2) {
  33035. //>>excludeEnd("ctx");
  33036. return self._isReferenced();
  33037. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  33038. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  33039. //>>excludeEnd("ctx");
  33040. }));
  33041. return $1;
  33042. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  33043. }, function($ctx1) {$ctx1.fill(self,"shouldBeAliased",{},$globals.AssignmentNode)});
  33044. //>>excludeEnd("ctx");
  33045. },
  33046. //>>excludeStart("ide", pragmas.excludeIdeData);
  33047. args: [],
  33048. source: "shouldBeAliased\x0a\x09^ super shouldBeAliased or: [ self isReferenced ]",
  33049. referencedClasses: [],
  33050. //>>excludeEnd("ide");
  33051. messageSends: ["or:", "shouldBeAliased", "isReferenced"]
  33052. }),
  33053. $globals.AssignmentNode);
  33054. $core.addClass('BlockNode', $globals.Node, ['parameters', 'scope'], 'Compiler-AST');
  33055. //>>excludeStart("ide", pragmas.excludeIdeData);
  33056. $globals.BlockNode.comment="I represent an block closure node.";
  33057. //>>excludeEnd("ide");
  33058. $core.addMethod(
  33059. $core.method({
  33060. selector: "accept:",
  33061. protocol: 'visiting',
  33062. fn: function (aVisitor){
  33063. var self=this;
  33064. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  33065. return $core.withContext(function($ctx1) {
  33066. //>>excludeEnd("ctx");
  33067. var $1;
  33068. $1=$recv(aVisitor)._visitBlockNode_(self);
  33069. return $1;
  33070. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  33071. }, function($ctx1) {$ctx1.fill(self,"accept:",{aVisitor:aVisitor},$globals.BlockNode)});
  33072. //>>excludeEnd("ctx");
  33073. },
  33074. //>>excludeStart("ide", pragmas.excludeIdeData);
  33075. args: ["aVisitor"],
  33076. source: "accept: aVisitor\x0a\x09^ aVisitor visitBlockNode: self",
  33077. referencedClasses: [],
  33078. //>>excludeEnd("ide");
  33079. messageSends: ["visitBlockNode:"]
  33080. }),
  33081. $globals.BlockNode);
  33082. $core.addMethod(
  33083. $core.method({
  33084. selector: "isBlockNode",
  33085. protocol: 'testing',
  33086. fn: function (){
  33087. var self=this;
  33088. return true;
  33089. },
  33090. //>>excludeStart("ide", pragmas.excludeIdeData);
  33091. args: [],
  33092. source: "isBlockNode\x0a\x09^ true",
  33093. referencedClasses: [],
  33094. //>>excludeEnd("ide");
  33095. messageSends: []
  33096. }),
  33097. $globals.BlockNode);
  33098. $core.addMethod(
  33099. $core.method({
  33100. selector: "nextChild",
  33101. protocol: 'accessing',
  33102. fn: function (){
  33103. var self=this;
  33104. return self;
  33105. },
  33106. //>>excludeStart("ide", pragmas.excludeIdeData);
  33107. args: [],
  33108. source: "nextChild\x0a\x09\x22Answer the receiver as we want to avoid eager evaluation\x22\x0a\x09\x0a\x09^ self",
  33109. referencedClasses: [],
  33110. //>>excludeEnd("ide");
  33111. messageSends: []
  33112. }),
  33113. $globals.BlockNode);
  33114. $core.addMethod(
  33115. $core.method({
  33116. selector: "nextNode:",
  33117. protocol: 'accessing',
  33118. fn: function (aNode){
  33119. var self=this;
  33120. return self;
  33121. },
  33122. //>>excludeStart("ide", pragmas.excludeIdeData);
  33123. args: ["aNode"],
  33124. source: "nextNode: aNode\x0a\x09\x22Answer the receiver as we want to avoid eager evaluation\x22\x0a\x09\x0a\x09^ self",
  33125. referencedClasses: [],
  33126. //>>excludeEnd("ide");
  33127. messageSends: []
  33128. }),
  33129. $globals.BlockNode);
  33130. $core.addMethod(
  33131. $core.method({
  33132. selector: "parameters",
  33133. protocol: 'accessing',
  33134. fn: function (){
  33135. var self=this;
  33136. function $Array(){return $globals.Array||(typeof Array=="undefined"?nil:Array)}
  33137. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  33138. return $core.withContext(function($ctx1) {
  33139. //>>excludeEnd("ctx");
  33140. var $2,$1,$receiver;
  33141. $2=self["@parameters"];
  33142. if(($receiver = $2) == null || $receiver.isNil){
  33143. self["@parameters"]=$recv($Array())._new();
  33144. $1=self["@parameters"];
  33145. } else {
  33146. $1=$2;
  33147. };
  33148. return $1;
  33149. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  33150. }, function($ctx1) {$ctx1.fill(self,"parameters",{},$globals.BlockNode)});
  33151. //>>excludeEnd("ctx");
  33152. },
  33153. //>>excludeStart("ide", pragmas.excludeIdeData);
  33154. args: [],
  33155. source: "parameters\x0a\x09^ parameters ifNil: [ parameters := Array new ]",
  33156. referencedClasses: ["Array"],
  33157. //>>excludeEnd("ide");
  33158. messageSends: ["ifNil:", "new"]
  33159. }),
  33160. $globals.BlockNode);
  33161. $core.addMethod(
  33162. $core.method({
  33163. selector: "parameters:",
  33164. protocol: 'accessing',
  33165. fn: function (aCollection){
  33166. var self=this;
  33167. self["@parameters"]=aCollection;
  33168. return self;
  33169. },
  33170. //>>excludeStart("ide", pragmas.excludeIdeData);
  33171. args: ["aCollection"],
  33172. source: "parameters: aCollection\x0a\x09parameters := aCollection",
  33173. referencedClasses: [],
  33174. //>>excludeEnd("ide");
  33175. messageSends: []
  33176. }),
  33177. $globals.BlockNode);
  33178. $core.addMethod(
  33179. $core.method({
  33180. selector: "scope",
  33181. protocol: 'accessing',
  33182. fn: function (){
  33183. var self=this;
  33184. var $1;
  33185. $1=self["@scope"];
  33186. return $1;
  33187. },
  33188. //>>excludeStart("ide", pragmas.excludeIdeData);
  33189. args: [],
  33190. source: "scope\x0a\x09^ scope",
  33191. referencedClasses: [],
  33192. //>>excludeEnd("ide");
  33193. messageSends: []
  33194. }),
  33195. $globals.BlockNode);
  33196. $core.addMethod(
  33197. $core.method({
  33198. selector: "scope:",
  33199. protocol: 'accessing',
  33200. fn: function (aLexicalScope){
  33201. var self=this;
  33202. self["@scope"]=aLexicalScope;
  33203. return self;
  33204. },
  33205. //>>excludeStart("ide", pragmas.excludeIdeData);
  33206. args: ["aLexicalScope"],
  33207. source: "scope: aLexicalScope\x0a\x09scope := aLexicalScope",
  33208. referencedClasses: [],
  33209. //>>excludeEnd("ide");
  33210. messageSends: []
  33211. }),
  33212. $globals.BlockNode);
  33213. $core.addMethod(
  33214. $core.method({
  33215. selector: "subtreeNeedsAliasing",
  33216. protocol: 'testing',
  33217. fn: function (){
  33218. var self=this;
  33219. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  33220. return $core.withContext(function($ctx1) {
  33221. //>>excludeEnd("ctx");
  33222. var $1;
  33223. $1=$recv(self._shouldBeAliased())._or_((function(){
  33224. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  33225. return $core.withContext(function($ctx2) {
  33226. //>>excludeEnd("ctx");
  33227. return self._shouldBeInlined();
  33228. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  33229. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  33230. //>>excludeEnd("ctx");
  33231. }));
  33232. return $1;
  33233. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  33234. }, function($ctx1) {$ctx1.fill(self,"subtreeNeedsAliasing",{},$globals.BlockNode)});
  33235. //>>excludeEnd("ctx");
  33236. },
  33237. //>>excludeStart("ide", pragmas.excludeIdeData);
  33238. args: [],
  33239. source: "subtreeNeedsAliasing\x0a\x09^ self shouldBeAliased or: [ self shouldBeInlined ]",
  33240. referencedClasses: [],
  33241. //>>excludeEnd("ide");
  33242. messageSends: ["or:", "shouldBeAliased", "shouldBeInlined"]
  33243. }),
  33244. $globals.BlockNode);
  33245. $core.addClass('CascadeNode', $globals.Node, ['receiver'], 'Compiler-AST');
  33246. //>>excludeStart("ide", pragmas.excludeIdeData);
  33247. $globals.CascadeNode.comment="I represent an cascade node.";
  33248. //>>excludeEnd("ide");
  33249. $core.addMethod(
  33250. $core.method({
  33251. selector: "accept:",
  33252. protocol: 'visiting',
  33253. fn: function (aVisitor){
  33254. var self=this;
  33255. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  33256. return $core.withContext(function($ctx1) {
  33257. //>>excludeEnd("ctx");
  33258. var $1;
  33259. $1=$recv(aVisitor)._visitCascadeNode_(self);
  33260. return $1;
  33261. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  33262. }, function($ctx1) {$ctx1.fill(self,"accept:",{aVisitor:aVisitor},$globals.CascadeNode)});
  33263. //>>excludeEnd("ctx");
  33264. },
  33265. //>>excludeStart("ide", pragmas.excludeIdeData);
  33266. args: ["aVisitor"],
  33267. source: "accept: aVisitor\x0a\x09^ aVisitor visitCascadeNode: self",
  33268. referencedClasses: [],
  33269. //>>excludeEnd("ide");
  33270. messageSends: ["visitCascadeNode:"]
  33271. }),
  33272. $globals.CascadeNode);
  33273. $core.addMethod(
  33274. $core.method({
  33275. selector: "isCascadeNode",
  33276. protocol: 'testing',
  33277. fn: function (){
  33278. var self=this;
  33279. return true;
  33280. },
  33281. //>>excludeStart("ide", pragmas.excludeIdeData);
  33282. args: [],
  33283. source: "isCascadeNode\x0a\x09^ true",
  33284. referencedClasses: [],
  33285. //>>excludeEnd("ide");
  33286. messageSends: []
  33287. }),
  33288. $globals.CascadeNode);
  33289. $core.addMethod(
  33290. $core.method({
  33291. selector: "receiver",
  33292. protocol: 'accessing',
  33293. fn: function (){
  33294. var self=this;
  33295. var $1;
  33296. $1=self["@receiver"];
  33297. return $1;
  33298. },
  33299. //>>excludeStart("ide", pragmas.excludeIdeData);
  33300. args: [],
  33301. source: "receiver\x0a\x09^ receiver",
  33302. referencedClasses: [],
  33303. //>>excludeEnd("ide");
  33304. messageSends: []
  33305. }),
  33306. $globals.CascadeNode);
  33307. $core.addMethod(
  33308. $core.method({
  33309. selector: "receiver:",
  33310. protocol: 'accessing',
  33311. fn: function (aNode){
  33312. var self=this;
  33313. self["@receiver"]=aNode;
  33314. return self;
  33315. },
  33316. //>>excludeStart("ide", pragmas.excludeIdeData);
  33317. args: ["aNode"],
  33318. source: "receiver: aNode\x0a\x09receiver := aNode",
  33319. referencedClasses: [],
  33320. //>>excludeEnd("ide");
  33321. messageSends: []
  33322. }),
  33323. $globals.CascadeNode);
  33324. $core.addClass('DynamicArrayNode', $globals.Node, [], 'Compiler-AST');
  33325. //>>excludeStart("ide", pragmas.excludeIdeData);
  33326. $globals.DynamicArrayNode.comment="I represent an dynamic array node.";
  33327. //>>excludeEnd("ide");
  33328. $core.addMethod(
  33329. $core.method({
  33330. selector: "accept:",
  33331. protocol: 'visiting',
  33332. fn: function (aVisitor){
  33333. var self=this;
  33334. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  33335. return $core.withContext(function($ctx1) {
  33336. //>>excludeEnd("ctx");
  33337. var $1;
  33338. $1=$recv(aVisitor)._visitDynamicArrayNode_(self);
  33339. return $1;
  33340. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  33341. }, function($ctx1) {$ctx1.fill(self,"accept:",{aVisitor:aVisitor},$globals.DynamicArrayNode)});
  33342. //>>excludeEnd("ctx");
  33343. },
  33344. //>>excludeStart("ide", pragmas.excludeIdeData);
  33345. args: ["aVisitor"],
  33346. source: "accept: aVisitor\x0a\x09^ aVisitor visitDynamicArrayNode: self",
  33347. referencedClasses: [],
  33348. //>>excludeEnd("ide");
  33349. messageSends: ["visitDynamicArrayNode:"]
  33350. }),
  33351. $globals.DynamicArrayNode);
  33352. $core.addClass('DynamicDictionaryNode', $globals.Node, [], 'Compiler-AST');
  33353. //>>excludeStart("ide", pragmas.excludeIdeData);
  33354. $globals.DynamicDictionaryNode.comment="I represent an dynamic dictionary node.";
  33355. //>>excludeEnd("ide");
  33356. $core.addMethod(
  33357. $core.method({
  33358. selector: "accept:",
  33359. protocol: 'visiting',
  33360. fn: function (aVisitor){
  33361. var self=this;
  33362. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  33363. return $core.withContext(function($ctx1) {
  33364. //>>excludeEnd("ctx");
  33365. var $1;
  33366. $1=$recv(aVisitor)._visitDynamicDictionaryNode_(self);
  33367. return $1;
  33368. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  33369. }, function($ctx1) {$ctx1.fill(self,"accept:",{aVisitor:aVisitor},$globals.DynamicDictionaryNode)});
  33370. //>>excludeEnd("ctx");
  33371. },
  33372. //>>excludeStart("ide", pragmas.excludeIdeData);
  33373. args: ["aVisitor"],
  33374. source: "accept: aVisitor\x0a\x09^ aVisitor visitDynamicDictionaryNode: self",
  33375. referencedClasses: [],
  33376. //>>excludeEnd("ide");
  33377. messageSends: ["visitDynamicDictionaryNode:"]
  33378. }),
  33379. $globals.DynamicDictionaryNode);
  33380. $core.addClass('JSStatementNode', $globals.Node, [], 'Compiler-AST');
  33381. //>>excludeStart("ide", pragmas.excludeIdeData);
  33382. $globals.JSStatementNode.comment="I represent an JavaScript statement node.";
  33383. //>>excludeEnd("ide");
  33384. $core.addMethod(
  33385. $core.method({
  33386. selector: "accept:",
  33387. protocol: 'visiting',
  33388. fn: function (aVisitor){
  33389. var self=this;
  33390. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  33391. return $core.withContext(function($ctx1) {
  33392. //>>excludeEnd("ctx");
  33393. var $1;
  33394. $1=$recv(aVisitor)._visitJSStatementNode_(self);
  33395. return $1;
  33396. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  33397. }, function($ctx1) {$ctx1.fill(self,"accept:",{aVisitor:aVisitor},$globals.JSStatementNode)});
  33398. //>>excludeEnd("ctx");
  33399. },
  33400. //>>excludeStart("ide", pragmas.excludeIdeData);
  33401. args: ["aVisitor"],
  33402. source: "accept: aVisitor\x0a\x09^ aVisitor visitJSStatementNode: self",
  33403. referencedClasses: [],
  33404. //>>excludeEnd("ide");
  33405. messageSends: ["visitJSStatementNode:"]
  33406. }),
  33407. $globals.JSStatementNode);
  33408. $core.addMethod(
  33409. $core.method({
  33410. selector: "isJSStatementNode",
  33411. protocol: 'testing',
  33412. fn: function (){
  33413. var self=this;
  33414. return true;
  33415. },
  33416. //>>excludeStart("ide", pragmas.excludeIdeData);
  33417. args: [],
  33418. source: "isJSStatementNode\x0a\x09^ true",
  33419. referencedClasses: [],
  33420. //>>excludeEnd("ide");
  33421. messageSends: []
  33422. }),
  33423. $globals.JSStatementNode);
  33424. $core.addMethod(
  33425. $core.method({
  33426. selector: "requiresSmalltalkContext",
  33427. protocol: 'testing',
  33428. fn: function (){
  33429. var self=this;
  33430. return true;
  33431. },
  33432. //>>excludeStart("ide", pragmas.excludeIdeData);
  33433. args: [],
  33434. source: "requiresSmalltalkContext\x0a\x09^ true",
  33435. referencedClasses: [],
  33436. //>>excludeEnd("ide");
  33437. messageSends: []
  33438. }),
  33439. $globals.JSStatementNode);
  33440. $core.addClass('MethodNode', $globals.Node, ['selector', 'arguments', 'source', 'scope', 'classReferences', 'sendIndexes', 'superSends'], 'Compiler-AST');
  33441. //>>excludeStart("ide", pragmas.excludeIdeData);
  33442. $globals.MethodNode.comment="I represent an method node.\x0a\x0aA method node must be the root and only method node of a valid AST.";
  33443. //>>excludeEnd("ide");
  33444. $core.addMethod(
  33445. $core.method({
  33446. selector: "accept:",
  33447. protocol: 'visiting',
  33448. fn: function (aVisitor){
  33449. var self=this;
  33450. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  33451. return $core.withContext(function($ctx1) {
  33452. //>>excludeEnd("ctx");
  33453. var $1;
  33454. $1=$recv(aVisitor)._visitMethodNode_(self);
  33455. return $1;
  33456. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  33457. }, function($ctx1) {$ctx1.fill(self,"accept:",{aVisitor:aVisitor},$globals.MethodNode)});
  33458. //>>excludeEnd("ctx");
  33459. },
  33460. //>>excludeStart("ide", pragmas.excludeIdeData);
  33461. args: ["aVisitor"],
  33462. source: "accept: aVisitor\x0a\x09^ aVisitor visitMethodNode: self",
  33463. referencedClasses: [],
  33464. //>>excludeEnd("ide");
  33465. messageSends: ["visitMethodNode:"]
  33466. }),
  33467. $globals.MethodNode);
  33468. $core.addMethod(
  33469. $core.method({
  33470. selector: "arguments",
  33471. protocol: 'accessing',
  33472. fn: function (){
  33473. var self=this;
  33474. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  33475. return $core.withContext(function($ctx1) {
  33476. //>>excludeEnd("ctx");
  33477. var $2,$1,$receiver;
  33478. $2=self["@arguments"];
  33479. if(($receiver = $2) == null || $receiver.isNil){
  33480. $1=[];
  33481. } else {
  33482. $1=$2;
  33483. };
  33484. return $1;
  33485. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  33486. }, function($ctx1) {$ctx1.fill(self,"arguments",{},$globals.MethodNode)});
  33487. //>>excludeEnd("ctx");
  33488. },
  33489. //>>excludeStart("ide", pragmas.excludeIdeData);
  33490. args: [],
  33491. source: "arguments\x0a\x09^ arguments ifNil: [ #() ]",
  33492. referencedClasses: [],
  33493. //>>excludeEnd("ide");
  33494. messageSends: ["ifNil:"]
  33495. }),
  33496. $globals.MethodNode);
  33497. $core.addMethod(
  33498. $core.method({
  33499. selector: "arguments:",
  33500. protocol: 'accessing',
  33501. fn: function (aCollection){
  33502. var self=this;
  33503. self["@arguments"]=aCollection;
  33504. return self;
  33505. },
  33506. //>>excludeStart("ide", pragmas.excludeIdeData);
  33507. args: ["aCollection"],
  33508. source: "arguments: aCollection\x0a\x09arguments := aCollection",
  33509. referencedClasses: [],
  33510. //>>excludeEnd("ide");
  33511. messageSends: []
  33512. }),
  33513. $globals.MethodNode);
  33514. $core.addMethod(
  33515. $core.method({
  33516. selector: "classReferences",
  33517. protocol: 'accessing',
  33518. fn: function (){
  33519. var self=this;
  33520. var $1;
  33521. $1=self["@classReferences"];
  33522. return $1;
  33523. },
  33524. //>>excludeStart("ide", pragmas.excludeIdeData);
  33525. args: [],
  33526. source: "classReferences\x0a\x09^ classReferences",
  33527. referencedClasses: [],
  33528. //>>excludeEnd("ide");
  33529. messageSends: []
  33530. }),
  33531. $globals.MethodNode);
  33532. $core.addMethod(
  33533. $core.method({
  33534. selector: "classReferences:",
  33535. protocol: 'accessing',
  33536. fn: function (aCollection){
  33537. var self=this;
  33538. self["@classReferences"]=aCollection;
  33539. return self;
  33540. },
  33541. //>>excludeStart("ide", pragmas.excludeIdeData);
  33542. args: ["aCollection"],
  33543. source: "classReferences: aCollection\x0a\x09classReferences := aCollection",
  33544. referencedClasses: [],
  33545. //>>excludeEnd("ide");
  33546. messageSends: []
  33547. }),
  33548. $globals.MethodNode);
  33549. $core.addMethod(
  33550. $core.method({
  33551. selector: "messageSends",
  33552. protocol: 'accessing',
  33553. fn: function (){
  33554. var self=this;
  33555. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  33556. return $core.withContext(function($ctx1) {
  33557. //>>excludeEnd("ctx");
  33558. var $1;
  33559. $1=$recv(self._sendIndexes())._keys();
  33560. return $1;
  33561. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  33562. }, function($ctx1) {$ctx1.fill(self,"messageSends",{},$globals.MethodNode)});
  33563. //>>excludeEnd("ctx");
  33564. },
  33565. //>>excludeStart("ide", pragmas.excludeIdeData);
  33566. args: [],
  33567. source: "messageSends\x0a\x09^ self sendIndexes keys",
  33568. referencedClasses: [],
  33569. //>>excludeEnd("ide");
  33570. messageSends: ["keys", "sendIndexes"]
  33571. }),
  33572. $globals.MethodNode);
  33573. $core.addMethod(
  33574. $core.method({
  33575. selector: "method",
  33576. protocol: 'accessing',
  33577. fn: function (){
  33578. var self=this;
  33579. return self;
  33580. },
  33581. //>>excludeStart("ide", pragmas.excludeIdeData);
  33582. args: [],
  33583. source: "method\x0a\x09^ self",
  33584. referencedClasses: [],
  33585. //>>excludeEnd("ide");
  33586. messageSends: []
  33587. }),
  33588. $globals.MethodNode);
  33589. $core.addMethod(
  33590. $core.method({
  33591. selector: "scope",
  33592. protocol: 'accessing',
  33593. fn: function (){
  33594. var self=this;
  33595. var $1;
  33596. $1=self["@scope"];
  33597. return $1;
  33598. },
  33599. //>>excludeStart("ide", pragmas.excludeIdeData);
  33600. args: [],
  33601. source: "scope\x0a\x09^ scope",
  33602. referencedClasses: [],
  33603. //>>excludeEnd("ide");
  33604. messageSends: []
  33605. }),
  33606. $globals.MethodNode);
  33607. $core.addMethod(
  33608. $core.method({
  33609. selector: "scope:",
  33610. protocol: 'accessing',
  33611. fn: function (aMethodScope){
  33612. var self=this;
  33613. self["@scope"]=aMethodScope;
  33614. return self;
  33615. },
  33616. //>>excludeStart("ide", pragmas.excludeIdeData);
  33617. args: ["aMethodScope"],
  33618. source: "scope: aMethodScope\x0a\x09scope := aMethodScope",
  33619. referencedClasses: [],
  33620. //>>excludeEnd("ide");
  33621. messageSends: []
  33622. }),
  33623. $globals.MethodNode);
  33624. $core.addMethod(
  33625. $core.method({
  33626. selector: "selector",
  33627. protocol: 'accessing',
  33628. fn: function (){
  33629. var self=this;
  33630. var $1;
  33631. $1=self["@selector"];
  33632. return $1;
  33633. },
  33634. //>>excludeStart("ide", pragmas.excludeIdeData);
  33635. args: [],
  33636. source: "selector\x0a\x09^ selector",
  33637. referencedClasses: [],
  33638. //>>excludeEnd("ide");
  33639. messageSends: []
  33640. }),
  33641. $globals.MethodNode);
  33642. $core.addMethod(
  33643. $core.method({
  33644. selector: "selector:",
  33645. protocol: 'accessing',
  33646. fn: function (aString){
  33647. var self=this;
  33648. self["@selector"]=aString;
  33649. return self;
  33650. },
  33651. //>>excludeStart("ide", pragmas.excludeIdeData);
  33652. args: ["aString"],
  33653. source: "selector: aString\x0a\x09selector := aString",
  33654. referencedClasses: [],
  33655. //>>excludeEnd("ide");
  33656. messageSends: []
  33657. }),
  33658. $globals.MethodNode);
  33659. $core.addMethod(
  33660. $core.method({
  33661. selector: "sendIndexes",
  33662. protocol: 'accessing',
  33663. fn: function (){
  33664. var self=this;
  33665. var $1;
  33666. $1=self["@sendIndexes"];
  33667. return $1;
  33668. },
  33669. //>>excludeStart("ide", pragmas.excludeIdeData);
  33670. args: [],
  33671. source: "sendIndexes\x0a\x09^ sendIndexes",
  33672. referencedClasses: [],
  33673. //>>excludeEnd("ide");
  33674. messageSends: []
  33675. }),
  33676. $globals.MethodNode);
  33677. $core.addMethod(
  33678. $core.method({
  33679. selector: "sendIndexes:",
  33680. protocol: 'accessing',
  33681. fn: function (aDictionary){
  33682. var self=this;
  33683. self["@sendIndexes"]=aDictionary;
  33684. return self;
  33685. },
  33686. //>>excludeStart("ide", pragmas.excludeIdeData);
  33687. args: ["aDictionary"],
  33688. source: "sendIndexes: aDictionary\x0a\x09sendIndexes := aDictionary",
  33689. referencedClasses: [],
  33690. //>>excludeEnd("ide");
  33691. messageSends: []
  33692. }),
  33693. $globals.MethodNode);
  33694. $core.addMethod(
  33695. $core.method({
  33696. selector: "sequenceNode",
  33697. protocol: 'accessing',
  33698. fn: function (){
  33699. var self=this;
  33700. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  33701. return $core.withContext(function($ctx1) {
  33702. //>>excludeEnd("ctx");
  33703. var $1;
  33704. var $early={};
  33705. try {
  33706. $recv(self._nodes())._do_((function(each){
  33707. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  33708. return $core.withContext(function($ctx2) {
  33709. //>>excludeEnd("ctx");
  33710. $1=$recv(each)._isSequenceNode();
  33711. if($core.assert($1)){
  33712. throw $early=[each];
  33713. };
  33714. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  33715. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  33716. //>>excludeEnd("ctx");
  33717. }));
  33718. return nil;
  33719. }
  33720. catch(e) {if(e===$early)return e[0]; throw e}
  33721. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  33722. }, function($ctx1) {$ctx1.fill(self,"sequenceNode",{},$globals.MethodNode)});
  33723. //>>excludeEnd("ctx");
  33724. },
  33725. //>>excludeStart("ide", pragmas.excludeIdeData);
  33726. args: [],
  33727. source: "sequenceNode\x0a\x09self nodes do: [ :each |\x0a\x09\x09each isSequenceNode ifTrue: [ ^ each ] ].\x0a\x09\x09\x0a\x09^ nil",
  33728. referencedClasses: [],
  33729. //>>excludeEnd("ide");
  33730. messageSends: ["do:", "nodes", "ifTrue:", "isSequenceNode"]
  33731. }),
  33732. $globals.MethodNode);
  33733. $core.addMethod(
  33734. $core.method({
  33735. selector: "source",
  33736. protocol: 'accessing',
  33737. fn: function (){
  33738. var self=this;
  33739. var $1;
  33740. $1=self["@source"];
  33741. return $1;
  33742. },
  33743. //>>excludeStart("ide", pragmas.excludeIdeData);
  33744. args: [],
  33745. source: "source\x0a\x09^ source",
  33746. referencedClasses: [],
  33747. //>>excludeEnd("ide");
  33748. messageSends: []
  33749. }),
  33750. $globals.MethodNode);
  33751. $core.addMethod(
  33752. $core.method({
  33753. selector: "source:",
  33754. protocol: 'accessing',
  33755. fn: function (aString){
  33756. var self=this;
  33757. self["@source"]=aString;
  33758. return self;
  33759. },
  33760. //>>excludeStart("ide", pragmas.excludeIdeData);
  33761. args: ["aString"],
  33762. source: "source: aString\x0a\x09source := aString",
  33763. referencedClasses: [],
  33764. //>>excludeEnd("ide");
  33765. messageSends: []
  33766. }),
  33767. $globals.MethodNode);
  33768. $core.addMethod(
  33769. $core.method({
  33770. selector: "superSends",
  33771. protocol: 'accessing',
  33772. fn: function (){
  33773. var self=this;
  33774. var $1;
  33775. $1=self["@superSends"];
  33776. return $1;
  33777. },
  33778. //>>excludeStart("ide", pragmas.excludeIdeData);
  33779. args: [],
  33780. source: "superSends\x0a\x09^ superSends",
  33781. referencedClasses: [],
  33782. //>>excludeEnd("ide");
  33783. messageSends: []
  33784. }),
  33785. $globals.MethodNode);
  33786. $core.addMethod(
  33787. $core.method({
  33788. selector: "superSends:",
  33789. protocol: 'accessing',
  33790. fn: function (aCollection){
  33791. var self=this;
  33792. self["@superSends"]=aCollection;
  33793. return self;
  33794. },
  33795. //>>excludeStart("ide", pragmas.excludeIdeData);
  33796. args: ["aCollection"],
  33797. source: "superSends: aCollection\x0a\x09superSends := aCollection",
  33798. referencedClasses: [],
  33799. //>>excludeEnd("ide");
  33800. messageSends: []
  33801. }),
  33802. $globals.MethodNode);
  33803. $core.addClass('ReturnNode', $globals.Node, ['scope'], 'Compiler-AST');
  33804. //>>excludeStart("ide", pragmas.excludeIdeData);
  33805. $globals.ReturnNode.comment="I represent an return node. At the AST level, there is not difference between a local return or non-local return.";
  33806. //>>excludeEnd("ide");
  33807. $core.addMethod(
  33808. $core.method({
  33809. selector: "accept:",
  33810. protocol: 'visiting',
  33811. fn: function (aVisitor){
  33812. var self=this;
  33813. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  33814. return $core.withContext(function($ctx1) {
  33815. //>>excludeEnd("ctx");
  33816. var $1;
  33817. $1=$recv(aVisitor)._visitReturnNode_(self);
  33818. return $1;
  33819. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  33820. }, function($ctx1) {$ctx1.fill(self,"accept:",{aVisitor:aVisitor},$globals.ReturnNode)});
  33821. //>>excludeEnd("ctx");
  33822. },
  33823. //>>excludeStart("ide", pragmas.excludeIdeData);
  33824. args: ["aVisitor"],
  33825. source: "accept: aVisitor\x0a\x09^ aVisitor visitReturnNode: self",
  33826. referencedClasses: [],
  33827. //>>excludeEnd("ide");
  33828. messageSends: ["visitReturnNode:"]
  33829. }),
  33830. $globals.ReturnNode);
  33831. $core.addMethod(
  33832. $core.method({
  33833. selector: "isReturnNode",
  33834. protocol: 'testing',
  33835. fn: function (){
  33836. var self=this;
  33837. return true;
  33838. },
  33839. //>>excludeStart("ide", pragmas.excludeIdeData);
  33840. args: [],
  33841. source: "isReturnNode\x0a\x09^ true",
  33842. referencedClasses: [],
  33843. //>>excludeEnd("ide");
  33844. messageSends: []
  33845. }),
  33846. $globals.ReturnNode);
  33847. $core.addMethod(
  33848. $core.method({
  33849. selector: "nonLocalReturn",
  33850. protocol: 'testing',
  33851. fn: function (){
  33852. var self=this;
  33853. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  33854. return $core.withContext(function($ctx1) {
  33855. //>>excludeEnd("ctx");
  33856. var $1;
  33857. $1=$recv($recv(self._scope())._isMethodScope())._not();
  33858. return $1;
  33859. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  33860. }, function($ctx1) {$ctx1.fill(self,"nonLocalReturn",{},$globals.ReturnNode)});
  33861. //>>excludeEnd("ctx");
  33862. },
  33863. //>>excludeStart("ide", pragmas.excludeIdeData);
  33864. args: [],
  33865. source: "nonLocalReturn\x0a\x09^ self scope isMethodScope not",
  33866. referencedClasses: [],
  33867. //>>excludeEnd("ide");
  33868. messageSends: ["not", "isMethodScope", "scope"]
  33869. }),
  33870. $globals.ReturnNode);
  33871. $core.addMethod(
  33872. $core.method({
  33873. selector: "scope",
  33874. protocol: 'accessing',
  33875. fn: function (){
  33876. var self=this;
  33877. var $1;
  33878. $1=self["@scope"];
  33879. return $1;
  33880. },
  33881. //>>excludeStart("ide", pragmas.excludeIdeData);
  33882. args: [],
  33883. source: "scope\x0a\x09^ scope",
  33884. referencedClasses: [],
  33885. //>>excludeEnd("ide");
  33886. messageSends: []
  33887. }),
  33888. $globals.ReturnNode);
  33889. $core.addMethod(
  33890. $core.method({
  33891. selector: "scope:",
  33892. protocol: 'accessing',
  33893. fn: function (aLexicalScope){
  33894. var self=this;
  33895. self["@scope"]=aLexicalScope;
  33896. return self;
  33897. },
  33898. //>>excludeStart("ide", pragmas.excludeIdeData);
  33899. args: ["aLexicalScope"],
  33900. source: "scope: aLexicalScope\x0a\x09scope := aLexicalScope",
  33901. referencedClasses: [],
  33902. //>>excludeEnd("ide");
  33903. messageSends: []
  33904. }),
  33905. $globals.ReturnNode);
  33906. $core.addClass('SendNode', $globals.Node, ['selector', 'arguments', 'receiver', 'superSend', 'index'], 'Compiler-AST');
  33907. //>>excludeStart("ide", pragmas.excludeIdeData);
  33908. $globals.SendNode.comment="I represent an message send node.";
  33909. //>>excludeEnd("ide");
  33910. $core.addMethod(
  33911. $core.method({
  33912. selector: "accept:",
  33913. protocol: 'visiting',
  33914. fn: function (aVisitor){
  33915. var self=this;
  33916. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  33917. return $core.withContext(function($ctx1) {
  33918. //>>excludeEnd("ctx");
  33919. var $1;
  33920. $1=$recv(aVisitor)._visitSendNode_(self);
  33921. return $1;
  33922. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  33923. }, function($ctx1) {$ctx1.fill(self,"accept:",{aVisitor:aVisitor},$globals.SendNode)});
  33924. //>>excludeEnd("ctx");
  33925. },
  33926. //>>excludeStart("ide", pragmas.excludeIdeData);
  33927. args: ["aVisitor"],
  33928. source: "accept: aVisitor\x0a\x09^ aVisitor visitSendNode: self",
  33929. referencedClasses: [],
  33930. //>>excludeEnd("ide");
  33931. messageSends: ["visitSendNode:"]
  33932. }),
  33933. $globals.SendNode);
  33934. $core.addMethod(
  33935. $core.method({
  33936. selector: "arguments",
  33937. protocol: 'accessing',
  33938. fn: function (){
  33939. var self=this;
  33940. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  33941. return $core.withContext(function($ctx1) {
  33942. //>>excludeEnd("ctx");
  33943. var $2,$1,$receiver;
  33944. $2=self["@arguments"];
  33945. if(($receiver = $2) == null || $receiver.isNil){
  33946. self["@arguments"]=[];
  33947. $1=self["@arguments"];
  33948. } else {
  33949. $1=$2;
  33950. };
  33951. return $1;
  33952. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  33953. }, function($ctx1) {$ctx1.fill(self,"arguments",{},$globals.SendNode)});
  33954. //>>excludeEnd("ctx");
  33955. },
  33956. //>>excludeStart("ide", pragmas.excludeIdeData);
  33957. args: [],
  33958. source: "arguments\x0a\x09^ arguments ifNil: [ arguments := #() ]",
  33959. referencedClasses: [],
  33960. //>>excludeEnd("ide");
  33961. messageSends: ["ifNil:"]
  33962. }),
  33963. $globals.SendNode);
  33964. $core.addMethod(
  33965. $core.method({
  33966. selector: "arguments:",
  33967. protocol: 'accessing',
  33968. fn: function (aCollection){
  33969. var self=this;
  33970. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  33971. return $core.withContext(function($ctx1) {
  33972. //>>excludeEnd("ctx");
  33973. self["@arguments"]=aCollection;
  33974. $recv(aCollection)._do_((function(each){
  33975. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  33976. return $core.withContext(function($ctx2) {
  33977. //>>excludeEnd("ctx");
  33978. return $recv(each)._parent_(self);
  33979. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  33980. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  33981. //>>excludeEnd("ctx");
  33982. }));
  33983. return self;
  33984. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  33985. }, function($ctx1) {$ctx1.fill(self,"arguments:",{aCollection:aCollection},$globals.SendNode)});
  33986. //>>excludeEnd("ctx");
  33987. },
  33988. //>>excludeStart("ide", pragmas.excludeIdeData);
  33989. args: ["aCollection"],
  33990. source: "arguments: aCollection\x0a\x09arguments := aCollection.\x0a\x09aCollection do: [ :each | each parent: self ]",
  33991. referencedClasses: [],
  33992. //>>excludeEnd("ide");
  33993. messageSends: ["do:", "parent:"]
  33994. }),
  33995. $globals.SendNode);
  33996. $core.addMethod(
  33997. $core.method({
  33998. selector: "cascadeNodeWithMessages:",
  33999. protocol: 'accessing',
  34000. fn: function (aCollection){
  34001. var self=this;
  34002. var first;
  34003. function $SendNode(){return $globals.SendNode||(typeof SendNode=="undefined"?nil:SendNode)}
  34004. function $CascadeNode(){return $globals.CascadeNode||(typeof CascadeNode=="undefined"?nil:CascadeNode)}
  34005. function $Array(){return $globals.Array||(typeof Array=="undefined"?nil:Array)}
  34006. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  34007. return $core.withContext(function($ctx1) {
  34008. //>>excludeEnd("ctx");
  34009. var $1,$2,$4,$5,$3;
  34010. $1=$recv($SendNode())._new();
  34011. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  34012. $ctx1.sendIdx["new"]=1;
  34013. //>>excludeEnd("ctx");
  34014. $recv($1)._selector_(self._selector());
  34015. $recv($1)._arguments_(self._arguments());
  34016. $2=$recv($1)._yourself();
  34017. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  34018. $ctx1.sendIdx["yourself"]=1;
  34019. //>>excludeEnd("ctx");
  34020. first=$2;
  34021. $4=$recv($CascadeNode())._new();
  34022. $recv($4)._receiver_(self._receiver());
  34023. $recv($4)._nodes_($recv($recv($Array())._with_(first)).__comma(aCollection));
  34024. $5=$recv($4)._yourself();
  34025. $3=$5;
  34026. return $3;
  34027. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  34028. }, function($ctx1) {$ctx1.fill(self,"cascadeNodeWithMessages:",{aCollection:aCollection,first:first},$globals.SendNode)});
  34029. //>>excludeEnd("ctx");
  34030. },
  34031. //>>excludeStart("ide", pragmas.excludeIdeData);
  34032. args: ["aCollection"],
  34033. source: "cascadeNodeWithMessages: aCollection\x0a\x09| first |\x0a\x09first := SendNode new\x0a\x09\x09selector: self selector;\x0a\x09\x09arguments: self arguments;\x0a\x09\x09yourself.\x0a\x09^ CascadeNode new\x0a\x09\x09receiver: self receiver;\x0a\x09\x09nodes: (Array with: first), aCollection;\x0a\x09\x09yourself",
  34034. referencedClasses: ["SendNode", "CascadeNode", "Array"],
  34035. //>>excludeEnd("ide");
  34036. messageSends: ["selector:", "new", "selector", "arguments:", "arguments", "yourself", "receiver:", "receiver", "nodes:", ",", "with:"]
  34037. }),
  34038. $globals.SendNode);
  34039. $core.addMethod(
  34040. $core.method({
  34041. selector: "index",
  34042. protocol: 'accessing',
  34043. fn: function (){
  34044. var self=this;
  34045. var $1;
  34046. $1=self["@index"];
  34047. return $1;
  34048. },
  34049. //>>excludeStart("ide", pragmas.excludeIdeData);
  34050. args: [],
  34051. source: "index\x0a\x09^ index",
  34052. referencedClasses: [],
  34053. //>>excludeEnd("ide");
  34054. messageSends: []
  34055. }),
  34056. $globals.SendNode);
  34057. $core.addMethod(
  34058. $core.method({
  34059. selector: "index:",
  34060. protocol: 'accessing',
  34061. fn: function (anInteger){
  34062. var self=this;
  34063. self["@index"]=anInteger;
  34064. return self;
  34065. },
  34066. //>>excludeStart("ide", pragmas.excludeIdeData);
  34067. args: ["anInteger"],
  34068. source: "index: anInteger\x0a\x09index := anInteger",
  34069. referencedClasses: [],
  34070. //>>excludeEnd("ide");
  34071. messageSends: []
  34072. }),
  34073. $globals.SendNode);
  34074. $core.addMethod(
  34075. $core.method({
  34076. selector: "isCascadeSendNode",
  34077. protocol: 'testing',
  34078. fn: function (){
  34079. var self=this;
  34080. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  34081. return $core.withContext(function($ctx1) {
  34082. //>>excludeEnd("ctx");
  34083. var $1;
  34084. $1=$recv(self._parent())._isCascadeNode();
  34085. return $1;
  34086. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  34087. }, function($ctx1) {$ctx1.fill(self,"isCascadeSendNode",{},$globals.SendNode)});
  34088. //>>excludeEnd("ctx");
  34089. },
  34090. //>>excludeStart("ide", pragmas.excludeIdeData);
  34091. args: [],
  34092. source: "isCascadeSendNode\x0a\x09^ self parent isCascadeNode",
  34093. referencedClasses: [],
  34094. //>>excludeEnd("ide");
  34095. messageSends: ["isCascadeNode", "parent"]
  34096. }),
  34097. $globals.SendNode);
  34098. $core.addMethod(
  34099. $core.method({
  34100. selector: "isNavigationNode",
  34101. protocol: 'testing',
  34102. fn: function (){
  34103. var self=this;
  34104. return true;
  34105. },
  34106. //>>excludeStart("ide", pragmas.excludeIdeData);
  34107. args: [],
  34108. source: "isNavigationNode\x0a\x09^ true",
  34109. referencedClasses: [],
  34110. //>>excludeEnd("ide");
  34111. messageSends: []
  34112. }),
  34113. $globals.SendNode);
  34114. $core.addMethod(
  34115. $core.method({
  34116. selector: "isSendNode",
  34117. protocol: 'testing',
  34118. fn: function (){
  34119. var self=this;
  34120. return true;
  34121. },
  34122. //>>excludeStart("ide", pragmas.excludeIdeData);
  34123. args: [],
  34124. source: "isSendNode\x0a\x09^ true",
  34125. referencedClasses: [],
  34126. //>>excludeEnd("ide");
  34127. messageSends: []
  34128. }),
  34129. $globals.SendNode);
  34130. $core.addMethod(
  34131. $core.method({
  34132. selector: "navigationLink",
  34133. protocol: 'accessing',
  34134. fn: function (){
  34135. var self=this;
  34136. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  34137. return $core.withContext(function($ctx1) {
  34138. //>>excludeEnd("ctx");
  34139. var $1;
  34140. $1=self._selector();
  34141. return $1;
  34142. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  34143. }, function($ctx1) {$ctx1.fill(self,"navigationLink",{},$globals.SendNode)});
  34144. //>>excludeEnd("ctx");
  34145. },
  34146. //>>excludeStart("ide", pragmas.excludeIdeData);
  34147. args: [],
  34148. source: "navigationLink\x0a\x09^ self selector",
  34149. referencedClasses: [],
  34150. //>>excludeEnd("ide");
  34151. messageSends: ["selector"]
  34152. }),
  34153. $globals.SendNode);
  34154. $core.addMethod(
  34155. $core.method({
  34156. selector: "nodes",
  34157. protocol: 'accessing',
  34158. fn: function (){
  34159. var self=this;
  34160. function $Array(){return $globals.Array||(typeof Array=="undefined"?nil:Array)}
  34161. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  34162. return $core.withContext(function($ctx1) {
  34163. //>>excludeEnd("ctx");
  34164. var $1,$3,$2,$5,$6,$4,$receiver;
  34165. $1=self._receiver();
  34166. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  34167. $ctx1.sendIdx["receiver"]=1;
  34168. //>>excludeEnd("ctx");
  34169. if(($receiver = $1) == null || $receiver.isNil){
  34170. $3=self._arguments();
  34171. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  34172. $ctx1.sendIdx["arguments"]=1;
  34173. //>>excludeEnd("ctx");
  34174. $2=$recv($3)._copy();
  34175. return $2;
  34176. } else {
  34177. $1;
  34178. };
  34179. $5=$recv($Array())._with_(self._receiver());
  34180. $recv($5)._addAll_(self._arguments());
  34181. $6=$recv($5)._yourself();
  34182. $4=$6;
  34183. return $4;
  34184. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  34185. }, function($ctx1) {$ctx1.fill(self,"nodes",{},$globals.SendNode)});
  34186. //>>excludeEnd("ctx");
  34187. },
  34188. //>>excludeStart("ide", pragmas.excludeIdeData);
  34189. args: [],
  34190. source: "nodes\x0a\x09self receiver ifNil: [ ^ self arguments copy ].\x0a\x09\x0a\x09^ (Array with: self receiver)\x0a\x09\x09addAll: self arguments;\x0a\x09\x09yourself",
  34191. referencedClasses: ["Array"],
  34192. //>>excludeEnd("ide");
  34193. messageSends: ["ifNil:", "receiver", "copy", "arguments", "addAll:", "with:", "yourself"]
  34194. }),
  34195. $globals.SendNode);
  34196. $core.addMethod(
  34197. $core.method({
  34198. selector: "receiver",
  34199. protocol: 'accessing',
  34200. fn: function (){
  34201. var self=this;
  34202. var $1;
  34203. $1=self["@receiver"];
  34204. return $1;
  34205. },
  34206. //>>excludeStart("ide", pragmas.excludeIdeData);
  34207. args: [],
  34208. source: "receiver\x0a\x09^ receiver",
  34209. referencedClasses: [],
  34210. //>>excludeEnd("ide");
  34211. messageSends: []
  34212. }),
  34213. $globals.SendNode);
  34214. $core.addMethod(
  34215. $core.method({
  34216. selector: "receiver:",
  34217. protocol: 'accessing',
  34218. fn: function (aNode){
  34219. var self=this;
  34220. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  34221. return $core.withContext(function($ctx1) {
  34222. //>>excludeEnd("ctx");
  34223. var $1;
  34224. self["@receiver"]=aNode;
  34225. $1=$recv(aNode)._isNode();
  34226. if($core.assert($1)){
  34227. $recv(aNode)._parent_(self);
  34228. };
  34229. return self;
  34230. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  34231. }, function($ctx1) {$ctx1.fill(self,"receiver:",{aNode:aNode},$globals.SendNode)});
  34232. //>>excludeEnd("ctx");
  34233. },
  34234. //>>excludeStart("ide", pragmas.excludeIdeData);
  34235. args: ["aNode"],
  34236. source: "receiver: aNode\x0a\x09receiver := aNode.\x0a\x09aNode isNode ifTrue: [\x0a\x09\x09aNode parent: self ]",
  34237. referencedClasses: [],
  34238. //>>excludeEnd("ide");
  34239. messageSends: ["ifTrue:", "isNode", "parent:"]
  34240. }),
  34241. $globals.SendNode);
  34242. $core.addMethod(
  34243. $core.method({
  34244. selector: "requiresSmalltalkContext",
  34245. protocol: 'testing',
  34246. fn: function (){
  34247. var self=this;
  34248. return true;
  34249. },
  34250. //>>excludeStart("ide", pragmas.excludeIdeData);
  34251. args: [],
  34252. source: "requiresSmalltalkContext\x0a\x09^ true",
  34253. referencedClasses: [],
  34254. //>>excludeEnd("ide");
  34255. messageSends: []
  34256. }),
  34257. $globals.SendNode);
  34258. $core.addMethod(
  34259. $core.method({
  34260. selector: "selector",
  34261. protocol: 'accessing',
  34262. fn: function (){
  34263. var self=this;
  34264. var $1;
  34265. $1=self["@selector"];
  34266. return $1;
  34267. },
  34268. //>>excludeStart("ide", pragmas.excludeIdeData);
  34269. args: [],
  34270. source: "selector\x0a\x09^ selector",
  34271. referencedClasses: [],
  34272. //>>excludeEnd("ide");
  34273. messageSends: []
  34274. }),
  34275. $globals.SendNode);
  34276. $core.addMethod(
  34277. $core.method({
  34278. selector: "selector:",
  34279. protocol: 'accessing',
  34280. fn: function (aString){
  34281. var self=this;
  34282. self["@selector"]=aString;
  34283. return self;
  34284. },
  34285. //>>excludeStart("ide", pragmas.excludeIdeData);
  34286. args: ["aString"],
  34287. source: "selector: aString\x0a\x09selector := aString",
  34288. referencedClasses: [],
  34289. //>>excludeEnd("ide");
  34290. messageSends: []
  34291. }),
  34292. $globals.SendNode);
  34293. $core.addMethod(
  34294. $core.method({
  34295. selector: "shouldBeAliased",
  34296. protocol: 'testing',
  34297. fn: function (){
  34298. var self=this;
  34299. var sends;
  34300. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  34301. return $core.withContext(function($ctx1) {
  34302. //>>excludeEnd("ctx");
  34303. var $2,$1;
  34304. sends=$recv($recv($recv(self._method())._sendIndexes())._at_(self._selector()))._size();
  34305. $2=(
  34306. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  34307. $ctx1.supercall = true,
  34308. //>>excludeEnd("ctx");
  34309. $globals.SendNode.superclass.fn.prototype._shouldBeAliased.apply($recv(self), []));
  34310. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  34311. $ctx1.supercall = false;
  34312. //>>excludeEnd("ctx");;
  34313. $1=$recv($2)._or_((function(){
  34314. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  34315. return $core.withContext(function($ctx2) {
  34316. //>>excludeEnd("ctx");
  34317. return $recv(self._isReferenced())._and_((function(){
  34318. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  34319. return $core.withContext(function($ctx3) {
  34320. //>>excludeEnd("ctx");
  34321. return $recv($recv($recv(sends).__gt((1)))._and_((function(){
  34322. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  34323. return $core.withContext(function($ctx4) {
  34324. //>>excludeEnd("ctx");
  34325. return $recv(self._index()).__lt(sends);
  34326. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  34327. }, function($ctx4) {$ctx4.fillBlock({},$ctx3,3)});
  34328. //>>excludeEnd("ctx");
  34329. })))._or_((function(){
  34330. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  34331. return $core.withContext(function($ctx4) {
  34332. //>>excludeEnd("ctx");
  34333. return self._superSend();
  34334. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  34335. }, function($ctx4) {$ctx4.fillBlock({},$ctx3,4)});
  34336. //>>excludeEnd("ctx");
  34337. }));
  34338. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  34339. }, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)});
  34340. //>>excludeEnd("ctx");
  34341. }));
  34342. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  34343. $ctx2.sendIdx["and:"]=1;
  34344. //>>excludeEnd("ctx");
  34345. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  34346. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  34347. //>>excludeEnd("ctx");
  34348. }));
  34349. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  34350. $ctx1.sendIdx["or:"]=1;
  34351. //>>excludeEnd("ctx");
  34352. return $1;
  34353. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  34354. }, function($ctx1) {$ctx1.fill(self,"shouldBeAliased",{sends:sends},$globals.SendNode)});
  34355. //>>excludeEnd("ctx");
  34356. },
  34357. //>>excludeStart("ide", pragmas.excludeIdeData);
  34358. args: [],
  34359. source: "shouldBeAliased\x0a\x09\x22Because we keep track of send indexes, some send nodes need additional care for aliasing. \x0a\x09See IRJSVisitor >> visitIRSend:\x22\x0a\x09\x0a\x09| sends |\x0a\x09\x0a\x09sends := (self method sendIndexes at: self selector) size.\x0a\x09\x0a\x09^ (super shouldBeAliased or: [\x0a\x09\x09self isReferenced and: [\x0a\x09\x09\x09(sends > 1 and: [ self index < sends ])\x0a\x09\x09\x09\x09or: [ self superSend ] ] ])",
  34360. referencedClasses: [],
  34361. //>>excludeEnd("ide");
  34362. messageSends: ["size", "at:", "sendIndexes", "method", "selector", "or:", "shouldBeAliased", "and:", "isReferenced", ">", "<", "index", "superSend"]
  34363. }),
  34364. $globals.SendNode);
  34365. $core.addMethod(
  34366. $core.method({
  34367. selector: "stopOnStepping",
  34368. protocol: 'testing',
  34369. fn: function (){
  34370. var self=this;
  34371. return true;
  34372. },
  34373. //>>excludeStart("ide", pragmas.excludeIdeData);
  34374. args: [],
  34375. source: "stopOnStepping\x0a\x09^ true",
  34376. referencedClasses: [],
  34377. //>>excludeEnd("ide");
  34378. messageSends: []
  34379. }),
  34380. $globals.SendNode);
  34381. $core.addMethod(
  34382. $core.method({
  34383. selector: "superSend",
  34384. protocol: 'accessing',
  34385. fn: function (){
  34386. var self=this;
  34387. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  34388. return $core.withContext(function($ctx1) {
  34389. //>>excludeEnd("ctx");
  34390. var $2,$1,$receiver;
  34391. $2=self["@superSend"];
  34392. if(($receiver = $2) == null || $receiver.isNil){
  34393. $1=false;
  34394. } else {
  34395. $1=$2;
  34396. };
  34397. return $1;
  34398. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  34399. }, function($ctx1) {$ctx1.fill(self,"superSend",{},$globals.SendNode)});
  34400. //>>excludeEnd("ctx");
  34401. },
  34402. //>>excludeStart("ide", pragmas.excludeIdeData);
  34403. args: [],
  34404. source: "superSend\x0a\x09^ superSend ifNil: [ false ]",
  34405. referencedClasses: [],
  34406. //>>excludeEnd("ide");
  34407. messageSends: ["ifNil:"]
  34408. }),
  34409. $globals.SendNode);
  34410. $core.addMethod(
  34411. $core.method({
  34412. selector: "superSend:",
  34413. protocol: 'accessing',
  34414. fn: function (aBoolean){
  34415. var self=this;
  34416. self["@superSend"]=aBoolean;
  34417. return self;
  34418. },
  34419. //>>excludeStart("ide", pragmas.excludeIdeData);
  34420. args: ["aBoolean"],
  34421. source: "superSend: aBoolean\x0a\x09superSend := aBoolean",
  34422. referencedClasses: [],
  34423. //>>excludeEnd("ide");
  34424. messageSends: []
  34425. }),
  34426. $globals.SendNode);
  34427. $core.addMethod(
  34428. $core.method({
  34429. selector: "valueForReceiver:",
  34430. protocol: 'accessing',
  34431. fn: function (anObject){
  34432. var self=this;
  34433. function $SendNode(){return $globals.SendNode||(typeof SendNode=="undefined"?nil:SendNode)}
  34434. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  34435. return $core.withContext(function($ctx1) {
  34436. //>>excludeEnd("ctx");
  34437. var $2,$3,$5,$4,$6,$1,$receiver;
  34438. $2=$recv($SendNode())._new();
  34439. $recv($2)._position_(self._position());
  34440. $recv($2)._source_(self._source());
  34441. $3=$2;
  34442. $5=self._receiver();
  34443. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  34444. $ctx1.sendIdx["receiver"]=1;
  34445. //>>excludeEnd("ctx");
  34446. if(($receiver = $5) == null || $receiver.isNil){
  34447. $4=anObject;
  34448. } else {
  34449. $4=$recv(self._receiver())._valueForReceiver_(anObject);
  34450. };
  34451. $recv($3)._receiver_($4);
  34452. $recv($2)._selector_(self._selector());
  34453. $recv($2)._arguments_(self._arguments());
  34454. $6=$recv($2)._yourself();
  34455. $1=$6;
  34456. return $1;
  34457. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  34458. }, function($ctx1) {$ctx1.fill(self,"valueForReceiver:",{anObject:anObject},$globals.SendNode)});
  34459. //>>excludeEnd("ctx");
  34460. },
  34461. //>>excludeStart("ide", pragmas.excludeIdeData);
  34462. args: ["anObject"],
  34463. source: "valueForReceiver: anObject\x0a\x09^ SendNode new\x0a\x09\x09position: self position;\x0a\x09\x09source: self source;\x0a\x09\x09receiver: (self receiver\x0a\x09\x09ifNil: [ anObject ] \x0a\x09\x09ifNotNil: [ self receiver valueForReceiver: anObject ]);\x0a\x09\x09selector: self selector;\x0a\x09\x09arguments: self arguments;\x0a\x09\x09yourself",
  34464. referencedClasses: ["SendNode"],
  34465. //>>excludeEnd("ide");
  34466. messageSends: ["position:", "new", "position", "source:", "source", "receiver:", "ifNil:ifNotNil:", "receiver", "valueForReceiver:", "selector:", "selector", "arguments:", "arguments", "yourself"]
  34467. }),
  34468. $globals.SendNode);
  34469. $core.addClass('SequenceNode', $globals.Node, ['temps', 'scope'], 'Compiler-AST');
  34470. //>>excludeStart("ide", pragmas.excludeIdeData);
  34471. $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).";
  34472. //>>excludeEnd("ide");
  34473. $core.addMethod(
  34474. $core.method({
  34475. selector: "accept:",
  34476. protocol: 'visiting',
  34477. fn: function (aVisitor){
  34478. var self=this;
  34479. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  34480. return $core.withContext(function($ctx1) {
  34481. //>>excludeEnd("ctx");
  34482. var $1;
  34483. $1=$recv(aVisitor)._visitSequenceNode_(self);
  34484. return $1;
  34485. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  34486. }, function($ctx1) {$ctx1.fill(self,"accept:",{aVisitor:aVisitor},$globals.SequenceNode)});
  34487. //>>excludeEnd("ctx");
  34488. },
  34489. //>>excludeStart("ide", pragmas.excludeIdeData);
  34490. args: ["aVisitor"],
  34491. source: "accept: aVisitor\x0a\x09^ aVisitor visitSequenceNode: self",
  34492. referencedClasses: [],
  34493. //>>excludeEnd("ide");
  34494. messageSends: ["visitSequenceNode:"]
  34495. }),
  34496. $globals.SequenceNode);
  34497. $core.addMethod(
  34498. $core.method({
  34499. selector: "asBlockSequenceNode",
  34500. protocol: 'converting',
  34501. fn: function (){
  34502. var self=this;
  34503. function $BlockSequenceNode(){return $globals.BlockSequenceNode||(typeof BlockSequenceNode=="undefined"?nil:BlockSequenceNode)}
  34504. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  34505. return $core.withContext(function($ctx1) {
  34506. //>>excludeEnd("ctx");
  34507. var $2,$3,$1;
  34508. $2=$recv($BlockSequenceNode())._new();
  34509. $recv($2)._position_(self._position());
  34510. $recv($2)._source_(self._source());
  34511. $recv($2)._nodes_(self._nodes());
  34512. $recv($2)._temps_(self._temps());
  34513. $3=$recv($2)._yourself();
  34514. $1=$3;
  34515. return $1;
  34516. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  34517. }, function($ctx1) {$ctx1.fill(self,"asBlockSequenceNode",{},$globals.SequenceNode)});
  34518. //>>excludeEnd("ctx");
  34519. },
  34520. //>>excludeStart("ide", pragmas.excludeIdeData);
  34521. args: [],
  34522. source: "asBlockSequenceNode\x0a\x09^ BlockSequenceNode new\x0a\x09\x09position: self position;\x0a\x09\x09source: self source;\x0a\x09\x09nodes: self nodes;\x0a\x09\x09temps: self temps;\x0a\x09\x09yourself",
  34523. referencedClasses: ["BlockSequenceNode"],
  34524. //>>excludeEnd("ide");
  34525. messageSends: ["position:", "new", "position", "source:", "source", "nodes:", "nodes", "temps:", "temps", "yourself"]
  34526. }),
  34527. $globals.SequenceNode);
  34528. $core.addMethod(
  34529. $core.method({
  34530. selector: "isSequenceNode",
  34531. protocol: 'testing',
  34532. fn: function (){
  34533. var self=this;
  34534. return true;
  34535. },
  34536. //>>excludeStart("ide", pragmas.excludeIdeData);
  34537. args: [],
  34538. source: "isSequenceNode\x0a\x09^ true",
  34539. referencedClasses: [],
  34540. //>>excludeEnd("ide");
  34541. messageSends: []
  34542. }),
  34543. $globals.SequenceNode);
  34544. $core.addMethod(
  34545. $core.method({
  34546. selector: "scope",
  34547. protocol: 'accessing',
  34548. fn: function (){
  34549. var self=this;
  34550. var $1;
  34551. $1=self["@scope"];
  34552. return $1;
  34553. },
  34554. //>>excludeStart("ide", pragmas.excludeIdeData);
  34555. args: [],
  34556. source: "scope\x0a\x09^ scope",
  34557. referencedClasses: [],
  34558. //>>excludeEnd("ide");
  34559. messageSends: []
  34560. }),
  34561. $globals.SequenceNode);
  34562. $core.addMethod(
  34563. $core.method({
  34564. selector: "scope:",
  34565. protocol: 'accessing',
  34566. fn: function (aLexicalScope){
  34567. var self=this;
  34568. self["@scope"]=aLexicalScope;
  34569. return self;
  34570. },
  34571. //>>excludeStart("ide", pragmas.excludeIdeData);
  34572. args: ["aLexicalScope"],
  34573. source: "scope: aLexicalScope\x0a\x09scope := aLexicalScope",
  34574. referencedClasses: [],
  34575. //>>excludeEnd("ide");
  34576. messageSends: []
  34577. }),
  34578. $globals.SequenceNode);
  34579. $core.addMethod(
  34580. $core.method({
  34581. selector: "temps",
  34582. protocol: 'accessing',
  34583. fn: function (){
  34584. var self=this;
  34585. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  34586. return $core.withContext(function($ctx1) {
  34587. //>>excludeEnd("ctx");
  34588. var $2,$1,$receiver;
  34589. $2=self["@temps"];
  34590. if(($receiver = $2) == null || $receiver.isNil){
  34591. $1=[];
  34592. } else {
  34593. $1=$2;
  34594. };
  34595. return $1;
  34596. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  34597. }, function($ctx1) {$ctx1.fill(self,"temps",{},$globals.SequenceNode)});
  34598. //>>excludeEnd("ctx");
  34599. },
  34600. //>>excludeStart("ide", pragmas.excludeIdeData);
  34601. args: [],
  34602. source: "temps\x0a\x09^ temps ifNil: [ #() ]",
  34603. referencedClasses: [],
  34604. //>>excludeEnd("ide");
  34605. messageSends: ["ifNil:"]
  34606. }),
  34607. $globals.SequenceNode);
  34608. $core.addMethod(
  34609. $core.method({
  34610. selector: "temps:",
  34611. protocol: 'accessing',
  34612. fn: function (aCollection){
  34613. var self=this;
  34614. self["@temps"]=aCollection;
  34615. return self;
  34616. },
  34617. //>>excludeStart("ide", pragmas.excludeIdeData);
  34618. args: ["aCollection"],
  34619. source: "temps: aCollection\x0a\x09temps := aCollection",
  34620. referencedClasses: [],
  34621. //>>excludeEnd("ide");
  34622. messageSends: []
  34623. }),
  34624. $globals.SequenceNode);
  34625. $core.addClass('BlockSequenceNode', $globals.SequenceNode, [], 'Compiler-AST');
  34626. //>>excludeStart("ide", pragmas.excludeIdeData);
  34627. $globals.BlockSequenceNode.comment="I represent an special sequence node for block scopes.";
  34628. //>>excludeEnd("ide");
  34629. $core.addMethod(
  34630. $core.method({
  34631. selector: "accept:",
  34632. protocol: 'visiting',
  34633. fn: function (aVisitor){
  34634. var self=this;
  34635. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  34636. return $core.withContext(function($ctx1) {
  34637. //>>excludeEnd("ctx");
  34638. var $1;
  34639. $1=$recv(aVisitor)._visitBlockSequenceNode_(self);
  34640. return $1;
  34641. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  34642. }, function($ctx1) {$ctx1.fill(self,"accept:",{aVisitor:aVisitor},$globals.BlockSequenceNode)});
  34643. //>>excludeEnd("ctx");
  34644. },
  34645. //>>excludeStart("ide", pragmas.excludeIdeData);
  34646. args: ["aVisitor"],
  34647. source: "accept: aVisitor\x0a\x09^ aVisitor visitBlockSequenceNode: self",
  34648. referencedClasses: [],
  34649. //>>excludeEnd("ide");
  34650. messageSends: ["visitBlockSequenceNode:"]
  34651. }),
  34652. $globals.BlockSequenceNode);
  34653. $core.addMethod(
  34654. $core.method({
  34655. selector: "isBlockSequenceNode",
  34656. protocol: 'testing',
  34657. fn: function (){
  34658. var self=this;
  34659. return true;
  34660. },
  34661. //>>excludeStart("ide", pragmas.excludeIdeData);
  34662. args: [],
  34663. source: "isBlockSequenceNode\x0a\x09^ true",
  34664. referencedClasses: [],
  34665. //>>excludeEnd("ide");
  34666. messageSends: []
  34667. }),
  34668. $globals.BlockSequenceNode);
  34669. $core.addClass('ValueNode', $globals.Node, ['value'], 'Compiler-AST');
  34670. //>>excludeStart("ide", pragmas.excludeIdeData);
  34671. $globals.ValueNode.comment="I represent a value node.";
  34672. //>>excludeEnd("ide");
  34673. $core.addMethod(
  34674. $core.method({
  34675. selector: "accept:",
  34676. protocol: 'visiting',
  34677. fn: function (aVisitor){
  34678. var self=this;
  34679. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  34680. return $core.withContext(function($ctx1) {
  34681. //>>excludeEnd("ctx");
  34682. var $1;
  34683. $1=$recv(aVisitor)._visitValueNode_(self);
  34684. return $1;
  34685. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  34686. }, function($ctx1) {$ctx1.fill(self,"accept:",{aVisitor:aVisitor},$globals.ValueNode)});
  34687. //>>excludeEnd("ctx");
  34688. },
  34689. //>>excludeStart("ide", pragmas.excludeIdeData);
  34690. args: ["aVisitor"],
  34691. source: "accept: aVisitor\x0a\x09^ aVisitor visitValueNode: self",
  34692. referencedClasses: [],
  34693. //>>excludeEnd("ide");
  34694. messageSends: ["visitValueNode:"]
  34695. }),
  34696. $globals.ValueNode);
  34697. $core.addMethod(
  34698. $core.method({
  34699. selector: "isImmutable",
  34700. protocol: 'testing',
  34701. fn: function (){
  34702. var self=this;
  34703. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  34704. return $core.withContext(function($ctx1) {
  34705. //>>excludeEnd("ctx");
  34706. var $1;
  34707. $1=$recv(self._value())._isImmutable();
  34708. return $1;
  34709. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  34710. }, function($ctx1) {$ctx1.fill(self,"isImmutable",{},$globals.ValueNode)});
  34711. //>>excludeEnd("ctx");
  34712. },
  34713. //>>excludeStart("ide", pragmas.excludeIdeData);
  34714. args: [],
  34715. source: "isImmutable\x0a\x09^ self value isImmutable",
  34716. referencedClasses: [],
  34717. //>>excludeEnd("ide");
  34718. messageSends: ["isImmutable", "value"]
  34719. }),
  34720. $globals.ValueNode);
  34721. $core.addMethod(
  34722. $core.method({
  34723. selector: "isValueNode",
  34724. protocol: 'testing',
  34725. fn: function (){
  34726. var self=this;
  34727. return true;
  34728. },
  34729. //>>excludeStart("ide", pragmas.excludeIdeData);
  34730. args: [],
  34731. source: "isValueNode\x0a\x09^ true",
  34732. referencedClasses: [],
  34733. //>>excludeEnd("ide");
  34734. messageSends: []
  34735. }),
  34736. $globals.ValueNode);
  34737. $core.addMethod(
  34738. $core.method({
  34739. selector: "value",
  34740. protocol: 'accessing',
  34741. fn: function (){
  34742. var self=this;
  34743. var $1;
  34744. $1=self["@value"];
  34745. return $1;
  34746. },
  34747. //>>excludeStart("ide", pragmas.excludeIdeData);
  34748. args: [],
  34749. source: "value\x0a\x09^ value",
  34750. referencedClasses: [],
  34751. //>>excludeEnd("ide");
  34752. messageSends: []
  34753. }),
  34754. $globals.ValueNode);
  34755. $core.addMethod(
  34756. $core.method({
  34757. selector: "value:",
  34758. protocol: 'accessing',
  34759. fn: function (anObject){
  34760. var self=this;
  34761. self["@value"]=anObject;
  34762. return self;
  34763. },
  34764. //>>excludeStart("ide", pragmas.excludeIdeData);
  34765. args: ["anObject"],
  34766. source: "value: anObject\x0a\x09value := anObject",
  34767. referencedClasses: [],
  34768. //>>excludeEnd("ide");
  34769. messageSends: []
  34770. }),
  34771. $globals.ValueNode);
  34772. $core.addClass('VariableNode', $globals.ValueNode, ['assigned', 'binding'], 'Compiler-AST');
  34773. //>>excludeStart("ide", pragmas.excludeIdeData);
  34774. $globals.VariableNode.comment="I represent an variable node.";
  34775. //>>excludeEnd("ide");
  34776. $core.addMethod(
  34777. $core.method({
  34778. selector: "accept:",
  34779. protocol: 'visiting',
  34780. fn: function (aVisitor){
  34781. var self=this;
  34782. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  34783. return $core.withContext(function($ctx1) {
  34784. //>>excludeEnd("ctx");
  34785. var $1;
  34786. $1=$recv(aVisitor)._visitVariableNode_(self);
  34787. return $1;
  34788. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  34789. }, function($ctx1) {$ctx1.fill(self,"accept:",{aVisitor:aVisitor},$globals.VariableNode)});
  34790. //>>excludeEnd("ctx");
  34791. },
  34792. //>>excludeStart("ide", pragmas.excludeIdeData);
  34793. args: ["aVisitor"],
  34794. source: "accept: aVisitor\x0a\x09^ aVisitor visitVariableNode: self",
  34795. referencedClasses: [],
  34796. //>>excludeEnd("ide");
  34797. messageSends: ["visitVariableNode:"]
  34798. }),
  34799. $globals.VariableNode);
  34800. $core.addMethod(
  34801. $core.method({
  34802. selector: "alias",
  34803. protocol: 'accessing',
  34804. fn: function (){
  34805. var self=this;
  34806. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  34807. return $core.withContext(function($ctx1) {
  34808. //>>excludeEnd("ctx");
  34809. var $1;
  34810. $1=$recv(self._binding())._alias();
  34811. return $1;
  34812. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  34813. }, function($ctx1) {$ctx1.fill(self,"alias",{},$globals.VariableNode)});
  34814. //>>excludeEnd("ctx");
  34815. },
  34816. //>>excludeStart("ide", pragmas.excludeIdeData);
  34817. args: [],
  34818. source: "alias\x0a\x09^ self binding alias",
  34819. referencedClasses: [],
  34820. //>>excludeEnd("ide");
  34821. messageSends: ["alias", "binding"]
  34822. }),
  34823. $globals.VariableNode);
  34824. $core.addMethod(
  34825. $core.method({
  34826. selector: "assigned",
  34827. protocol: 'accessing',
  34828. fn: function (){
  34829. var self=this;
  34830. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  34831. return $core.withContext(function($ctx1) {
  34832. //>>excludeEnd("ctx");
  34833. var $2,$1,$receiver;
  34834. $2=self["@assigned"];
  34835. if(($receiver = $2) == null || $receiver.isNil){
  34836. $1=false;
  34837. } else {
  34838. $1=$2;
  34839. };
  34840. return $1;
  34841. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  34842. }, function($ctx1) {$ctx1.fill(self,"assigned",{},$globals.VariableNode)});
  34843. //>>excludeEnd("ctx");
  34844. },
  34845. //>>excludeStart("ide", pragmas.excludeIdeData);
  34846. args: [],
  34847. source: "assigned\x0a\x09^ assigned ifNil: [ false ]",
  34848. referencedClasses: [],
  34849. //>>excludeEnd("ide");
  34850. messageSends: ["ifNil:"]
  34851. }),
  34852. $globals.VariableNode);
  34853. $core.addMethod(
  34854. $core.method({
  34855. selector: "assigned:",
  34856. protocol: 'accessing',
  34857. fn: function (aBoolean){
  34858. var self=this;
  34859. self["@assigned"]=aBoolean;
  34860. return self;
  34861. },
  34862. //>>excludeStart("ide", pragmas.excludeIdeData);
  34863. args: ["aBoolean"],
  34864. source: "assigned: aBoolean\x0a\x09assigned := aBoolean",
  34865. referencedClasses: [],
  34866. //>>excludeEnd("ide");
  34867. messageSends: []
  34868. }),
  34869. $globals.VariableNode);
  34870. $core.addMethod(
  34871. $core.method({
  34872. selector: "beAssigned",
  34873. protocol: 'accessing',
  34874. fn: function (){
  34875. var self=this;
  34876. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  34877. return $core.withContext(function($ctx1) {
  34878. //>>excludeEnd("ctx");
  34879. $recv(self._binding())._validateAssignment();
  34880. self["@assigned"]=true;
  34881. return self;
  34882. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  34883. }, function($ctx1) {$ctx1.fill(self,"beAssigned",{},$globals.VariableNode)});
  34884. //>>excludeEnd("ctx");
  34885. },
  34886. //>>excludeStart("ide", pragmas.excludeIdeData);
  34887. args: [],
  34888. source: "beAssigned\x0a\x09self binding validateAssignment.\x0a\x09assigned := true",
  34889. referencedClasses: [],
  34890. //>>excludeEnd("ide");
  34891. messageSends: ["validateAssignment", "binding"]
  34892. }),
  34893. $globals.VariableNode);
  34894. $core.addMethod(
  34895. $core.method({
  34896. selector: "binding",
  34897. protocol: 'accessing',
  34898. fn: function (){
  34899. var self=this;
  34900. var $1;
  34901. $1=self["@binding"];
  34902. return $1;
  34903. },
  34904. //>>excludeStart("ide", pragmas.excludeIdeData);
  34905. args: [],
  34906. source: "binding\x0a\x09^ binding",
  34907. referencedClasses: [],
  34908. //>>excludeEnd("ide");
  34909. messageSends: []
  34910. }),
  34911. $globals.VariableNode);
  34912. $core.addMethod(
  34913. $core.method({
  34914. selector: "binding:",
  34915. protocol: 'accessing',
  34916. fn: function (aScopeVar){
  34917. var self=this;
  34918. self["@binding"]=aScopeVar;
  34919. return self;
  34920. },
  34921. //>>excludeStart("ide", pragmas.excludeIdeData);
  34922. args: ["aScopeVar"],
  34923. source: "binding: aScopeVar\x0a\x09binding := aScopeVar",
  34924. referencedClasses: [],
  34925. //>>excludeEnd("ide");
  34926. messageSends: []
  34927. }),
  34928. $globals.VariableNode);
  34929. $core.addMethod(
  34930. $core.method({
  34931. selector: "isArgument",
  34932. protocol: 'testing',
  34933. fn: function (){
  34934. var self=this;
  34935. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  34936. return $core.withContext(function($ctx1) {
  34937. //>>excludeEnd("ctx");
  34938. var $1;
  34939. $1=$recv(self._binding())._isArgVar();
  34940. return $1;
  34941. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  34942. }, function($ctx1) {$ctx1.fill(self,"isArgument",{},$globals.VariableNode)});
  34943. //>>excludeEnd("ctx");
  34944. },
  34945. //>>excludeStart("ide", pragmas.excludeIdeData);
  34946. args: [],
  34947. source: "isArgument\x0a\x09^ self binding isArgVar",
  34948. referencedClasses: [],
  34949. //>>excludeEnd("ide");
  34950. messageSends: ["isArgVar", "binding"]
  34951. }),
  34952. $globals.VariableNode);
  34953. $core.addMethod(
  34954. $core.method({
  34955. selector: "isImmutable",
  34956. protocol: 'testing',
  34957. fn: function (){
  34958. var self=this;
  34959. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  34960. return $core.withContext(function($ctx1) {
  34961. //>>excludeEnd("ctx");
  34962. var $1;
  34963. $1=$recv(self._binding())._isImmutable();
  34964. return $1;
  34965. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  34966. }, function($ctx1) {$ctx1.fill(self,"isImmutable",{},$globals.VariableNode)});
  34967. //>>excludeEnd("ctx");
  34968. },
  34969. //>>excludeStart("ide", pragmas.excludeIdeData);
  34970. args: [],
  34971. source: "isImmutable\x0a\x09^ self binding isImmutable",
  34972. referencedClasses: [],
  34973. //>>excludeEnd("ide");
  34974. messageSends: ["isImmutable", "binding"]
  34975. }),
  34976. $globals.VariableNode);
  34977. $core.addMethod(
  34978. $core.method({
  34979. selector: "isNavigationNode",
  34980. protocol: 'testing',
  34981. fn: function (){
  34982. var self=this;
  34983. return true;
  34984. },
  34985. //>>excludeStart("ide", pragmas.excludeIdeData);
  34986. args: [],
  34987. source: "isNavigationNode\x0a\x09^ true",
  34988. referencedClasses: [],
  34989. //>>excludeEnd("ide");
  34990. messageSends: []
  34991. }),
  34992. $globals.VariableNode);
  34993. $core.addMethod(
  34994. $core.method({
  34995. selector: "isVariableNode",
  34996. protocol: 'testing',
  34997. fn: function (){
  34998. var self=this;
  34999. return true;
  35000. },
  35001. //>>excludeStart("ide", pragmas.excludeIdeData);
  35002. args: [],
  35003. source: "isVariableNode\x0a\x09^ true",
  35004. referencedClasses: [],
  35005. //>>excludeEnd("ide");
  35006. messageSends: []
  35007. }),
  35008. $globals.VariableNode);
  35009. $core.addMethod(
  35010. $core.method({
  35011. selector: "navigationLink",
  35012. protocol: 'accessing',
  35013. fn: function (){
  35014. var self=this;
  35015. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35016. return $core.withContext(function($ctx1) {
  35017. //>>excludeEnd("ctx");
  35018. var $1;
  35019. $1=self._value();
  35020. return $1;
  35021. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35022. }, function($ctx1) {$ctx1.fill(self,"navigationLink",{},$globals.VariableNode)});
  35023. //>>excludeEnd("ctx");
  35024. },
  35025. //>>excludeStart("ide", pragmas.excludeIdeData);
  35026. args: [],
  35027. source: "navigationLink\x0a\x09^ self value",
  35028. referencedClasses: [],
  35029. //>>excludeEnd("ide");
  35030. messageSends: ["value"]
  35031. }),
  35032. $globals.VariableNode);
  35033. $core.addMethod(
  35034. $core.method({
  35035. selector: "ast",
  35036. protocol: '*Compiler-AST',
  35037. fn: function (){
  35038. var self=this;
  35039. function $Smalltalk(){return $globals.Smalltalk||(typeof Smalltalk=="undefined"?nil:Smalltalk)}
  35040. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35041. return $core.withContext(function($ctx1) {
  35042. //>>excludeEnd("ctx");
  35043. var $1,$2;
  35044. $1=self._source();
  35045. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35046. $ctx1.sendIdx["source"]=1;
  35047. //>>excludeEnd("ctx");
  35048. $recv($1)._ifEmpty_((function(){
  35049. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35050. return $core.withContext(function($ctx2) {
  35051. //>>excludeEnd("ctx");
  35052. return self._error_("Method source is empty");
  35053. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35054. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  35055. //>>excludeEnd("ctx");
  35056. }));
  35057. $2=$recv($Smalltalk())._parse_(self._source());
  35058. return $2;
  35059. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35060. }, function($ctx1) {$ctx1.fill(self,"ast",{},$globals.CompiledMethod)});
  35061. //>>excludeEnd("ctx");
  35062. },
  35063. //>>excludeStart("ide", pragmas.excludeIdeData);
  35064. args: [],
  35065. source: "ast\x0a\x09self source ifEmpty: [ self error: 'Method source is empty' ].\x0a\x09\x0a\x09^ Smalltalk parse: self source",
  35066. referencedClasses: ["Smalltalk"],
  35067. //>>excludeEnd("ide");
  35068. messageSends: ["ifEmpty:", "source", "error:", "parse:"]
  35069. }),
  35070. $globals.CompiledMethod);
  35071. $core.addMethod(
  35072. $core.method({
  35073. selector: "isNode",
  35074. protocol: '*Compiler-AST',
  35075. fn: function (){
  35076. var self=this;
  35077. return false;
  35078. },
  35079. //>>excludeStart("ide", pragmas.excludeIdeData);
  35080. args: [],
  35081. source: "isNode\x0a\x09^ false",
  35082. referencedClasses: [],
  35083. //>>excludeEnd("ide");
  35084. messageSends: []
  35085. }),
  35086. $globals.Object);
  35087. });
  35088. define("amber_core/Compiler-IR", ["amber/boot", "amber_core/Compiler-Core", "amber_core/Kernel-Objects", "amber_core/Kernel-Methods"], function($boot){
  35089. var $core=$boot.api,nil=$boot.nil,$recv=$boot.asReceiver,$globals=$boot.globals;
  35090. var smalltalk=$core,_st=$recv,globals=$globals;
  35091. $core.addPackage('Compiler-IR');
  35092. $core.packages["Compiler-IR"].transport = {"type":"amd","amdNamespace":"amber_core"};
  35093. $core.addClass('IRASTTranslator', $globals.NodeVisitor, ['source', 'theClass', 'method', 'sequence', 'nextAlias'], 'Compiler-IR');
  35094. //>>excludeStart("ide", pragmas.excludeIdeData);
  35095. $globals.IRASTTranslator.comment="I am the AST (abstract syntax tree) visitor responsible for building the intermediate representation graph.";
  35096. //>>excludeEnd("ide");
  35097. $core.addMethod(
  35098. $core.method({
  35099. selector: "alias:",
  35100. protocol: 'visiting',
  35101. fn: function (aNode){
  35102. var self=this;
  35103. var variable;
  35104. function $IRVariable(){return $globals.IRVariable||(typeof IRVariable=="undefined"?nil:IRVariable)}
  35105. function $AliasVar(){return $globals.AliasVar||(typeof AliasVar=="undefined"?nil:AliasVar)}
  35106. function $IRAssignment(){return $globals.IRAssignment||(typeof IRAssignment=="undefined"?nil:IRAssignment)}
  35107. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35108. return $core.withContext(function($ctx1) {
  35109. //>>excludeEnd("ctx");
  35110. var $1,$2,$3,$4,$6,$5,$7,$8,$10,$11,$9,$12;
  35111. $1=$recv(aNode)._isImmutable();
  35112. if($core.assert($1)){
  35113. $2=self._visit_(aNode);
  35114. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35115. $ctx1.sendIdx["visit:"]=1;
  35116. //>>excludeEnd("ctx");
  35117. return $2;
  35118. };
  35119. $3=$recv($IRVariable())._new();
  35120. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35121. $ctx1.sendIdx["new"]=1;
  35122. //>>excludeEnd("ctx");
  35123. $4=$3;
  35124. $6=$recv($AliasVar())._new();
  35125. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35126. $ctx1.sendIdx["new"]=2;
  35127. //>>excludeEnd("ctx");
  35128. $5=$recv($6)._name_("$".__comma(self._nextAlias()));
  35129. $recv($4)._variable_($5);
  35130. $7=$recv($3)._yourself();
  35131. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35132. $ctx1.sendIdx["yourself"]=1;
  35133. //>>excludeEnd("ctx");
  35134. variable=$7;
  35135. $8=self._sequence();
  35136. $10=$recv($IRAssignment())._new();
  35137. $recv($10)._add_(variable);
  35138. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35139. $ctx1.sendIdx["add:"]=2;
  35140. //>>excludeEnd("ctx");
  35141. $recv($10)._add_(self._visit_(aNode));
  35142. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35143. $ctx1.sendIdx["add:"]=3;
  35144. //>>excludeEnd("ctx");
  35145. $11=$recv($10)._yourself();
  35146. $9=$11;
  35147. $recv($8)._add_($9);
  35148. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35149. $ctx1.sendIdx["add:"]=1;
  35150. //>>excludeEnd("ctx");
  35151. $recv($recv(self._method())._internalVariables())._add_(variable);
  35152. $12=variable;
  35153. return $12;
  35154. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35155. }, function($ctx1) {$ctx1.fill(self,"alias:",{aNode:aNode,variable:variable},$globals.IRASTTranslator)});
  35156. //>>excludeEnd("ctx");
  35157. },
  35158. //>>excludeStart("ide", pragmas.excludeIdeData);
  35159. args: ["aNode"],
  35160. source: "alias: aNode\x0a\x09| variable |\x0a\x0a\x09aNode isImmutable ifTrue: [ ^ self visit: aNode ].\x0a\x0a\x09variable := IRVariable new\x0a\x09\x09variable: (AliasVar new name: '$', self nextAlias);\x0a\x09\x09yourself.\x0a\x0a\x09self sequence add: (IRAssignment new\x0a\x09\x09add: variable;\x0a\x09\x09add: (self visit: aNode);\x0a\x09\x09yourself).\x0a\x0a\x09self method internalVariables add: variable.\x0a\x0a\x09^ variable",
  35161. referencedClasses: ["IRVariable", "AliasVar", "IRAssignment"],
  35162. //>>excludeEnd("ide");
  35163. messageSends: ["ifTrue:", "isImmutable", "visit:", "variable:", "new", "name:", ",", "nextAlias", "yourself", "add:", "sequence", "internalVariables", "method"]
  35164. }),
  35165. $globals.IRASTTranslator);
  35166. $core.addMethod(
  35167. $core.method({
  35168. selector: "aliasTemporally:",
  35169. protocol: 'visiting',
  35170. fn: function (aCollection){
  35171. var self=this;
  35172. var threshold,result;
  35173. function $OrderedCollection(){return $globals.OrderedCollection||(typeof OrderedCollection=="undefined"?nil:OrderedCollection)}
  35174. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35175. return $core.withContext(function($ctx1) {
  35176. //>>excludeEnd("ctx");
  35177. var $1,$2,$4,$3,$5;
  35178. threshold=(0);
  35179. $recv(aCollection)._withIndexDo_((function(each,i){
  35180. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35181. return $core.withContext(function($ctx2) {
  35182. //>>excludeEnd("ctx");
  35183. $1=$recv(each)._subtreeNeedsAliasing();
  35184. if($core.assert($1)){
  35185. threshold=i;
  35186. return threshold;
  35187. };
  35188. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35189. }, function($ctx2) {$ctx2.fillBlock({each:each,i:i},$ctx1,1)});
  35190. //>>excludeEnd("ctx");
  35191. }));
  35192. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35193. $ctx1.sendIdx["withIndexDo:"]=1;
  35194. //>>excludeEnd("ctx");
  35195. result=$recv($OrderedCollection())._new();
  35196. $recv(aCollection)._withIndexDo_((function(each,i){
  35197. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35198. return $core.withContext(function($ctx2) {
  35199. //>>excludeEnd("ctx");
  35200. $2=result;
  35201. $4=$recv(i).__lt_eq(threshold);
  35202. if($core.assert($4)){
  35203. $3=self._alias_(each);
  35204. } else {
  35205. $3=self._visit_(each);
  35206. };
  35207. return $recv($2)._add_($3);
  35208. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35209. }, function($ctx2) {$ctx2.fillBlock({each:each,i:i},$ctx1,3)});
  35210. //>>excludeEnd("ctx");
  35211. }));
  35212. $5=result;
  35213. return $5;
  35214. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35215. }, function($ctx1) {$ctx1.fill(self,"aliasTemporally:",{aCollection:aCollection,threshold:threshold,result:result},$globals.IRASTTranslator)});
  35216. //>>excludeEnd("ctx");
  35217. },
  35218. //>>excludeStart("ide", pragmas.excludeIdeData);
  35219. args: ["aCollection"],
  35220. source: "aliasTemporally: aCollection\x0a\x09\x22https://github.com/NicolasPetton/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 result |\x0a\x09threshold := 0.\x0a\x09\x0a\x09aCollection withIndexDo: [ :each :i |\x0a\x09\x09each subtreeNeedsAliasing\x0a\x09\x09\x09ifTrue: [ threshold := i ] ].\x0a\x0a\x09result := OrderedCollection new.\x0a\x09aCollection withIndexDo: [ :each :i |\x0a\x09\x09result add: (i <= threshold\x0a\x09\x09\x09ifTrue: [ self alias: each ]\x0a\x09\x09\x09ifFalse: [ self visit: each ]) ].\x0a\x0a\x09^ result",
  35221. referencedClasses: ["OrderedCollection"],
  35222. //>>excludeEnd("ide");
  35223. messageSends: ["withIndexDo:", "ifTrue:", "subtreeNeedsAliasing", "new", "add:", "ifTrue:ifFalse:", "<=", "alias:", "visit:"]
  35224. }),
  35225. $globals.IRASTTranslator);
  35226. $core.addMethod(
  35227. $core.method({
  35228. selector: "method",
  35229. protocol: 'accessing',
  35230. fn: function (){
  35231. var self=this;
  35232. var $1;
  35233. $1=self["@method"];
  35234. return $1;
  35235. },
  35236. //>>excludeStart("ide", pragmas.excludeIdeData);
  35237. args: [],
  35238. source: "method\x0a\x09^ method",
  35239. referencedClasses: [],
  35240. //>>excludeEnd("ide");
  35241. messageSends: []
  35242. }),
  35243. $globals.IRASTTranslator);
  35244. $core.addMethod(
  35245. $core.method({
  35246. selector: "method:",
  35247. protocol: 'accessing',
  35248. fn: function (anIRMethod){
  35249. var self=this;
  35250. self["@method"]=anIRMethod;
  35251. return self;
  35252. },
  35253. //>>excludeStart("ide", pragmas.excludeIdeData);
  35254. args: ["anIRMethod"],
  35255. source: "method: anIRMethod\x0a\x09method := anIRMethod",
  35256. referencedClasses: [],
  35257. //>>excludeEnd("ide");
  35258. messageSends: []
  35259. }),
  35260. $globals.IRASTTranslator);
  35261. $core.addMethod(
  35262. $core.method({
  35263. selector: "nextAlias",
  35264. protocol: 'accessing',
  35265. fn: function (){
  35266. var self=this;
  35267. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35268. return $core.withContext(function($ctx1) {
  35269. //>>excludeEnd("ctx");
  35270. var $1,$2,$receiver;
  35271. $1=self["@nextAlias"];
  35272. if(($receiver = $1) == null || $receiver.isNil){
  35273. self["@nextAlias"]=(0);
  35274. self["@nextAlias"];
  35275. } else {
  35276. $1;
  35277. };
  35278. self["@nextAlias"]=$recv(self["@nextAlias"]).__plus((1));
  35279. $2=$recv(self["@nextAlias"])._asString();
  35280. return $2;
  35281. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35282. }, function($ctx1) {$ctx1.fill(self,"nextAlias",{},$globals.IRASTTranslator)});
  35283. //>>excludeEnd("ctx");
  35284. },
  35285. //>>excludeStart("ide", pragmas.excludeIdeData);
  35286. args: [],
  35287. source: "nextAlias\x0a\x09nextAlias ifNil: [ nextAlias := 0 ].\x0a\x09nextAlias := nextAlias + 1.\x0a\x09^ nextAlias asString",
  35288. referencedClasses: [],
  35289. //>>excludeEnd("ide");
  35290. messageSends: ["ifNil:", "+", "asString"]
  35291. }),
  35292. $globals.IRASTTranslator);
  35293. $core.addMethod(
  35294. $core.method({
  35295. selector: "sequence",
  35296. protocol: 'accessing',
  35297. fn: function (){
  35298. var self=this;
  35299. var $1;
  35300. $1=self["@sequence"];
  35301. return $1;
  35302. },
  35303. //>>excludeStart("ide", pragmas.excludeIdeData);
  35304. args: [],
  35305. source: "sequence\x0a\x09^ sequence",
  35306. referencedClasses: [],
  35307. //>>excludeEnd("ide");
  35308. messageSends: []
  35309. }),
  35310. $globals.IRASTTranslator);
  35311. $core.addMethod(
  35312. $core.method({
  35313. selector: "sequence:",
  35314. protocol: 'accessing',
  35315. fn: function (anIRSequence){
  35316. var self=this;
  35317. self["@sequence"]=anIRSequence;
  35318. return self;
  35319. },
  35320. //>>excludeStart("ide", pragmas.excludeIdeData);
  35321. args: ["anIRSequence"],
  35322. source: "sequence: anIRSequence\x0a\x09sequence := anIRSequence",
  35323. referencedClasses: [],
  35324. //>>excludeEnd("ide");
  35325. messageSends: []
  35326. }),
  35327. $globals.IRASTTranslator);
  35328. $core.addMethod(
  35329. $core.method({
  35330. selector: "source",
  35331. protocol: 'accessing',
  35332. fn: function (){
  35333. var self=this;
  35334. var $1;
  35335. $1=self["@source"];
  35336. return $1;
  35337. },
  35338. //>>excludeStart("ide", pragmas.excludeIdeData);
  35339. args: [],
  35340. source: "source\x0a\x09^ source",
  35341. referencedClasses: [],
  35342. //>>excludeEnd("ide");
  35343. messageSends: []
  35344. }),
  35345. $globals.IRASTTranslator);
  35346. $core.addMethod(
  35347. $core.method({
  35348. selector: "source:",
  35349. protocol: 'accessing',
  35350. fn: function (aString){
  35351. var self=this;
  35352. self["@source"]=aString;
  35353. return self;
  35354. },
  35355. //>>excludeStart("ide", pragmas.excludeIdeData);
  35356. args: ["aString"],
  35357. source: "source: aString\x0a\x09source := aString",
  35358. referencedClasses: [],
  35359. //>>excludeEnd("ide");
  35360. messageSends: []
  35361. }),
  35362. $globals.IRASTTranslator);
  35363. $core.addMethod(
  35364. $core.method({
  35365. selector: "theClass",
  35366. protocol: 'accessing',
  35367. fn: function (){
  35368. var self=this;
  35369. var $1;
  35370. $1=self["@theClass"];
  35371. return $1;
  35372. },
  35373. //>>excludeStart("ide", pragmas.excludeIdeData);
  35374. args: [],
  35375. source: "theClass\x0a\x09^ theClass",
  35376. referencedClasses: [],
  35377. //>>excludeEnd("ide");
  35378. messageSends: []
  35379. }),
  35380. $globals.IRASTTranslator);
  35381. $core.addMethod(
  35382. $core.method({
  35383. selector: "theClass:",
  35384. protocol: 'accessing',
  35385. fn: function (aClass){
  35386. var self=this;
  35387. self["@theClass"]=aClass;
  35388. return self;
  35389. },
  35390. //>>excludeStart("ide", pragmas.excludeIdeData);
  35391. args: ["aClass"],
  35392. source: "theClass: aClass\x0a\x09theClass := aClass",
  35393. referencedClasses: [],
  35394. //>>excludeEnd("ide");
  35395. messageSends: []
  35396. }),
  35397. $globals.IRASTTranslator);
  35398. $core.addMethod(
  35399. $core.method({
  35400. selector: "visitAssignmentNode:",
  35401. protocol: 'visiting',
  35402. fn: function (aNode){
  35403. var self=this;
  35404. var left,right,assignment;
  35405. function $IRAssignment(){return $globals.IRAssignment||(typeof IRAssignment=="undefined"?nil:IRAssignment)}
  35406. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35407. return $core.withContext(function($ctx1) {
  35408. //>>excludeEnd("ctx");
  35409. var $1,$3,$4,$2,$5;
  35410. right=self._visit_($recv(aNode)._right());
  35411. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35412. $ctx1.sendIdx["visit:"]=1;
  35413. //>>excludeEnd("ctx");
  35414. left=self._visit_($recv(aNode)._left());
  35415. $1=self._sequence();
  35416. $3=$recv($IRAssignment())._new();
  35417. $recv($3)._add_(left);
  35418. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35419. $ctx1.sendIdx["add:"]=2;
  35420. //>>excludeEnd("ctx");
  35421. $recv($3)._add_(right);
  35422. $4=$recv($3)._yourself();
  35423. $2=$4;
  35424. $recv($1)._add_($2);
  35425. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35426. $ctx1.sendIdx["add:"]=1;
  35427. //>>excludeEnd("ctx");
  35428. $5=left;
  35429. return $5;
  35430. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35431. }, function($ctx1) {$ctx1.fill(self,"visitAssignmentNode:",{aNode:aNode,left:left,right:right,assignment:assignment},$globals.IRASTTranslator)});
  35432. //>>excludeEnd("ctx");
  35433. },
  35434. //>>excludeStart("ide", pragmas.excludeIdeData);
  35435. args: ["aNode"],
  35436. source: "visitAssignmentNode: aNode\x0a\x09| left right assignment |\x0a\x09right := self visit: aNode right.\x0a\x09left := self visit: aNode left.\x0a\x09self sequence add: (IRAssignment new\x0a\x09\x09add: left;\x0a\x09\x09add: right;\x0a\x09\x09yourself).\x0a\x09^ left",
  35437. referencedClasses: ["IRAssignment"],
  35438. //>>excludeEnd("ide");
  35439. messageSends: ["visit:", "right", "left", "add:", "sequence", "new", "yourself"]
  35440. }),
  35441. $globals.IRASTTranslator);
  35442. $core.addMethod(
  35443. $core.method({
  35444. selector: "visitBlockNode:",
  35445. protocol: 'visiting',
  35446. fn: function (aNode){
  35447. var self=this;
  35448. var closure;
  35449. function $IRClosure(){return $globals.IRClosure||(typeof IRClosure=="undefined"?nil:IRClosure)}
  35450. function $IRTempDeclaration(){return $globals.IRTempDeclaration||(typeof IRTempDeclaration=="undefined"?nil:IRTempDeclaration)}
  35451. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35452. return $core.withContext(function($ctx1) {
  35453. //>>excludeEnd("ctx");
  35454. var $1,$2,$3,$4,$6,$5,$7,$8,$9;
  35455. $1=$recv($IRClosure())._new();
  35456. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35457. $ctx1.sendIdx["new"]=1;
  35458. //>>excludeEnd("ctx");
  35459. $recv($1)._arguments_($recv(aNode)._parameters());
  35460. $recv($1)._requiresSmalltalkContext_($recv(aNode)._requiresSmalltalkContext());
  35461. $2=$1;
  35462. $3=$recv(aNode)._scope();
  35463. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35464. $ctx1.sendIdx["scope"]=1;
  35465. //>>excludeEnd("ctx");
  35466. $recv($2)._scope_($3);
  35467. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35468. $ctx1.sendIdx["scope:"]=1;
  35469. //>>excludeEnd("ctx");
  35470. $4=$recv($1)._yourself();
  35471. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35472. $ctx1.sendIdx["yourself"]=1;
  35473. //>>excludeEnd("ctx");
  35474. closure=$4;
  35475. $6=$recv(aNode)._scope();
  35476. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35477. $ctx1.sendIdx["scope"]=2;
  35478. //>>excludeEnd("ctx");
  35479. $5=$recv($6)._temps();
  35480. $recv($5)._do_((function(each){
  35481. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35482. return $core.withContext(function($ctx2) {
  35483. //>>excludeEnd("ctx");
  35484. $7=$recv($IRTempDeclaration())._new();
  35485. $recv($7)._name_($recv(each)._name());
  35486. $recv($7)._scope_($recv(aNode)._scope());
  35487. $8=$recv($7)._yourself();
  35488. return $recv(closure)._add_($8);
  35489. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35490. $ctx2.sendIdx["add:"]=1;
  35491. //>>excludeEnd("ctx");
  35492. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35493. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  35494. //>>excludeEnd("ctx");
  35495. }));
  35496. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35497. $ctx1.sendIdx["do:"]=1;
  35498. //>>excludeEnd("ctx");
  35499. $recv($recv(aNode)._nodes())._do_((function(each){
  35500. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35501. return $core.withContext(function($ctx2) {
  35502. //>>excludeEnd("ctx");
  35503. return $recv(closure)._add_(self._visit_(each));
  35504. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35505. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,2)});
  35506. //>>excludeEnd("ctx");
  35507. }));
  35508. $9=closure;
  35509. return $9;
  35510. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35511. }, function($ctx1) {$ctx1.fill(self,"visitBlockNode:",{aNode:aNode,closure:closure},$globals.IRASTTranslator)});
  35512. //>>excludeEnd("ctx");
  35513. },
  35514. //>>excludeStart("ide", pragmas.excludeIdeData);
  35515. args: ["aNode"],
  35516. 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\x09aNode nodes do: [ :each | closure add: (self visit: each) ].\x0a\x09^ closure",
  35517. referencedClasses: ["IRClosure", "IRTempDeclaration"],
  35518. //>>excludeEnd("ide");
  35519. messageSends: ["arguments:", "new", "parameters", "requiresSmalltalkContext:", "requiresSmalltalkContext", "scope:", "scope", "yourself", "do:", "temps", "add:", "name:", "name", "nodes", "visit:"]
  35520. }),
  35521. $globals.IRASTTranslator);
  35522. $core.addMethod(
  35523. $core.method({
  35524. selector: "visitBlockSequenceNode:",
  35525. protocol: 'visiting',
  35526. fn: function (aNode){
  35527. var self=this;
  35528. function $IRBlockSequence(){return $globals.IRBlockSequence||(typeof IRBlockSequence=="undefined"?nil:IRBlockSequence)}
  35529. function $IRBlockReturn(){return $globals.IRBlockReturn||(typeof IRBlockReturn=="undefined"?nil:IRBlockReturn)}
  35530. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35531. return $core.withContext(function($ctx1) {
  35532. //>>excludeEnd("ctx");
  35533. var $2,$3,$5,$4,$6,$7,$10,$9,$8,$11,$13,$14,$17,$16,$15,$18,$12,$1;
  35534. $2=$recv($IRBlockSequence())._new();
  35535. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35536. $ctx1.sendIdx["new"]=1;
  35537. //>>excludeEnd("ctx");
  35538. $1=self._withSequence_do_($2,(function(){
  35539. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35540. return $core.withContext(function($ctx2) {
  35541. //>>excludeEnd("ctx");
  35542. $3=$recv(aNode)._nodes();
  35543. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35544. $ctx2.sendIdx["nodes"]=1;
  35545. //>>excludeEnd("ctx");
  35546. return $recv($3)._ifNotEmpty_((function(){
  35547. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35548. return $core.withContext(function($ctx3) {
  35549. //>>excludeEnd("ctx");
  35550. $5=$recv(aNode)._nodes();
  35551. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35552. $ctx3.sendIdx["nodes"]=2;
  35553. //>>excludeEnd("ctx");
  35554. $4=$recv($5)._allButLast();
  35555. $recv($4)._do_((function(each){
  35556. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35557. return $core.withContext(function($ctx4) {
  35558. //>>excludeEnd("ctx");
  35559. $6=self._sequence();
  35560. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35561. $ctx4.sendIdx["sequence"]=1;
  35562. //>>excludeEnd("ctx");
  35563. $7=self._visitOrAlias_(each);
  35564. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35565. $ctx4.sendIdx["visitOrAlias:"]=1;
  35566. //>>excludeEnd("ctx");
  35567. return $recv($6)._add_($7);
  35568. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35569. $ctx4.sendIdx["add:"]=1;
  35570. //>>excludeEnd("ctx");
  35571. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35572. }, function($ctx4) {$ctx4.fillBlock({each:each},$ctx3,3)});
  35573. //>>excludeEnd("ctx");
  35574. }));
  35575. $10=$recv(aNode)._nodes();
  35576. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35577. $ctx3.sendIdx["nodes"]=3;
  35578. //>>excludeEnd("ctx");
  35579. $9=$recv($10)._last();
  35580. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35581. $ctx3.sendIdx["last"]=1;
  35582. //>>excludeEnd("ctx");
  35583. $8=$recv($9)._isReturnNode();
  35584. if($core.assert($8)){
  35585. return $recv(self._sequence())._add_(self._visitOrAlias_($recv($recv(aNode)._nodes())._last()));
  35586. } else {
  35587. $11=self._sequence();
  35588. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35589. $ctx3.sendIdx["sequence"]=2;
  35590. //>>excludeEnd("ctx");
  35591. $13=$recv($IRBlockReturn())._new();
  35592. $14=$13;
  35593. $17=$recv(aNode)._nodes();
  35594. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35595. $ctx3.sendIdx["nodes"]=4;
  35596. //>>excludeEnd("ctx");
  35597. $16=$recv($17)._last();
  35598. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35599. $ctx3.sendIdx["last"]=2;
  35600. //>>excludeEnd("ctx");
  35601. $15=self._visitOrAlias_($16);
  35602. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35603. $ctx3.sendIdx["visitOrAlias:"]=2;
  35604. //>>excludeEnd("ctx");
  35605. $recv($14)._add_($15);
  35606. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35607. $ctx3.sendIdx["add:"]=3;
  35608. //>>excludeEnd("ctx");
  35609. $18=$recv($13)._yourself();
  35610. $12=$18;
  35611. return $recv($11)._add_($12);
  35612. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35613. $ctx3.sendIdx["add:"]=2;
  35614. //>>excludeEnd("ctx");
  35615. };
  35616. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35617. }, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)});
  35618. //>>excludeEnd("ctx");
  35619. }));
  35620. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35621. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  35622. //>>excludeEnd("ctx");
  35623. }));
  35624. return $1;
  35625. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35626. }, function($ctx1) {$ctx1.fill(self,"visitBlockSequenceNode:",{aNode:aNode},$globals.IRASTTranslator)});
  35627. //>>excludeEnd("ctx");
  35628. },
  35629. //>>excludeStart("ide", pragmas.excludeIdeData);
  35630. args: ["aNode"],
  35631. source: "visitBlockSequenceNode: aNode\x0a\x09^ self\x0a\x09\x09withSequence: IRBlockSequence new\x0a\x09\x09do: [\x0a\x09\x09\x09aNode nodes ifNotEmpty: [\x0a\x09\x09\x09\x09aNode nodes allButLast do: [ :each |\x0a\x09\x09\x09\x09\x09self sequence add: (self visitOrAlias: each) ].\x0a\x09\x09\x09\x09aNode nodes last isReturnNode\x0a\x09\x09\x09\x09\x09ifFalse: [ self sequence add: (IRBlockReturn new add: (self visitOrAlias: aNode nodes last); yourself) ]\x0a\x09\x09\x09\x09\x09ifTrue: [ self sequence add: (self visitOrAlias: aNode nodes last) ] ]]",
  35632. referencedClasses: ["IRBlockSequence", "IRBlockReturn"],
  35633. //>>excludeEnd("ide");
  35634. messageSends: ["withSequence:do:", "new", "ifNotEmpty:", "nodes", "do:", "allButLast", "add:", "sequence", "visitOrAlias:", "ifFalse:ifTrue:", "isReturnNode", "last", "yourself"]
  35635. }),
  35636. $globals.IRASTTranslator);
  35637. $core.addMethod(
  35638. $core.method({
  35639. selector: "visitCascadeNode:",
  35640. protocol: 'visiting',
  35641. fn: function (aNode){
  35642. var self=this;
  35643. var alias,receiver;
  35644. function $VariableNode(){return $globals.VariableNode||(typeof VariableNode=="undefined"?nil:VariableNode)}
  35645. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35646. return $core.withContext(function($ctx1) {
  35647. //>>excludeEnd("ctx");
  35648. var $2,$1,$3,$5,$4,$6;
  35649. $2=$recv(aNode)._receiver();
  35650. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35651. $ctx1.sendIdx["receiver"]=1;
  35652. //>>excludeEnd("ctx");
  35653. $1=$recv($2)._isImmutable();
  35654. if($core.assert($1)){
  35655. receiver=$recv(aNode)._receiver();
  35656. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35657. $ctx1.sendIdx["receiver"]=2;
  35658. //>>excludeEnd("ctx");
  35659. receiver;
  35660. } else {
  35661. alias=self._alias_($recv(aNode)._receiver());
  35662. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35663. $ctx1.sendIdx["alias:"]=1;
  35664. //>>excludeEnd("ctx");
  35665. alias;
  35666. receiver=$recv($recv($VariableNode())._new())._binding_($recv(alias)._variable());
  35667. receiver;
  35668. };
  35669. $3=$recv(aNode)._nodes();
  35670. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35671. $ctx1.sendIdx["nodes"]=1;
  35672. //>>excludeEnd("ctx");
  35673. $recv($3)._do_((function(each){
  35674. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35675. return $core.withContext(function($ctx2) {
  35676. //>>excludeEnd("ctx");
  35677. return $recv(each)._receiver_(receiver);
  35678. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35679. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,3)});
  35680. //>>excludeEnd("ctx");
  35681. }));
  35682. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35683. $ctx1.sendIdx["do:"]=1;
  35684. //>>excludeEnd("ctx");
  35685. $5=$recv(aNode)._nodes();
  35686. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35687. $ctx1.sendIdx["nodes"]=2;
  35688. //>>excludeEnd("ctx");
  35689. $4=$recv($5)._allButLast();
  35690. $recv($4)._do_((function(each){
  35691. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35692. return $core.withContext(function($ctx2) {
  35693. //>>excludeEnd("ctx");
  35694. return $recv(self._sequence())._add_(self._visit_(each));
  35695. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35696. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,4)});
  35697. //>>excludeEnd("ctx");
  35698. }));
  35699. $6=self._alias_($recv($recv(aNode)._nodes())._last());
  35700. return $6;
  35701. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35702. }, function($ctx1) {$ctx1.fill(self,"visitCascadeNode:",{aNode:aNode,alias:alias,receiver:receiver},$globals.IRASTTranslator)});
  35703. //>>excludeEnd("ctx");
  35704. },
  35705. //>>excludeStart("ide", pragmas.excludeIdeData);
  35706. args: ["aNode"],
  35707. source: "visitCascadeNode: aNode\x0a\x09| alias receiver |\x0a\x0a\x09aNode receiver isImmutable \x0a\x09\x09ifTrue: [ receiver := aNode receiver ]\x0a\x09\x09ifFalse: [\x0a\x09\x09\x09alias := self alias: aNode receiver.\x0a\x09\x09\x09receiver := VariableNode new binding: alias variable ].\x0a\x09\x0a\x09aNode nodes do: [ :each |\x0a\x09\x09\x09each receiver: receiver ].\x0a\x0a\x09aNode nodes allButLast do: [ :each |\x0a\x09\x09self sequence add: (self visit: each) ].\x0a\x0a\x09^ self alias: aNode nodes last",
  35708. referencedClasses: ["VariableNode"],
  35709. //>>excludeEnd("ide");
  35710. messageSends: ["ifTrue:ifFalse:", "isImmutable", "receiver", "alias:", "binding:", "new", "variable", "do:", "nodes", "receiver:", "allButLast", "add:", "sequence", "visit:", "last"]
  35711. }),
  35712. $globals.IRASTTranslator);
  35713. $core.addMethod(
  35714. $core.method({
  35715. selector: "visitDynamicArrayNode:",
  35716. protocol: 'visiting',
  35717. fn: function (aNode){
  35718. var self=this;
  35719. var array;
  35720. function $IRDynamicArray(){return $globals.IRDynamicArray||(typeof IRDynamicArray=="undefined"?nil:IRDynamicArray)}
  35721. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35722. return $core.withContext(function($ctx1) {
  35723. //>>excludeEnd("ctx");
  35724. var $1;
  35725. array=$recv($IRDynamicArray())._new();
  35726. $recv(self._aliasTemporally_($recv(aNode)._nodes()))._do_((function(each){
  35727. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35728. return $core.withContext(function($ctx2) {
  35729. //>>excludeEnd("ctx");
  35730. return $recv(array)._add_(each);
  35731. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35732. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  35733. //>>excludeEnd("ctx");
  35734. }));
  35735. $1=array;
  35736. return $1;
  35737. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35738. }, function($ctx1) {$ctx1.fill(self,"visitDynamicArrayNode:",{aNode:aNode,array:array},$globals.IRASTTranslator)});
  35739. //>>excludeEnd("ctx");
  35740. },
  35741. //>>excludeStart("ide", pragmas.excludeIdeData);
  35742. args: ["aNode"],
  35743. source: "visitDynamicArrayNode: aNode\x0a\x09| array |\x0a\x09array := IRDynamicArray new.\x0a\x09(self aliasTemporally: aNode nodes) do: [ :each | array add: each ].\x0a\x09^ array",
  35744. referencedClasses: ["IRDynamicArray"],
  35745. //>>excludeEnd("ide");
  35746. messageSends: ["new", "do:", "aliasTemporally:", "nodes", "add:"]
  35747. }),
  35748. $globals.IRASTTranslator);
  35749. $core.addMethod(
  35750. $core.method({
  35751. selector: "visitDynamicDictionaryNode:",
  35752. protocol: 'visiting',
  35753. fn: function (aNode){
  35754. var self=this;
  35755. var dictionary;
  35756. function $IRDynamicDictionary(){return $globals.IRDynamicDictionary||(typeof IRDynamicDictionary=="undefined"?nil:IRDynamicDictionary)}
  35757. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35758. return $core.withContext(function($ctx1) {
  35759. //>>excludeEnd("ctx");
  35760. var $1;
  35761. dictionary=$recv($IRDynamicDictionary())._new();
  35762. $recv(self._aliasTemporally_($recv(aNode)._nodes()))._do_((function(each){
  35763. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35764. return $core.withContext(function($ctx2) {
  35765. //>>excludeEnd("ctx");
  35766. return $recv(dictionary)._add_(each);
  35767. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35768. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  35769. //>>excludeEnd("ctx");
  35770. }));
  35771. $1=dictionary;
  35772. return $1;
  35773. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35774. }, function($ctx1) {$ctx1.fill(self,"visitDynamicDictionaryNode:",{aNode:aNode,dictionary:dictionary},$globals.IRASTTranslator)});
  35775. //>>excludeEnd("ctx");
  35776. },
  35777. //>>excludeStart("ide", pragmas.excludeIdeData);
  35778. args: ["aNode"],
  35779. source: "visitDynamicDictionaryNode: aNode\x0a\x09| dictionary |\x0a\x09dictionary := IRDynamicDictionary new.\x0a\x09(self aliasTemporally: aNode nodes) do: [ :each | dictionary add: each ].\x0a\x09^ dictionary",
  35780. referencedClasses: ["IRDynamicDictionary"],
  35781. //>>excludeEnd("ide");
  35782. messageSends: ["new", "do:", "aliasTemporally:", "nodes", "add:"]
  35783. }),
  35784. $globals.IRASTTranslator);
  35785. $core.addMethod(
  35786. $core.method({
  35787. selector: "visitJSStatementNode:",
  35788. protocol: 'visiting',
  35789. fn: function (aNode){
  35790. var self=this;
  35791. function $IRVerbatim(){return $globals.IRVerbatim||(typeof IRVerbatim=="undefined"?nil:IRVerbatim)}
  35792. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35793. return $core.withContext(function($ctx1) {
  35794. //>>excludeEnd("ctx");
  35795. var $2,$3,$1;
  35796. $2=$recv($IRVerbatim())._new();
  35797. $recv($2)._source_($recv($recv(aNode)._source())._crlfSanitized());
  35798. $3=$recv($2)._yourself();
  35799. $1=$3;
  35800. return $1;
  35801. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35802. }, function($ctx1) {$ctx1.fill(self,"visitJSStatementNode:",{aNode:aNode},$globals.IRASTTranslator)});
  35803. //>>excludeEnd("ctx");
  35804. },
  35805. //>>excludeStart("ide", pragmas.excludeIdeData);
  35806. args: ["aNode"],
  35807. source: "visitJSStatementNode: aNode\x0a\x09^ IRVerbatim new\x0a\x09\x09source: aNode source crlfSanitized;\x0a\x09\x09yourself",
  35808. referencedClasses: ["IRVerbatim"],
  35809. //>>excludeEnd("ide");
  35810. messageSends: ["source:", "new", "crlfSanitized", "source", "yourself"]
  35811. }),
  35812. $globals.IRASTTranslator);
  35813. $core.addMethod(
  35814. $core.method({
  35815. selector: "visitMethodNode:",
  35816. protocol: 'visiting',
  35817. fn: function (aNode){
  35818. var self=this;
  35819. function $IRMethod(){return $globals.IRMethod||(typeof IRMethod=="undefined"?nil:IRMethod)}
  35820. function $IRTempDeclaration(){return $globals.IRTempDeclaration||(typeof IRTempDeclaration=="undefined"?nil:IRTempDeclaration)}
  35821. function $IRReturn(){return $globals.IRReturn||(typeof IRReturn=="undefined"?nil:IRReturn)}
  35822. function $IRVariable(){return $globals.IRVariable||(typeof IRVariable=="undefined"?nil:IRVariable)}
  35823. function $IRVerbatim(){return $globals.IRVerbatim||(typeof IRVerbatim=="undefined"?nil:IRVerbatim)}
  35824. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35825. return $core.withContext(function($ctx1) {
  35826. //>>excludeEnd("ctx");
  35827. var $2,$3,$4,$5,$1,$7,$6,$8,$10,$11,$12,$13,$9,$14,$16,$15,$17,$18,$20,$21,$23,$24,$22,$25,$19,$27,$28,$26,$29;
  35828. $2=$recv($IRMethod())._new();
  35829. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35830. $ctx1.sendIdx["new"]=1;
  35831. //>>excludeEnd("ctx");
  35832. $recv($2)._source_($recv(self._source())._crlfSanitized());
  35833. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35834. $ctx1.sendIdx["source:"]=1;
  35835. //>>excludeEnd("ctx");
  35836. $recv($2)._theClass_(self._theClass());
  35837. $recv($2)._arguments_($recv(aNode)._arguments());
  35838. $recv($2)._selector_($recv(aNode)._selector());
  35839. $recv($2)._sendIndexes_($recv(aNode)._sendIndexes());
  35840. $recv($2)._superSends_($recv(aNode)._superSends());
  35841. $recv($2)._requiresSmalltalkContext_($recv(aNode)._requiresSmalltalkContext());
  35842. $recv($2)._classReferences_($recv(aNode)._classReferences());
  35843. $3=$2;
  35844. $4=$recv(aNode)._scope();
  35845. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35846. $ctx1.sendIdx["scope"]=1;
  35847. //>>excludeEnd("ctx");
  35848. $recv($3)._scope_($4);
  35849. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35850. $ctx1.sendIdx["scope:"]=1;
  35851. //>>excludeEnd("ctx");
  35852. $5=$recv($2)._yourself();
  35853. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35854. $ctx1.sendIdx["yourself"]=1;
  35855. //>>excludeEnd("ctx");
  35856. $1=$5;
  35857. self._method_($1);
  35858. $7=$recv(aNode)._scope();
  35859. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35860. $ctx1.sendIdx["scope"]=2;
  35861. //>>excludeEnd("ctx");
  35862. $6=$recv($7)._temps();
  35863. $recv($6)._do_((function(each){
  35864. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35865. return $core.withContext(function($ctx2) {
  35866. //>>excludeEnd("ctx");
  35867. $8=self._method();
  35868. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35869. $ctx2.sendIdx["method"]=1;
  35870. //>>excludeEnd("ctx");
  35871. $10=$recv($IRTempDeclaration())._new();
  35872. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35873. $ctx2.sendIdx["new"]=2;
  35874. //>>excludeEnd("ctx");
  35875. $recv($10)._name_($recv(each)._name());
  35876. $11=$10;
  35877. $12=$recv(aNode)._scope();
  35878. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35879. $ctx2.sendIdx["scope"]=3;
  35880. //>>excludeEnd("ctx");
  35881. $recv($11)._scope_($12);
  35882. $13=$recv($10)._yourself();
  35883. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35884. $ctx2.sendIdx["yourself"]=2;
  35885. //>>excludeEnd("ctx");
  35886. $9=$13;
  35887. return $recv($8)._add_($9);
  35888. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35889. $ctx2.sendIdx["add:"]=1;
  35890. //>>excludeEnd("ctx");
  35891. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35892. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  35893. //>>excludeEnd("ctx");
  35894. }));
  35895. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35896. $ctx1.sendIdx["do:"]=1;
  35897. //>>excludeEnd("ctx");
  35898. $recv($recv(aNode)._nodes())._do_((function(each){
  35899. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35900. return $core.withContext(function($ctx2) {
  35901. //>>excludeEnd("ctx");
  35902. $14=self._method();
  35903. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35904. $ctx2.sendIdx["method"]=2;
  35905. //>>excludeEnd("ctx");
  35906. return $recv($14)._add_(self._visit_(each));
  35907. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35908. $ctx2.sendIdx["add:"]=2;
  35909. //>>excludeEnd("ctx");
  35910. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35911. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,2)});
  35912. //>>excludeEnd("ctx");
  35913. }));
  35914. $16=$recv(aNode)._scope();
  35915. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35916. $ctx1.sendIdx["scope"]=4;
  35917. //>>excludeEnd("ctx");
  35918. $15=$recv($16)._hasLocalReturn();
  35919. if(!$core.assert($15)){
  35920. $17=self._method();
  35921. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35922. $ctx1.sendIdx["method"]=3;
  35923. //>>excludeEnd("ctx");
  35924. $18=$17;
  35925. $20=$recv($IRReturn())._new();
  35926. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35927. $ctx1.sendIdx["new"]=3;
  35928. //>>excludeEnd("ctx");
  35929. $21=$20;
  35930. $23=$recv($IRVariable())._new();
  35931. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35932. $ctx1.sendIdx["new"]=4;
  35933. //>>excludeEnd("ctx");
  35934. $recv($23)._variable_($recv($recv($recv(aNode)._scope())._pseudoVars())._at_("self"));
  35935. $24=$recv($23)._yourself();
  35936. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35937. $ctx1.sendIdx["yourself"]=3;
  35938. //>>excludeEnd("ctx");
  35939. $22=$24;
  35940. $recv($21)._add_($22);
  35941. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35942. $ctx1.sendIdx["add:"]=4;
  35943. //>>excludeEnd("ctx");
  35944. $25=$recv($20)._yourself();
  35945. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35946. $ctx1.sendIdx["yourself"]=4;
  35947. //>>excludeEnd("ctx");
  35948. $19=$25;
  35949. $recv($18)._add_($19);
  35950. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35951. $ctx1.sendIdx["add:"]=3;
  35952. //>>excludeEnd("ctx");
  35953. $27=$recv($IRVerbatim())._new();
  35954. $recv($27)._source_("");
  35955. $28=$recv($27)._yourself();
  35956. $26=$recv($17)._add_($28);
  35957. $26;
  35958. };
  35959. $29=self._method();
  35960. return $29;
  35961. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35962. }, function($ctx1) {$ctx1.fill(self,"visitMethodNode:",{aNode:aNode},$globals.IRASTTranslator)});
  35963. //>>excludeEnd("ctx");
  35964. },
  35965. //>>excludeStart("ide", pragmas.excludeIdeData);
  35966. args: ["aNode"],
  35967. source: "visitMethodNode: aNode\x0a\x0a\x09self method: (IRMethod new\x0a\x09\x09source: self source crlfSanitized;\x0a\x09\x09theClass: self theClass;\x0a\x09\x09arguments: aNode arguments;\x0a\x09\x09selector: aNode selector;\x0a\x09\x09sendIndexes: aNode sendIndexes;\x0a\x09\x09superSends: aNode superSends;\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\x09aNode nodes do: [ :each | self method add: (self visit: each) ].\x0a\x0a\x09aNode scope hasLocalReturn ifFalse: [self method\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\x09\x09add: (IRVerbatim new source: ''; yourself) ].\x0a\x0a\x09^ self method",
  35968. referencedClasses: ["IRMethod", "IRTempDeclaration", "IRReturn", "IRVariable", "IRVerbatim"],
  35969. //>>excludeEnd("ide");
  35970. messageSends: ["method:", "source:", "new", "crlfSanitized", "source", "theClass:", "theClass", "arguments:", "arguments", "selector:", "selector", "sendIndexes:", "sendIndexes", "superSends:", "superSends", "requiresSmalltalkContext:", "requiresSmalltalkContext", "classReferences:", "classReferences", "scope:", "scope", "yourself", "do:", "temps", "add:", "method", "name:", "name", "nodes", "visit:", "ifFalse:", "hasLocalReturn", "variable:", "at:", "pseudoVars"]
  35971. }),
  35972. $globals.IRASTTranslator);
  35973. $core.addMethod(
  35974. $core.method({
  35975. selector: "visitOrAlias:",
  35976. protocol: 'visiting',
  35977. fn: function (aNode){
  35978. var self=this;
  35979. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35980. return $core.withContext(function($ctx1) {
  35981. //>>excludeEnd("ctx");
  35982. var $2,$1;
  35983. $2=$recv(aNode)._shouldBeAliased();
  35984. if($core.assert($2)){
  35985. $1=self._alias_(aNode);
  35986. } else {
  35987. $1=self._visit_(aNode);
  35988. };
  35989. return $1;
  35990. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35991. }, function($ctx1) {$ctx1.fill(self,"visitOrAlias:",{aNode:aNode},$globals.IRASTTranslator)});
  35992. //>>excludeEnd("ctx");
  35993. },
  35994. //>>excludeStart("ide", pragmas.excludeIdeData);
  35995. args: ["aNode"],
  35996. source: "visitOrAlias: aNode\x0a\x09^ aNode shouldBeAliased\x0a\x09\x09ifTrue: [ self alias: aNode ]\x0a\x09\x09ifFalse: [ self visit: aNode ]",
  35997. referencedClasses: [],
  35998. //>>excludeEnd("ide");
  35999. messageSends: ["ifTrue:ifFalse:", "shouldBeAliased", "alias:", "visit:"]
  36000. }),
  36001. $globals.IRASTTranslator);
  36002. $core.addMethod(
  36003. $core.method({
  36004. selector: "visitReturnNode:",
  36005. protocol: 'visiting',
  36006. fn: function (aNode){
  36007. var self=this;
  36008. var return_;
  36009. function $IRNonLocalReturn(){return $globals.IRNonLocalReturn||(typeof IRNonLocalReturn=="undefined"?nil:IRNonLocalReturn)}
  36010. function $IRReturn(){return $globals.IRReturn||(typeof IRReturn=="undefined"?nil:IRReturn)}
  36011. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  36012. return $core.withContext(function($ctx1) {
  36013. //>>excludeEnd("ctx");
  36014. var $1,$2;
  36015. $1=$recv(aNode)._nonLocalReturn();
  36016. if($core.assert($1)){
  36017. return_=$recv($IRNonLocalReturn())._new();
  36018. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  36019. $ctx1.sendIdx["new"]=1;
  36020. //>>excludeEnd("ctx");
  36021. } else {
  36022. return_=$recv($IRReturn())._new();
  36023. };
  36024. $recv(return_)._scope_($recv(aNode)._scope());
  36025. $recv($recv(aNode)._nodes())._do_((function(each){
  36026. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  36027. return $core.withContext(function($ctx2) {
  36028. //>>excludeEnd("ctx");
  36029. return $recv(return_)._add_(self._alias_(each));
  36030. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  36031. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,3)});
  36032. //>>excludeEnd("ctx");
  36033. }));
  36034. $2=return_;
  36035. return $2;
  36036. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  36037. }, function($ctx1) {$ctx1.fill(self,"visitReturnNode:",{aNode:aNode,return_:return_},$globals.IRASTTranslator)});
  36038. //>>excludeEnd("ctx");
  36039. },
  36040. //>>excludeStart("ide", pragmas.excludeIdeData);
  36041. args: ["aNode"],
  36042. source: "visitReturnNode: aNode\x0a\x09| return |\x0a\x09return := aNode nonLocalReturn\x0a\x09\x09ifTrue: [ IRNonLocalReturn new ]\x0a\x09\x09ifFalse: [ IRReturn new ].\x0a\x09return scope: aNode scope.\x0a\x09aNode nodes do: [ :each |\x0a\x09\x09return add: (self alias: each) ].\x0a\x09^ return",
  36043. referencedClasses: ["IRNonLocalReturn", "IRReturn"],
  36044. //>>excludeEnd("ide");
  36045. messageSends: ["ifTrue:ifFalse:", "nonLocalReturn", "new", "scope:", "scope", "do:", "nodes", "add:", "alias:"]
  36046. }),
  36047. $globals.IRASTTranslator);
  36048. $core.addMethod(
  36049. $core.method({
  36050. selector: "visitSendNode:",
  36051. protocol: 'visiting',
  36052. fn: function (aNode){
  36053. var self=this;
  36054. var send,all,receiver,arguments;
  36055. function $IRSend(){return $globals.IRSend||(typeof IRSend=="undefined"?nil:IRSend)}
  36056. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  36057. return $core.withContext(function($ctx1) {
  36058. //>>excludeEnd("ctx");
  36059. var $1,$2,$3,$4;
  36060. send=$recv($IRSend())._new();
  36061. $1=send;
  36062. $recv($1)._selector_($recv(aNode)._selector());
  36063. $2=$recv($1)._index_($recv(aNode)._index());
  36064. $3=$recv(aNode)._superSend();
  36065. if($core.assert($3)){
  36066. $recv(send)._classSend_($recv(self._theClass())._superclass());
  36067. };
  36068. all=self._aliasTemporally_($recv([$recv(aNode)._receiver()]).__comma($recv(aNode)._arguments()));
  36069. receiver=$recv(all)._first();
  36070. arguments=$recv(all)._allButFirst();
  36071. $recv(send)._add_(receiver);
  36072. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  36073. $ctx1.sendIdx["add:"]=1;
  36074. //>>excludeEnd("ctx");
  36075. $recv(arguments)._do_((function(each){
  36076. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  36077. return $core.withContext(function($ctx2) {
  36078. //>>excludeEnd("ctx");
  36079. return $recv(send)._add_(each);
  36080. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  36081. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,2)});
  36082. //>>excludeEnd("ctx");
  36083. }));
  36084. $4=send;
  36085. return $4;
  36086. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  36087. }, function($ctx1) {$ctx1.fill(self,"visitSendNode:",{aNode:aNode,send:send,all:all,receiver:receiver,arguments:arguments},$globals.IRASTTranslator)});
  36088. //>>excludeEnd("ctx");
  36089. },
  36090. //>>excludeStart("ide", pragmas.excludeIdeData);
  36091. args: ["aNode"],
  36092. source: "visitSendNode: aNode\x0a\x09| send all receiver arguments |\x0a\x09send := IRSend new.\x0a\x09send\x0a\x09\x09selector: aNode selector;\x0a\x09\x09index: aNode index.\x0a\x09aNode superSend ifTrue: [ send classSend: self theClass superclass ].\x0a\x09\x0a\x09all := self aliasTemporally: { aNode receiver }, aNode arguments.\x0a\x09receiver := all first.\x0a\x09arguments := all allButFirst.\x0a\x0a\x09send add: receiver.\x0a\x09arguments do: [ :each | send add: each ].\x0a\x0a\x09^ send",
  36093. referencedClasses: ["IRSend"],
  36094. //>>excludeEnd("ide");
  36095. messageSends: ["new", "selector:", "selector", "index:", "index", "ifTrue:", "superSend", "classSend:", "superclass", "theClass", "aliasTemporally:", ",", "receiver", "arguments", "first", "allButFirst", "add:", "do:"]
  36096. }),
  36097. $globals.IRASTTranslator);
  36098. $core.addMethod(
  36099. $core.method({
  36100. selector: "visitSequenceNode:",
  36101. protocol: 'visiting',
  36102. fn: function (aNode){
  36103. var self=this;
  36104. function $IRSequence(){return $globals.IRSequence||(typeof IRSequence=="undefined"?nil:IRSequence)}
  36105. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  36106. return $core.withContext(function($ctx1) {
  36107. //>>excludeEnd("ctx");
  36108. var $2,$1;
  36109. $1=self._withSequence_do_($recv($IRSequence())._new(),(function(){
  36110. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  36111. return $core.withContext(function($ctx2) {
  36112. //>>excludeEnd("ctx");
  36113. return $recv($recv(aNode)._nodes())._do_((function(each){
  36114. var instruction;
  36115. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  36116. return $core.withContext(function($ctx3) {
  36117. //>>excludeEnd("ctx");
  36118. instruction=self._visitOrAlias_(each);
  36119. instruction;
  36120. $2=$recv(instruction)._isVariable();
  36121. if(!$core.assert($2)){
  36122. return $recv(self._sequence())._add_(instruction);
  36123. };
  36124. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  36125. }, function($ctx3) {$ctx3.fillBlock({each:each,instruction:instruction},$ctx2,2)});
  36126. //>>excludeEnd("ctx");
  36127. }));
  36128. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  36129. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  36130. //>>excludeEnd("ctx");
  36131. }));
  36132. return $1;
  36133. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  36134. }, function($ctx1) {$ctx1.fill(self,"visitSequenceNode:",{aNode:aNode},$globals.IRASTTranslator)});
  36135. //>>excludeEnd("ctx");
  36136. },
  36137. //>>excludeStart("ide", pragmas.excludeIdeData);
  36138. args: ["aNode"],
  36139. source: "visitSequenceNode: aNode\x0a\x09^ self\x0a\x09\x09withSequence: IRSequence new\x0a\x09\x09do: [\x0a\x09\x09\x09aNode nodes do: [ :each | | instruction |\x0a\x09\x09\x09\x09instruction := self visitOrAlias: each.\x0a\x09\x09\x09\x09instruction isVariable ifFalse: [\x0a\x09\x09\x09\x09\x09self sequence add: instruction ] ]]",
  36140. referencedClasses: ["IRSequence"],
  36141. //>>excludeEnd("ide");
  36142. messageSends: ["withSequence:do:", "new", "do:", "nodes", "visitOrAlias:", "ifFalse:", "isVariable", "add:", "sequence"]
  36143. }),
  36144. $globals.IRASTTranslator);
  36145. $core.addMethod(
  36146. $core.method({
  36147. selector: "visitValueNode:",
  36148. protocol: 'visiting',
  36149. fn: function (aNode){
  36150. var self=this;
  36151. function $IRValue(){return $globals.IRValue||(typeof IRValue=="undefined"?nil:IRValue)}
  36152. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  36153. return $core.withContext(function($ctx1) {
  36154. //>>excludeEnd("ctx");
  36155. var $2,$3,$1;
  36156. $2=$recv($IRValue())._new();
  36157. $recv($2)._value_($recv(aNode)._value());
  36158. $3=$recv($2)._yourself();
  36159. $1=$3;
  36160. return $1;
  36161. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  36162. }, function($ctx1) {$ctx1.fill(self,"visitValueNode:",{aNode:aNode},$globals.IRASTTranslator)});
  36163. //>>excludeEnd("ctx");
  36164. },
  36165. //>>excludeStart("ide", pragmas.excludeIdeData);
  36166. args: ["aNode"],
  36167. source: "visitValueNode: aNode\x0a\x09^ IRValue new\x0a\x09\x09value: aNode value;\x0a\x09\x09yourself",
  36168. referencedClasses: ["IRValue"],
  36169. //>>excludeEnd("ide");
  36170. messageSends: ["value:", "new", "value", "yourself"]
  36171. }),
  36172. $globals.IRASTTranslator);
  36173. $core.addMethod(
  36174. $core.method({
  36175. selector: "visitVariableNode:",
  36176. protocol: 'visiting',
  36177. fn: function (aNode){
  36178. var self=this;
  36179. function $IRVariable(){return $globals.IRVariable||(typeof IRVariable=="undefined"?nil:IRVariable)}
  36180. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  36181. return $core.withContext(function($ctx1) {
  36182. //>>excludeEnd("ctx");
  36183. var $2,$3,$1;
  36184. $2=$recv($IRVariable())._new();
  36185. $recv($2)._variable_($recv(aNode)._binding());
  36186. $3=$recv($2)._yourself();
  36187. $1=$3;
  36188. return $1;
  36189. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  36190. }, function($ctx1) {$ctx1.fill(self,"visitVariableNode:",{aNode:aNode},$globals.IRASTTranslator)});
  36191. //>>excludeEnd("ctx");
  36192. },
  36193. //>>excludeStart("ide", pragmas.excludeIdeData);
  36194. args: ["aNode"],
  36195. source: "visitVariableNode: aNode\x0a\x09^ IRVariable new\x0a\x09\x09variable: aNode binding;\x0a\x09\x09yourself",
  36196. referencedClasses: ["IRVariable"],
  36197. //>>excludeEnd("ide");
  36198. messageSends: ["variable:", "new", "binding", "yourself"]
  36199. }),
  36200. $globals.IRASTTranslator);
  36201. $core.addMethod(
  36202. $core.method({
  36203. selector: "withSequence:do:",
  36204. protocol: 'accessing',
  36205. fn: function (aSequence,aBlock){
  36206. var self=this;
  36207. var outerSequence;
  36208. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  36209. return $core.withContext(function($ctx1) {
  36210. //>>excludeEnd("ctx");
  36211. outerSequence=self._sequence();
  36212. self._sequence_(aSequence);
  36213. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  36214. $ctx1.sendIdx["sequence:"]=1;
  36215. //>>excludeEnd("ctx");
  36216. $recv(aBlock)._value();
  36217. self._sequence_(outerSequence);
  36218. return aSequence;
  36219. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  36220. }, function($ctx1) {$ctx1.fill(self,"withSequence:do:",{aSequence:aSequence,aBlock:aBlock,outerSequence:outerSequence},$globals.IRASTTranslator)});
  36221. //>>excludeEnd("ctx");
  36222. },
  36223. //>>excludeStart("ide", pragmas.excludeIdeData);
  36224. args: ["aSequence", "aBlock"],
  36225. 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",
  36226. referencedClasses: [],
  36227. //>>excludeEnd("ide");
  36228. messageSends: ["sequence", "sequence:", "value"]
  36229. }),
  36230. $globals.IRASTTranslator);
  36231. $core.addClass('IRInstruction', $globals.Object, ['parent', 'instructions'], 'Compiler-IR');
  36232. //>>excludeStart("ide", pragmas.excludeIdeData);
  36233. $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.";
  36234. //>>excludeEnd("ide");
  36235. $core.addMethod(
  36236. $core.method({
  36237. selector: "accept:",
  36238. protocol: 'visiting',
  36239. fn: function (aVisitor){
  36240. var self=this;
  36241. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  36242. return $core.withContext(function($ctx1) {
  36243. //>>excludeEnd("ctx");
  36244. var $1;
  36245. $1=$recv(aVisitor)._visitIRInstruction_(self);
  36246. return $1;
  36247. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  36248. }, function($ctx1) {$ctx1.fill(self,"accept:",{aVisitor:aVisitor},$globals.IRInstruction)});
  36249. //>>excludeEnd("ctx");
  36250. },
  36251. //>>excludeStart("ide", pragmas.excludeIdeData);
  36252. args: ["aVisitor"],
  36253. source: "accept: aVisitor\x0a\x09^ aVisitor visitIRInstruction: self",
  36254. referencedClasses: [],
  36255. //>>excludeEnd("ide");
  36256. messageSends: ["visitIRInstruction:"]
  36257. }),
  36258. $globals.IRInstruction);
  36259. $core.addMethod(
  36260. $core.method({
  36261. selector: "add:",
  36262. protocol: 'building',
  36263. fn: function (anObject){
  36264. var self=this;
  36265. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  36266. return $core.withContext(function($ctx1) {
  36267. //>>excludeEnd("ctx");
  36268. var $1;
  36269. $recv(anObject)._parent_(self);
  36270. $1=$recv(self._instructions())._add_(anObject);
  36271. return $1;
  36272. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  36273. }, function($ctx1) {$ctx1.fill(self,"add:",{anObject:anObject},$globals.IRInstruction)});
  36274. //>>excludeEnd("ctx");
  36275. },
  36276. //>>excludeStart("ide", pragmas.excludeIdeData);
  36277. args: ["anObject"],
  36278. source: "add: anObject\x0a\x09anObject parent: self.\x0a\x09^ self instructions add: anObject",
  36279. referencedClasses: [],
  36280. //>>excludeEnd("ide");
  36281. messageSends: ["parent:", "add:", "instructions"]
  36282. }),
  36283. $globals.IRInstruction);
  36284. $core.addMethod(
  36285. $core.method({
  36286. selector: "canBeAssigned",
  36287. protocol: 'testing',
  36288. fn: function (){
  36289. var self=this;
  36290. return true;
  36291. },
  36292. //>>excludeStart("ide", pragmas.excludeIdeData);
  36293. args: [],
  36294. source: "canBeAssigned\x0a\x09^ true",
  36295. referencedClasses: [],
  36296. //>>excludeEnd("ide");
  36297. messageSends: []
  36298. }),
  36299. $globals.IRInstruction);
  36300. $core.addMethod(
  36301. $core.method({
  36302. selector: "instructions",
  36303. protocol: 'accessing',
  36304. fn: function (){
  36305. var self=this;
  36306. function $OrderedCollection(){return $globals.OrderedCollection||(typeof OrderedCollection=="undefined"?nil:OrderedCollection)}
  36307. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  36308. return $core.withContext(function($ctx1) {
  36309. //>>excludeEnd("ctx");
  36310. var $2,$1,$receiver;
  36311. $2=self["@instructions"];
  36312. if(($receiver = $2) == null || $receiver.isNil){
  36313. self["@instructions"]=$recv($OrderedCollection())._new();
  36314. $1=self["@instructions"];
  36315. } else {
  36316. $1=$2;
  36317. };
  36318. return $1;
  36319. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  36320. }, function($ctx1) {$ctx1.fill(self,"instructions",{},$globals.IRInstruction)});
  36321. //>>excludeEnd("ctx");
  36322. },
  36323. //>>excludeStart("ide", pragmas.excludeIdeData);
  36324. args: [],
  36325. source: "instructions\x0a\x09^ instructions ifNil: [ instructions := OrderedCollection new ]",
  36326. referencedClasses: ["OrderedCollection"],
  36327. //>>excludeEnd("ide");
  36328. messageSends: ["ifNil:", "new"]
  36329. }),
  36330. $globals.IRInstruction);
  36331. $core.addMethod(
  36332. $core.method({
  36333. selector: "isClosure",
  36334. protocol: 'testing',
  36335. fn: function (){
  36336. var self=this;
  36337. return false;
  36338. },
  36339. //>>excludeStart("ide", pragmas.excludeIdeData);
  36340. args: [],
  36341. source: "isClosure\x0a\x09^ false",
  36342. referencedClasses: [],
  36343. //>>excludeEnd("ide");
  36344. messageSends: []
  36345. }),
  36346. $globals.IRInstruction);
  36347. $core.addMethod(
  36348. $core.method({
  36349. selector: "isInlined",
  36350. protocol: 'testing',
  36351. fn: function (){
  36352. var self=this;
  36353. return false;
  36354. },
  36355. //>>excludeStart("ide", pragmas.excludeIdeData);
  36356. args: [],
  36357. source: "isInlined\x0a\x09^ false",
  36358. referencedClasses: [],
  36359. //>>excludeEnd("ide");
  36360. messageSends: []
  36361. }),
  36362. $globals.IRInstruction);
  36363. $core.addMethod(
  36364. $core.method({
  36365. selector: "isLocalReturn",
  36366. protocol: 'testing',
  36367. fn: function (){
  36368. var self=this;
  36369. return false;
  36370. },
  36371. //>>excludeStart("ide", pragmas.excludeIdeData);
  36372. args: [],
  36373. source: "isLocalReturn\x0a\x09^ false",
  36374. referencedClasses: [],
  36375. //>>excludeEnd("ide");
  36376. messageSends: []
  36377. }),
  36378. $globals.IRInstruction);
  36379. $core.addMethod(
  36380. $core.method({
  36381. selector: "isMethod",
  36382. protocol: 'testing',
  36383. fn: function (){
  36384. var self=this;
  36385. return false;
  36386. },
  36387. //>>excludeStart("ide", pragmas.excludeIdeData);
  36388. args: [],
  36389. source: "isMethod\x0a\x09^ false",
  36390. referencedClasses: [],
  36391. //>>excludeEnd("ide");
  36392. messageSends: []
  36393. }),
  36394. $globals.IRInstruction);
  36395. $core.addMethod(
  36396. $core.method({
  36397. selector: "isReturn",
  36398. protocol: 'testing',
  36399. fn: function (){
  36400. var self=this;
  36401. return false;
  36402. },
  36403. //>>excludeStart("ide", pragmas.excludeIdeData);
  36404. args: [],
  36405. source: "isReturn\x0a\x09^ false",
  36406. referencedClasses: [],
  36407. //>>excludeEnd("ide");
  36408. messageSends: []
  36409. }),
  36410. $globals.IRInstruction);
  36411. $core.addMethod(
  36412. $core.method({
  36413. selector: "isSend",
  36414. protocol: 'testing',
  36415. fn: function (){
  36416. var self=this;
  36417. return false;
  36418. },
  36419. //>>excludeStart("ide", pragmas.excludeIdeData);
  36420. args: [],
  36421. source: "isSend\x0a\x09^ false",
  36422. referencedClasses: [],
  36423. //>>excludeEnd("ide");
  36424. messageSends: []
  36425. }),
  36426. $globals.IRInstruction);
  36427. $core.addMethod(
  36428. $core.method({
  36429. selector: "isSequence",
  36430. protocol: 'testing',
  36431. fn: function (){
  36432. var self=this;
  36433. return false;
  36434. },
  36435. //>>excludeStart("ide", pragmas.excludeIdeData);
  36436. args: [],
  36437. source: "isSequence\x0a\x09^ false",
  36438. referencedClasses: [],
  36439. //>>excludeEnd("ide");
  36440. messageSends: []
  36441. }),
  36442. $globals.IRInstruction);
  36443. $core.addMethod(
  36444. $core.method({
  36445. selector: "isTempDeclaration",
  36446. protocol: 'testing',
  36447. fn: function (){
  36448. var self=this;
  36449. return false;
  36450. },
  36451. //>>excludeStart("ide", pragmas.excludeIdeData);
  36452. args: [],
  36453. source: "isTempDeclaration\x0a\x09^ false",
  36454. referencedClasses: [],
  36455. //>>excludeEnd("ide");
  36456. messageSends: []
  36457. }),
  36458. $globals.IRInstruction);
  36459. $core.addMethod(
  36460. $core.method({
  36461. selector: "isVariable",
  36462. protocol: 'testing',
  36463. fn: function (){
  36464. var self=this;
  36465. return false;
  36466. },
  36467. //>>excludeStart("ide", pragmas.excludeIdeData);
  36468. args: [],
  36469. source: "isVariable\x0a\x09^ false",
  36470. referencedClasses: [],
  36471. //>>excludeEnd("ide");
  36472. messageSends: []
  36473. }),
  36474. $globals.IRInstruction);
  36475. $core.addMethod(
  36476. $core.method({
  36477. selector: "method",
  36478. protocol: 'accessing',
  36479. fn: function (){
  36480. var self=this;
  36481. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  36482. return $core.withContext(function($ctx1) {
  36483. //>>excludeEnd("ctx");
  36484. var $1;
  36485. $1=$recv(self._parent())._method();
  36486. return $1;
  36487. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  36488. }, function($ctx1) {$ctx1.fill(self,"method",{},$globals.IRInstruction)});
  36489. //>>excludeEnd("ctx");
  36490. },
  36491. //>>excludeStart("ide", pragmas.excludeIdeData);
  36492. args: [],
  36493. source: "method\x0a\x09^ self parent method",
  36494. referencedClasses: [],
  36495. //>>excludeEnd("ide");
  36496. messageSends: ["method", "parent"]
  36497. }),
  36498. $globals.IRInstruction);
  36499. $core.addMethod(
  36500. $core.method({
  36501. selector: "needsBoxingAsReceiver",
  36502. protocol: 'testing',
  36503. fn: function (){
  36504. var self=this;
  36505. return true;
  36506. },
  36507. //>>excludeStart("ide", pragmas.excludeIdeData);
  36508. args: [],
  36509. source: "needsBoxingAsReceiver\x0a\x09^ true",
  36510. referencedClasses: [],
  36511. //>>excludeEnd("ide");
  36512. messageSends: []
  36513. }),
  36514. $globals.IRInstruction);
  36515. $core.addMethod(
  36516. $core.method({
  36517. selector: "parent",
  36518. protocol: 'accessing',
  36519. fn: function (){
  36520. var self=this;
  36521. var $1;
  36522. $1=self["@parent"];
  36523. return $1;
  36524. },
  36525. //>>excludeStart("ide", pragmas.excludeIdeData);
  36526. args: [],
  36527. source: "parent\x0a\x09^ parent",
  36528. referencedClasses: [],
  36529. //>>excludeEnd("ide");
  36530. messageSends: []
  36531. }),
  36532. $globals.IRInstruction);
  36533. $core.addMethod(
  36534. $core.method({
  36535. selector: "parent:",
  36536. protocol: 'accessing',
  36537. fn: function (anIRInstruction){
  36538. var self=this;
  36539. self["@parent"]=anIRInstruction;
  36540. return self;
  36541. },
  36542. //>>excludeStart("ide", pragmas.excludeIdeData);
  36543. args: ["anIRInstruction"],
  36544. source: "parent: anIRInstruction\x0a\x09parent := anIRInstruction",
  36545. referencedClasses: [],
  36546. //>>excludeEnd("ide");
  36547. messageSends: []
  36548. }),
  36549. $globals.IRInstruction);
  36550. $core.addMethod(
  36551. $core.method({
  36552. selector: "remove",
  36553. protocol: 'building',
  36554. fn: function (){
  36555. var self=this;
  36556. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  36557. return $core.withContext(function($ctx1) {
  36558. //>>excludeEnd("ctx");
  36559. $recv(self._parent())._remove_(self);
  36560. return self;
  36561. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  36562. }, function($ctx1) {$ctx1.fill(self,"remove",{},$globals.IRInstruction)});
  36563. //>>excludeEnd("ctx");
  36564. },
  36565. //>>excludeStart("ide", pragmas.excludeIdeData);
  36566. args: [],
  36567. source: "remove\x0a\x09self parent remove: self",
  36568. referencedClasses: [],
  36569. //>>excludeEnd("ide");
  36570. messageSends: ["remove:", "parent"]
  36571. }),
  36572. $globals.IRInstruction);
  36573. $core.addMethod(
  36574. $core.method({
  36575. selector: "remove:",
  36576. protocol: 'building',
  36577. fn: function (anIRInstruction){
  36578. var self=this;
  36579. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  36580. return $core.withContext(function($ctx1) {
  36581. //>>excludeEnd("ctx");
  36582. $recv(self._instructions())._remove_(anIRInstruction);
  36583. return self;
  36584. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  36585. }, function($ctx1) {$ctx1.fill(self,"remove:",{anIRInstruction:anIRInstruction},$globals.IRInstruction)});
  36586. //>>excludeEnd("ctx");
  36587. },
  36588. //>>excludeStart("ide", pragmas.excludeIdeData);
  36589. args: ["anIRInstruction"],
  36590. source: "remove: anIRInstruction\x0a\x09self instructions remove: anIRInstruction",
  36591. referencedClasses: [],
  36592. //>>excludeEnd("ide");
  36593. messageSends: ["remove:", "instructions"]
  36594. }),
  36595. $globals.IRInstruction);
  36596. $core.addMethod(
  36597. $core.method({
  36598. selector: "replace:with:",
  36599. protocol: 'building',
  36600. fn: function (anIRInstruction,anotherIRInstruction){
  36601. var self=this;
  36602. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  36603. return $core.withContext(function($ctx1) {
  36604. //>>excludeEnd("ctx");
  36605. var $1;
  36606. $recv(anotherIRInstruction)._parent_(self);
  36607. $1=self._instructions();
  36608. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  36609. $ctx1.sendIdx["instructions"]=1;
  36610. //>>excludeEnd("ctx");
  36611. $recv($1)._at_put_($recv(self._instructions())._indexOf_(anIRInstruction),anotherIRInstruction);
  36612. return self;
  36613. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  36614. }, function($ctx1) {$ctx1.fill(self,"replace:with:",{anIRInstruction:anIRInstruction,anotherIRInstruction:anotherIRInstruction},$globals.IRInstruction)});
  36615. //>>excludeEnd("ctx");
  36616. },
  36617. //>>excludeStart("ide", pragmas.excludeIdeData);
  36618. args: ["anIRInstruction", "anotherIRInstruction"],
  36619. source: "replace: anIRInstruction with: anotherIRInstruction\x0a\x09anotherIRInstruction parent: self.\x0a\x09self instructions\x0a\x09\x09at: (self instructions indexOf: anIRInstruction)\x0a\x09\x09put: anotherIRInstruction",
  36620. referencedClasses: [],
  36621. //>>excludeEnd("ide");
  36622. messageSends: ["parent:", "at:put:", "instructions", "indexOf:"]
  36623. }),
  36624. $globals.IRInstruction);
  36625. $core.addMethod(
  36626. $core.method({
  36627. selector: "replaceWith:",
  36628. protocol: 'building',
  36629. fn: function (anIRInstruction){
  36630. var self=this;
  36631. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  36632. return $core.withContext(function($ctx1) {
  36633. //>>excludeEnd("ctx");
  36634. $recv(self._parent())._replace_with_(self,anIRInstruction);
  36635. return self;
  36636. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  36637. }, function($ctx1) {$ctx1.fill(self,"replaceWith:",{anIRInstruction:anIRInstruction},$globals.IRInstruction)});
  36638. //>>excludeEnd("ctx");
  36639. },
  36640. //>>excludeStart("ide", pragmas.excludeIdeData);
  36641. args: ["anIRInstruction"],
  36642. source: "replaceWith: anIRInstruction\x0a\x09self parent replace: self with: anIRInstruction",
  36643. referencedClasses: [],
  36644. //>>excludeEnd("ide");
  36645. messageSends: ["replace:with:", "parent"]
  36646. }),
  36647. $globals.IRInstruction);
  36648. $core.addMethod(
  36649. $core.method({
  36650. selector: "scope",
  36651. protocol: 'accessing',
  36652. fn: function (){
  36653. var self=this;
  36654. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  36655. return $core.withContext(function($ctx1) {
  36656. //>>excludeEnd("ctx");
  36657. var $2,$1,$receiver;
  36658. $2=self._parent();
  36659. if(($receiver = $2) == null || $receiver.isNil){
  36660. $1=$2;
  36661. } else {
  36662. var node;
  36663. node=$receiver;
  36664. $1=$recv(node)._scope();
  36665. };
  36666. return $1;
  36667. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  36668. }, function($ctx1) {$ctx1.fill(self,"scope",{},$globals.IRInstruction)});
  36669. //>>excludeEnd("ctx");
  36670. },
  36671. //>>excludeStart("ide", pragmas.excludeIdeData);
  36672. args: [],
  36673. source: "scope\x0a\x09^ self parent ifNotNil: [ :node | \x0a\x09\x09node scope ]",
  36674. referencedClasses: [],
  36675. //>>excludeEnd("ide");
  36676. messageSends: ["ifNotNil:", "parent", "scope"]
  36677. }),
  36678. $globals.IRInstruction);
  36679. $core.addMethod(
  36680. $core.method({
  36681. selector: "on:",
  36682. protocol: 'instance creation',
  36683. fn: function (aBuilder){
  36684. var self=this;
  36685. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  36686. return $core.withContext(function($ctx1) {
  36687. //>>excludeEnd("ctx");
  36688. var $2,$3,$1;
  36689. $2=self._new();
  36690. $recv($2)._builder_(aBuilder);
  36691. $3=$recv($2)._yourself();
  36692. $1=$3;
  36693. return $1;
  36694. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  36695. }, function($ctx1) {$ctx1.fill(self,"on:",{aBuilder:aBuilder},$globals.IRInstruction.klass)});
  36696. //>>excludeEnd("ctx");
  36697. },
  36698. //>>excludeStart("ide", pragmas.excludeIdeData);
  36699. args: ["aBuilder"],
  36700. source: "on: aBuilder\x0a\x09^ self new\x0a\x09\x09builder: aBuilder;\x0a\x09\x09yourself",
  36701. referencedClasses: [],
  36702. //>>excludeEnd("ide");
  36703. messageSends: ["builder:", "new", "yourself"]
  36704. }),
  36705. $globals.IRInstruction.klass);
  36706. $core.addClass('IRAssignment', $globals.IRInstruction, [], 'Compiler-IR');
  36707. $core.addMethod(
  36708. $core.method({
  36709. selector: "accept:",
  36710. protocol: 'visiting',
  36711. fn: function (aVisitor){
  36712. var self=this;
  36713. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  36714. return $core.withContext(function($ctx1) {
  36715. //>>excludeEnd("ctx");
  36716. var $1;
  36717. $1=$recv(aVisitor)._visitIRAssignment_(self);
  36718. return $1;
  36719. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  36720. }, function($ctx1) {$ctx1.fill(self,"accept:",{aVisitor:aVisitor},$globals.IRAssignment)});
  36721. //>>excludeEnd("ctx");
  36722. },
  36723. //>>excludeStart("ide", pragmas.excludeIdeData);
  36724. args: ["aVisitor"],
  36725. source: "accept: aVisitor\x0a\x09^ aVisitor visitIRAssignment: self",
  36726. referencedClasses: [],
  36727. //>>excludeEnd("ide");
  36728. messageSends: ["visitIRAssignment:"]
  36729. }),
  36730. $globals.IRAssignment);
  36731. $core.addClass('IRDynamicArray', $globals.IRInstruction, [], 'Compiler-IR');
  36732. $core.addMethod(
  36733. $core.method({
  36734. selector: "accept:",
  36735. protocol: 'visiting',
  36736. fn: function (aVisitor){
  36737. var self=this;
  36738. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  36739. return $core.withContext(function($ctx1) {
  36740. //>>excludeEnd("ctx");
  36741. var $1;
  36742. $1=$recv(aVisitor)._visitIRDynamicArray_(self);
  36743. return $1;
  36744. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  36745. }, function($ctx1) {$ctx1.fill(self,"accept:",{aVisitor:aVisitor},$globals.IRDynamicArray)});
  36746. //>>excludeEnd("ctx");
  36747. },
  36748. //>>excludeStart("ide", pragmas.excludeIdeData);
  36749. args: ["aVisitor"],
  36750. source: "accept: aVisitor\x0a\x09^ aVisitor visitIRDynamicArray: self",
  36751. referencedClasses: [],
  36752. //>>excludeEnd("ide");
  36753. messageSends: ["visitIRDynamicArray:"]
  36754. }),
  36755. $globals.IRDynamicArray);
  36756. $core.addClass('IRDynamicDictionary', $globals.IRInstruction, [], 'Compiler-IR');
  36757. $core.addMethod(
  36758. $core.method({
  36759. selector: "accept:",
  36760. protocol: 'visiting',
  36761. fn: function (aVisitor){
  36762. var self=this;
  36763. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  36764. return $core.withContext(function($ctx1) {
  36765. //>>excludeEnd("ctx");
  36766. var $1;
  36767. $1=$recv(aVisitor)._visitIRDynamicDictionary_(self);
  36768. return $1;
  36769. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  36770. }, function($ctx1) {$ctx1.fill(self,"accept:",{aVisitor:aVisitor},$globals.IRDynamicDictionary)});
  36771. //>>excludeEnd("ctx");
  36772. },
  36773. //>>excludeStart("ide", pragmas.excludeIdeData);
  36774. args: ["aVisitor"],
  36775. source: "accept: aVisitor\x0a\x09^ aVisitor visitIRDynamicDictionary: self",
  36776. referencedClasses: [],
  36777. //>>excludeEnd("ide");
  36778. messageSends: ["visitIRDynamicDictionary:"]
  36779. }),
  36780. $globals.IRDynamicDictionary);
  36781. $core.addClass('IRScopedInstruction', $globals.IRInstruction, ['scope'], 'Compiler-IR');
  36782. $core.addMethod(
  36783. $core.method({
  36784. selector: "scope",
  36785. protocol: 'accessing',
  36786. fn: function (){
  36787. var self=this;
  36788. var $1;
  36789. $1=self["@scope"];
  36790. return $1;
  36791. },
  36792. //>>excludeStart("ide", pragmas.excludeIdeData);
  36793. args: [],
  36794. source: "scope\x0a\x09^ scope",
  36795. referencedClasses: [],
  36796. //>>excludeEnd("ide");
  36797. messageSends: []
  36798. }),
  36799. $globals.IRScopedInstruction);
  36800. $core.addMethod(
  36801. $core.method({
  36802. selector: "scope:",
  36803. protocol: 'accessing',
  36804. fn: function (aScope){
  36805. var self=this;
  36806. self["@scope"]=aScope;
  36807. return self;
  36808. },
  36809. //>>excludeStart("ide", pragmas.excludeIdeData);
  36810. args: ["aScope"],
  36811. source: "scope: aScope\x0a\x09scope := aScope",
  36812. referencedClasses: [],
  36813. //>>excludeEnd("ide");
  36814. messageSends: []
  36815. }),
  36816. $globals.IRScopedInstruction);
  36817. $core.addClass('IRClosureInstruction', $globals.IRScopedInstruction, ['arguments', 'requiresSmalltalkContext'], 'Compiler-IR');
  36818. $core.addMethod(
  36819. $core.method({
  36820. selector: "arguments",
  36821. protocol: 'accessing',
  36822. fn: function (){
  36823. var self=this;
  36824. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  36825. return $core.withContext(function($ctx1) {
  36826. //>>excludeEnd("ctx");
  36827. var $2,$1,$receiver;
  36828. $2=self["@arguments"];
  36829. if(($receiver = $2) == null || $receiver.isNil){
  36830. $1=[];
  36831. } else {
  36832. $1=$2;
  36833. };
  36834. return $1;
  36835. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  36836. }, function($ctx1) {$ctx1.fill(self,"arguments",{},$globals.IRClosureInstruction)});
  36837. //>>excludeEnd("ctx");
  36838. },
  36839. //>>excludeStart("ide", pragmas.excludeIdeData);
  36840. args: [],
  36841. source: "arguments\x0a\x09^ arguments ifNil: [ #() ]",
  36842. referencedClasses: [],
  36843. //>>excludeEnd("ide");
  36844. messageSends: ["ifNil:"]
  36845. }),
  36846. $globals.IRClosureInstruction);
  36847. $core.addMethod(
  36848. $core.method({
  36849. selector: "arguments:",
  36850. protocol: 'accessing',
  36851. fn: function (aCollection){
  36852. var self=this;
  36853. self["@arguments"]=aCollection;
  36854. return self;
  36855. },
  36856. //>>excludeStart("ide", pragmas.excludeIdeData);
  36857. args: ["aCollection"],
  36858. source: "arguments: aCollection\x0a\x09arguments := aCollection",
  36859. referencedClasses: [],
  36860. //>>excludeEnd("ide");
  36861. messageSends: []
  36862. }),
  36863. $globals.IRClosureInstruction);
  36864. $core.addMethod(
  36865. $core.method({
  36866. selector: "locals",
  36867. protocol: 'accessing',
  36868. fn: function (){
  36869. var self=this;
  36870. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  36871. return $core.withContext(function($ctx1) {
  36872. //>>excludeEnd("ctx");
  36873. var $2,$3,$1;
  36874. $2=$recv(self._arguments())._copy();
  36875. $recv($2)._addAll_($recv(self._tempDeclarations())._collect_((function(each){
  36876. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  36877. return $core.withContext(function($ctx2) {
  36878. //>>excludeEnd("ctx");
  36879. return $recv(each)._name();
  36880. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  36881. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  36882. //>>excludeEnd("ctx");
  36883. })));
  36884. $3=$recv($2)._yourself();
  36885. $1=$3;
  36886. return $1;
  36887. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  36888. }, function($ctx1) {$ctx1.fill(self,"locals",{},$globals.IRClosureInstruction)});
  36889. //>>excludeEnd("ctx");
  36890. },
  36891. //>>excludeStart("ide", pragmas.excludeIdeData);
  36892. args: [],
  36893. source: "locals\x0a\x09^ self arguments copy\x0a\x09\x09addAll: (self tempDeclarations collect: [ :each | each name ]);\x0a\x09\x09yourself",
  36894. referencedClasses: [],
  36895. //>>excludeEnd("ide");
  36896. messageSends: ["addAll:", "copy", "arguments", "collect:", "tempDeclarations", "name", "yourself"]
  36897. }),
  36898. $globals.IRClosureInstruction);
  36899. $core.addMethod(
  36900. $core.method({
  36901. selector: "requiresSmalltalkContext",
  36902. protocol: 'accessing',
  36903. fn: function (){
  36904. var self=this;
  36905. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  36906. return $core.withContext(function($ctx1) {
  36907. //>>excludeEnd("ctx");
  36908. var $2,$1,$receiver;
  36909. $2=self["@requiresSmalltalkContext"];
  36910. if(($receiver = $2) == null || $receiver.isNil){
  36911. $1=false;
  36912. } else {
  36913. $1=$2;
  36914. };
  36915. return $1;
  36916. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  36917. }, function($ctx1) {$ctx1.fill(self,"requiresSmalltalkContext",{},$globals.IRClosureInstruction)});
  36918. //>>excludeEnd("ctx");
  36919. },
  36920. //>>excludeStart("ide", pragmas.excludeIdeData);
  36921. args: [],
  36922. source: "requiresSmalltalkContext\x0a\x09^ requiresSmalltalkContext ifNil: [ false ]",
  36923. referencedClasses: [],
  36924. //>>excludeEnd("ide");
  36925. messageSends: ["ifNil:"]
  36926. }),
  36927. $globals.IRClosureInstruction);
  36928. $core.addMethod(
  36929. $core.method({
  36930. selector: "requiresSmalltalkContext:",
  36931. protocol: 'accessing',
  36932. fn: function (anObject){
  36933. var self=this;
  36934. self["@requiresSmalltalkContext"]=anObject;
  36935. return self;
  36936. },
  36937. //>>excludeStart("ide", pragmas.excludeIdeData);
  36938. args: ["anObject"],
  36939. source: "requiresSmalltalkContext: anObject\x0a\x09requiresSmalltalkContext := anObject",
  36940. referencedClasses: [],
  36941. //>>excludeEnd("ide");
  36942. messageSends: []
  36943. }),
  36944. $globals.IRClosureInstruction);
  36945. $core.addMethod(
  36946. $core.method({
  36947. selector: "scope:",
  36948. protocol: 'accessing',
  36949. fn: function (aScope){
  36950. var self=this;
  36951. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  36952. return $core.withContext(function($ctx1) {
  36953. //>>excludeEnd("ctx");
  36954. (
  36955. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  36956. $ctx1.supercall = true,
  36957. //>>excludeEnd("ctx");
  36958. $globals.IRClosureInstruction.superclass.fn.prototype._scope_.apply($recv(self), [aScope]));
  36959. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  36960. $ctx1.supercall = false;
  36961. //>>excludeEnd("ctx");;
  36962. $recv(aScope)._instruction_(self);
  36963. return self;
  36964. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  36965. }, function($ctx1) {$ctx1.fill(self,"scope:",{aScope:aScope},$globals.IRClosureInstruction)});
  36966. //>>excludeEnd("ctx");
  36967. },
  36968. //>>excludeStart("ide", pragmas.excludeIdeData);
  36969. args: ["aScope"],
  36970. source: "scope: aScope\x0a\x09super scope: aScope.\x0a\x09aScope instruction: self",
  36971. referencedClasses: [],
  36972. //>>excludeEnd("ide");
  36973. messageSends: ["scope:", "instruction:"]
  36974. }),
  36975. $globals.IRClosureInstruction);
  36976. $core.addMethod(
  36977. $core.method({
  36978. selector: "tempDeclarations",
  36979. protocol: 'accessing',
  36980. fn: function (){
  36981. var self=this;
  36982. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  36983. return $core.withContext(function($ctx1) {
  36984. //>>excludeEnd("ctx");
  36985. var $1;
  36986. $1=$recv(self._instructions())._select_((function(each){
  36987. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  36988. return $core.withContext(function($ctx2) {
  36989. //>>excludeEnd("ctx");
  36990. return $recv(each)._isTempDeclaration();
  36991. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  36992. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  36993. //>>excludeEnd("ctx");
  36994. }));
  36995. return $1;
  36996. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  36997. }, function($ctx1) {$ctx1.fill(self,"tempDeclarations",{},$globals.IRClosureInstruction)});
  36998. //>>excludeEnd("ctx");
  36999. },
  37000. //>>excludeStart("ide", pragmas.excludeIdeData);
  37001. args: [],
  37002. source: "tempDeclarations\x0a\x09^ self instructions select: [ :each |\x0a\x09\x09each isTempDeclaration ]",
  37003. referencedClasses: [],
  37004. //>>excludeEnd("ide");
  37005. messageSends: ["select:", "instructions", "isTempDeclaration"]
  37006. }),
  37007. $globals.IRClosureInstruction);
  37008. $core.addClass('IRClosure', $globals.IRClosureInstruction, [], 'Compiler-IR');
  37009. $core.addMethod(
  37010. $core.method({
  37011. selector: "accept:",
  37012. protocol: 'visiting',
  37013. fn: function (aVisitor){
  37014. var self=this;
  37015. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  37016. return $core.withContext(function($ctx1) {
  37017. //>>excludeEnd("ctx");
  37018. var $1;
  37019. $1=$recv(aVisitor)._visitIRClosure_(self);
  37020. return $1;
  37021. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  37022. }, function($ctx1) {$ctx1.fill(self,"accept:",{aVisitor:aVisitor},$globals.IRClosure)});
  37023. //>>excludeEnd("ctx");
  37024. },
  37025. //>>excludeStart("ide", pragmas.excludeIdeData);
  37026. args: ["aVisitor"],
  37027. source: "accept: aVisitor\x0a\x09^ aVisitor visitIRClosure: self",
  37028. referencedClasses: [],
  37029. //>>excludeEnd("ide");
  37030. messageSends: ["visitIRClosure:"]
  37031. }),
  37032. $globals.IRClosure);
  37033. $core.addMethod(
  37034. $core.method({
  37035. selector: "isClosure",
  37036. protocol: 'testing',
  37037. fn: function (){
  37038. var self=this;
  37039. return true;
  37040. },
  37041. //>>excludeStart("ide", pragmas.excludeIdeData);
  37042. args: [],
  37043. source: "isClosure\x0a\x09^ true",
  37044. referencedClasses: [],
  37045. //>>excludeEnd("ide");
  37046. messageSends: []
  37047. }),
  37048. $globals.IRClosure);
  37049. $core.addMethod(
  37050. $core.method({
  37051. selector: "sequence",
  37052. protocol: 'accessing',
  37053. fn: function (){
  37054. var self=this;
  37055. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  37056. return $core.withContext(function($ctx1) {
  37057. //>>excludeEnd("ctx");
  37058. var $1;
  37059. $1=$recv(self._instructions())._last();
  37060. return $1;
  37061. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  37062. }, function($ctx1) {$ctx1.fill(self,"sequence",{},$globals.IRClosure)});
  37063. //>>excludeEnd("ctx");
  37064. },
  37065. //>>excludeStart("ide", pragmas.excludeIdeData);
  37066. args: [],
  37067. source: "sequence\x0a\x09^ self instructions last",
  37068. referencedClasses: [],
  37069. //>>excludeEnd("ide");
  37070. messageSends: ["last", "instructions"]
  37071. }),
  37072. $globals.IRClosure);
  37073. $core.addClass('IRMethod', $globals.IRClosureInstruction, ['theClass', 'source', 'selector', 'classReferences', 'sendIndexes', 'superSends', 'requiresSmalltalkContext', 'internalVariables'], 'Compiler-IR');
  37074. //>>excludeStart("ide", pragmas.excludeIdeData);
  37075. $globals.IRMethod.comment="I am a method instruction";
  37076. //>>excludeEnd("ide");
  37077. $core.addMethod(
  37078. $core.method({
  37079. selector: "accept:",
  37080. protocol: 'visiting',
  37081. fn: function (aVisitor){
  37082. var self=this;
  37083. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  37084. return $core.withContext(function($ctx1) {
  37085. //>>excludeEnd("ctx");
  37086. var $1;
  37087. $1=$recv(aVisitor)._visitIRMethod_(self);
  37088. return $1;
  37089. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  37090. }, function($ctx1) {$ctx1.fill(self,"accept:",{aVisitor:aVisitor},$globals.IRMethod)});
  37091. //>>excludeEnd("ctx");
  37092. },
  37093. //>>excludeStart("ide", pragmas.excludeIdeData);
  37094. args: ["aVisitor"],
  37095. source: "accept: aVisitor\x0a\x09^ aVisitor visitIRMethod: self",
  37096. referencedClasses: [],
  37097. //>>excludeEnd("ide");
  37098. messageSends: ["visitIRMethod:"]
  37099. }),
  37100. $globals.IRMethod);
  37101. $core.addMethod(
  37102. $core.method({
  37103. selector: "classReferences",
  37104. protocol: 'accessing',
  37105. fn: function (){
  37106. var self=this;
  37107. var $1;
  37108. $1=self["@classReferences"];
  37109. return $1;
  37110. },
  37111. //>>excludeStart("ide", pragmas.excludeIdeData);
  37112. args: [],
  37113. source: "classReferences\x0a\x09^ classReferences",
  37114. referencedClasses: [],
  37115. //>>excludeEnd("ide");
  37116. messageSends: []
  37117. }),
  37118. $globals.IRMethod);
  37119. $core.addMethod(
  37120. $core.method({
  37121. selector: "classReferences:",
  37122. protocol: 'accessing',
  37123. fn: function (aCollection){
  37124. var self=this;
  37125. self["@classReferences"]=aCollection;
  37126. return self;
  37127. },
  37128. //>>excludeStart("ide", pragmas.excludeIdeData);
  37129. args: ["aCollection"],
  37130. source: "classReferences: aCollection\x0a\x09classReferences := aCollection",
  37131. referencedClasses: [],
  37132. //>>excludeEnd("ide");
  37133. messageSends: []
  37134. }),
  37135. $globals.IRMethod);
  37136. $core.addMethod(
  37137. $core.method({
  37138. selector: "internalVariables",
  37139. protocol: 'accessing',
  37140. fn: function (){
  37141. var self=this;
  37142. function $Set(){return $globals.Set||(typeof Set=="undefined"?nil:Set)}
  37143. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  37144. return $core.withContext(function($ctx1) {
  37145. //>>excludeEnd("ctx");
  37146. var $2,$1,$receiver;
  37147. $2=self["@internalVariables"];
  37148. if(($receiver = $2) == null || $receiver.isNil){
  37149. self["@internalVariables"]=$recv($Set())._new();
  37150. $1=self["@internalVariables"];
  37151. } else {
  37152. $1=$2;
  37153. };
  37154. return $1;
  37155. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  37156. }, function($ctx1) {$ctx1.fill(self,"internalVariables",{},$globals.IRMethod)});
  37157. //>>excludeEnd("ctx");
  37158. },
  37159. //>>excludeStart("ide", pragmas.excludeIdeData);
  37160. args: [],
  37161. source: "internalVariables\x0a\x09^ internalVariables ifNil: [ internalVariables := Set new ]",
  37162. referencedClasses: ["Set"],
  37163. //>>excludeEnd("ide");
  37164. messageSends: ["ifNil:", "new"]
  37165. }),
  37166. $globals.IRMethod);
  37167. $core.addMethod(
  37168. $core.method({
  37169. selector: "isMethod",
  37170. protocol: 'accessing',
  37171. fn: function (){
  37172. var self=this;
  37173. return true;
  37174. },
  37175. //>>excludeStart("ide", pragmas.excludeIdeData);
  37176. args: [],
  37177. source: "isMethod\x0a\x09^ true",
  37178. referencedClasses: [],
  37179. //>>excludeEnd("ide");
  37180. messageSends: []
  37181. }),
  37182. $globals.IRMethod);
  37183. $core.addMethod(
  37184. $core.method({
  37185. selector: "messageSends",
  37186. protocol: 'accessing',
  37187. fn: function (){
  37188. var self=this;
  37189. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  37190. return $core.withContext(function($ctx1) {
  37191. //>>excludeEnd("ctx");
  37192. var $1;
  37193. $1=$recv(self._sendIndexes())._keys();
  37194. return $1;
  37195. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  37196. }, function($ctx1) {$ctx1.fill(self,"messageSends",{},$globals.IRMethod)});
  37197. //>>excludeEnd("ctx");
  37198. },
  37199. //>>excludeStart("ide", pragmas.excludeIdeData);
  37200. args: [],
  37201. source: "messageSends\x0a\x09^ self sendIndexes keys",
  37202. referencedClasses: [],
  37203. //>>excludeEnd("ide");
  37204. messageSends: ["keys", "sendIndexes"]
  37205. }),
  37206. $globals.IRMethod);
  37207. $core.addMethod(
  37208. $core.method({
  37209. selector: "method",
  37210. protocol: 'accessing',
  37211. fn: function (){
  37212. var self=this;
  37213. return self;
  37214. },
  37215. //>>excludeStart("ide", pragmas.excludeIdeData);
  37216. args: [],
  37217. source: "method\x0a\x09^ self",
  37218. referencedClasses: [],
  37219. //>>excludeEnd("ide");
  37220. messageSends: []
  37221. }),
  37222. $globals.IRMethod);
  37223. $core.addMethod(
  37224. $core.method({
  37225. selector: "selector",
  37226. protocol: 'accessing',
  37227. fn: function (){
  37228. var self=this;
  37229. var $1;
  37230. $1=self["@selector"];
  37231. return $1;
  37232. },
  37233. //>>excludeStart("ide", pragmas.excludeIdeData);
  37234. args: [],
  37235. source: "selector\x0a\x09^ selector",
  37236. referencedClasses: [],
  37237. //>>excludeEnd("ide");
  37238. messageSends: []
  37239. }),
  37240. $globals.IRMethod);
  37241. $core.addMethod(
  37242. $core.method({
  37243. selector: "selector:",
  37244. protocol: 'accessing',
  37245. fn: function (aString){
  37246. var self=this;
  37247. self["@selector"]=aString;
  37248. return self;
  37249. },
  37250. //>>excludeStart("ide", pragmas.excludeIdeData);
  37251. args: ["aString"],
  37252. source: "selector: aString\x0a\x09selector := aString",
  37253. referencedClasses: [],
  37254. //>>excludeEnd("ide");
  37255. messageSends: []
  37256. }),
  37257. $globals.IRMethod);
  37258. $core.addMethod(
  37259. $core.method({
  37260. selector: "sendIndexes",
  37261. protocol: 'accessing',
  37262. fn: function (){
  37263. var self=this;
  37264. var $1;
  37265. $1=self["@sendIndexes"];
  37266. return $1;
  37267. },
  37268. //>>excludeStart("ide", pragmas.excludeIdeData);
  37269. args: [],
  37270. source: "sendIndexes\x0a\x09^ sendIndexes",
  37271. referencedClasses: [],
  37272. //>>excludeEnd("ide");
  37273. messageSends: []
  37274. }),
  37275. $globals.IRMethod);
  37276. $core.addMethod(
  37277. $core.method({
  37278. selector: "sendIndexes:",
  37279. protocol: 'accessing',
  37280. fn: function (aDictionary){
  37281. var self=this;
  37282. self["@sendIndexes"]=aDictionary;
  37283. return self;
  37284. },
  37285. //>>excludeStart("ide", pragmas.excludeIdeData);
  37286. args: ["aDictionary"],
  37287. source: "sendIndexes: aDictionary\x0a\x09sendIndexes := aDictionary",
  37288. referencedClasses: [],
  37289. //>>excludeEnd("ide");
  37290. messageSends: []
  37291. }),
  37292. $globals.IRMethod);
  37293. $core.addMethod(
  37294. $core.method({
  37295. selector: "source",
  37296. protocol: 'accessing',
  37297. fn: function (){
  37298. var self=this;
  37299. var $1;
  37300. $1=self["@source"];
  37301. return $1;
  37302. },
  37303. //>>excludeStart("ide", pragmas.excludeIdeData);
  37304. args: [],
  37305. source: "source\x0a\x09^ source",
  37306. referencedClasses: [],
  37307. //>>excludeEnd("ide");
  37308. messageSends: []
  37309. }),
  37310. $globals.IRMethod);
  37311. $core.addMethod(
  37312. $core.method({
  37313. selector: "source:",
  37314. protocol: 'accessing',
  37315. fn: function (aString){
  37316. var self=this;
  37317. self["@source"]=aString;
  37318. return self;
  37319. },
  37320. //>>excludeStart("ide", pragmas.excludeIdeData);
  37321. args: ["aString"],
  37322. source: "source: aString\x0a\x09source := aString",
  37323. referencedClasses: [],
  37324. //>>excludeEnd("ide");
  37325. messageSends: []
  37326. }),
  37327. $globals.IRMethod);
  37328. $core.addMethod(
  37329. $core.method({
  37330. selector: "superSends",
  37331. protocol: 'accessing',
  37332. fn: function (){
  37333. var self=this;
  37334. var $1;
  37335. $1=self["@superSends"];
  37336. return $1;
  37337. },
  37338. //>>excludeStart("ide", pragmas.excludeIdeData);
  37339. args: [],
  37340. source: "superSends\x0a\x09^ superSends",
  37341. referencedClasses: [],
  37342. //>>excludeEnd("ide");
  37343. messageSends: []
  37344. }),
  37345. $globals.IRMethod);
  37346. $core.addMethod(
  37347. $core.method({
  37348. selector: "superSends:",
  37349. protocol: 'accessing',
  37350. fn: function (aCollection){
  37351. var self=this;
  37352. self["@superSends"]=aCollection;
  37353. return self;
  37354. },
  37355. //>>excludeStart("ide", pragmas.excludeIdeData);
  37356. args: ["aCollection"],
  37357. source: "superSends: aCollection\x0a\x09superSends := aCollection",
  37358. referencedClasses: [],
  37359. //>>excludeEnd("ide");
  37360. messageSends: []
  37361. }),
  37362. $globals.IRMethod);
  37363. $core.addMethod(
  37364. $core.method({
  37365. selector: "theClass",
  37366. protocol: 'accessing',
  37367. fn: function (){
  37368. var self=this;
  37369. var $1;
  37370. $1=self["@theClass"];
  37371. return $1;
  37372. },
  37373. //>>excludeStart("ide", pragmas.excludeIdeData);
  37374. args: [],
  37375. source: "theClass\x0a\x09^ theClass",
  37376. referencedClasses: [],
  37377. //>>excludeEnd("ide");
  37378. messageSends: []
  37379. }),
  37380. $globals.IRMethod);
  37381. $core.addMethod(
  37382. $core.method({
  37383. selector: "theClass:",
  37384. protocol: 'accessing',
  37385. fn: function (aClass){
  37386. var self=this;
  37387. self["@theClass"]=aClass;
  37388. return self;
  37389. },
  37390. //>>excludeStart("ide", pragmas.excludeIdeData);
  37391. args: ["aClass"],
  37392. source: "theClass: aClass\x0a\x09theClass := aClass",
  37393. referencedClasses: [],
  37394. //>>excludeEnd("ide");
  37395. messageSends: []
  37396. }),
  37397. $globals.IRMethod);
  37398. $core.addClass('IRReturn', $globals.IRScopedInstruction, [], 'Compiler-IR');
  37399. //>>excludeStart("ide", pragmas.excludeIdeData);
  37400. $globals.IRReturn.comment="I am a local return instruction.";
  37401. //>>excludeEnd("ide");
  37402. $core.addMethod(
  37403. $core.method({
  37404. selector: "accept:",
  37405. protocol: 'visiting',
  37406. fn: function (aVisitor){
  37407. var self=this;
  37408. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  37409. return $core.withContext(function($ctx1) {
  37410. //>>excludeEnd("ctx");
  37411. var $1;
  37412. $1=$recv(aVisitor)._visitIRReturn_(self);
  37413. return $1;
  37414. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  37415. }, function($ctx1) {$ctx1.fill(self,"accept:",{aVisitor:aVisitor},$globals.IRReturn)});
  37416. //>>excludeEnd("ctx");
  37417. },
  37418. //>>excludeStart("ide", pragmas.excludeIdeData);
  37419. args: ["aVisitor"],
  37420. source: "accept: aVisitor\x0a\x09^ aVisitor visitIRReturn: self",
  37421. referencedClasses: [],
  37422. //>>excludeEnd("ide");
  37423. messageSends: ["visitIRReturn:"]
  37424. }),
  37425. $globals.IRReturn);
  37426. $core.addMethod(
  37427. $core.method({
  37428. selector: "canBeAssigned",
  37429. protocol: 'testing',
  37430. fn: function (){
  37431. var self=this;
  37432. return false;
  37433. },
  37434. //>>excludeStart("ide", pragmas.excludeIdeData);
  37435. args: [],
  37436. source: "canBeAssigned\x0a\x09^ false",
  37437. referencedClasses: [],
  37438. //>>excludeEnd("ide");
  37439. messageSends: []
  37440. }),
  37441. $globals.IRReturn);
  37442. $core.addMethod(
  37443. $core.method({
  37444. selector: "isBlockReturn",
  37445. protocol: 'testing',
  37446. fn: function (){
  37447. var self=this;
  37448. return false;
  37449. },
  37450. //>>excludeStart("ide", pragmas.excludeIdeData);
  37451. args: [],
  37452. source: "isBlockReturn\x0a\x09^ false",
  37453. referencedClasses: [],
  37454. //>>excludeEnd("ide");
  37455. messageSends: []
  37456. }),
  37457. $globals.IRReturn);
  37458. $core.addMethod(
  37459. $core.method({
  37460. selector: "isLocalReturn",
  37461. protocol: 'testing',
  37462. fn: function (){
  37463. var self=this;
  37464. return true;
  37465. },
  37466. //>>excludeStart("ide", pragmas.excludeIdeData);
  37467. args: [],
  37468. source: "isLocalReturn\x0a\x09^ true",
  37469. referencedClasses: [],
  37470. //>>excludeEnd("ide");
  37471. messageSends: []
  37472. }),
  37473. $globals.IRReturn);
  37474. $core.addMethod(
  37475. $core.method({
  37476. selector: "isNonLocalReturn",
  37477. protocol: 'testing',
  37478. fn: function (){
  37479. var self=this;
  37480. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  37481. return $core.withContext(function($ctx1) {
  37482. //>>excludeEnd("ctx");
  37483. var $1;
  37484. $1=$recv(self._isLocalReturn())._not();
  37485. return $1;
  37486. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  37487. }, function($ctx1) {$ctx1.fill(self,"isNonLocalReturn",{},$globals.IRReturn)});
  37488. //>>excludeEnd("ctx");
  37489. },
  37490. //>>excludeStart("ide", pragmas.excludeIdeData);
  37491. args: [],
  37492. source: "isNonLocalReturn\x0a\x09^ self isLocalReturn not",
  37493. referencedClasses: [],
  37494. //>>excludeEnd("ide");
  37495. messageSends: ["not", "isLocalReturn"]
  37496. }),
  37497. $globals.IRReturn);
  37498. $core.addMethod(
  37499. $core.method({
  37500. selector: "isReturn",
  37501. protocol: 'testing',
  37502. fn: function (){
  37503. var self=this;
  37504. return true;
  37505. },
  37506. //>>excludeStart("ide", pragmas.excludeIdeData);
  37507. args: [],
  37508. source: "isReturn\x0a\x09^ true",
  37509. referencedClasses: [],
  37510. //>>excludeEnd("ide");
  37511. messageSends: []
  37512. }),
  37513. $globals.IRReturn);
  37514. $core.addMethod(
  37515. $core.method({
  37516. selector: "scope",
  37517. protocol: 'accessing',
  37518. fn: function (){
  37519. var self=this;
  37520. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  37521. return $core.withContext(function($ctx1) {
  37522. //>>excludeEnd("ctx");
  37523. var $2,$1,$receiver;
  37524. $2=self["@scope"];
  37525. if(($receiver = $2) == null || $receiver.isNil){
  37526. $1=$recv(self._parent())._scope();
  37527. } else {
  37528. $1=$2;
  37529. };
  37530. return $1;
  37531. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  37532. }, function($ctx1) {$ctx1.fill(self,"scope",{},$globals.IRReturn)});
  37533. //>>excludeEnd("ctx");
  37534. },
  37535. //>>excludeStart("ide", pragmas.excludeIdeData);
  37536. args: [],
  37537. source: "scope\x0a\x09^ scope ifNil: [ self parent scope ]",
  37538. referencedClasses: [],
  37539. //>>excludeEnd("ide");
  37540. messageSends: ["ifNil:", "scope", "parent"]
  37541. }),
  37542. $globals.IRReturn);
  37543. $core.addClass('IRBlockReturn', $globals.IRReturn, [], 'Compiler-IR');
  37544. //>>excludeStart("ide", pragmas.excludeIdeData);
  37545. $globals.IRBlockReturn.comment="Smalltalk blocks return their last statement. I am a implicit block return instruction.";
  37546. //>>excludeEnd("ide");
  37547. $core.addMethod(
  37548. $core.method({
  37549. selector: "accept:",
  37550. protocol: 'visiting',
  37551. fn: function (aVisitor){
  37552. var self=this;
  37553. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  37554. return $core.withContext(function($ctx1) {
  37555. //>>excludeEnd("ctx");
  37556. var $1;
  37557. $1=$recv(aVisitor)._visitIRBlockReturn_(self);
  37558. return $1;
  37559. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  37560. }, function($ctx1) {$ctx1.fill(self,"accept:",{aVisitor:aVisitor},$globals.IRBlockReturn)});
  37561. //>>excludeEnd("ctx");
  37562. },
  37563. //>>excludeStart("ide", pragmas.excludeIdeData);
  37564. args: ["aVisitor"],
  37565. source: "accept: aVisitor\x0a\x09^ aVisitor visitIRBlockReturn: self",
  37566. referencedClasses: [],
  37567. //>>excludeEnd("ide");
  37568. messageSends: ["visitIRBlockReturn:"]
  37569. }),
  37570. $globals.IRBlockReturn);
  37571. $core.addMethod(
  37572. $core.method({
  37573. selector: "isBlockReturn",
  37574. protocol: 'testing',
  37575. fn: function (){
  37576. var self=this;
  37577. return true;
  37578. },
  37579. //>>excludeStart("ide", pragmas.excludeIdeData);
  37580. args: [],
  37581. source: "isBlockReturn\x0a\x09^ true",
  37582. referencedClasses: [],
  37583. //>>excludeEnd("ide");
  37584. messageSends: []
  37585. }),
  37586. $globals.IRBlockReturn);
  37587. $core.addClass('IRNonLocalReturn', $globals.IRReturn, [], 'Compiler-IR');
  37588. //>>excludeStart("ide", pragmas.excludeIdeData);
  37589. $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.";
  37590. //>>excludeEnd("ide");
  37591. $core.addMethod(
  37592. $core.method({
  37593. selector: "accept:",
  37594. protocol: 'visiting',
  37595. fn: function (aVisitor){
  37596. var self=this;
  37597. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  37598. return $core.withContext(function($ctx1) {
  37599. //>>excludeEnd("ctx");
  37600. var $1;
  37601. $1=$recv(aVisitor)._visitIRNonLocalReturn_(self);
  37602. return $1;
  37603. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  37604. }, function($ctx1) {$ctx1.fill(self,"accept:",{aVisitor:aVisitor},$globals.IRNonLocalReturn)});
  37605. //>>excludeEnd("ctx");
  37606. },
  37607. //>>excludeStart("ide", pragmas.excludeIdeData);
  37608. args: ["aVisitor"],
  37609. source: "accept: aVisitor\x0a\x09^ aVisitor visitIRNonLocalReturn: self",
  37610. referencedClasses: [],
  37611. //>>excludeEnd("ide");
  37612. messageSends: ["visitIRNonLocalReturn:"]
  37613. }),
  37614. $globals.IRNonLocalReturn);
  37615. $core.addMethod(
  37616. $core.method({
  37617. selector: "isLocalReturn",
  37618. protocol: 'testing',
  37619. fn: function (){
  37620. var self=this;
  37621. return false;
  37622. },
  37623. //>>excludeStart("ide", pragmas.excludeIdeData);
  37624. args: [],
  37625. source: "isLocalReturn\x0a\x09^ false",
  37626. referencedClasses: [],
  37627. //>>excludeEnd("ide");
  37628. messageSends: []
  37629. }),
  37630. $globals.IRNonLocalReturn);
  37631. $core.addClass('IRTempDeclaration', $globals.IRScopedInstruction, ['name'], 'Compiler-IR');
  37632. $core.addMethod(
  37633. $core.method({
  37634. selector: "accept:",
  37635. protocol: 'visiting',
  37636. fn: function (aVisitor){
  37637. var self=this;
  37638. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  37639. return $core.withContext(function($ctx1) {
  37640. //>>excludeEnd("ctx");
  37641. var $1;
  37642. $1=$recv(aVisitor)._visitIRTempDeclaration_(self);
  37643. return $1;
  37644. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  37645. }, function($ctx1) {$ctx1.fill(self,"accept:",{aVisitor:aVisitor},$globals.IRTempDeclaration)});
  37646. //>>excludeEnd("ctx");
  37647. },
  37648. //>>excludeStart("ide", pragmas.excludeIdeData);
  37649. args: ["aVisitor"],
  37650. source: "accept: aVisitor\x0a\x09^ aVisitor visitIRTempDeclaration: self",
  37651. referencedClasses: [],
  37652. //>>excludeEnd("ide");
  37653. messageSends: ["visitIRTempDeclaration:"]
  37654. }),
  37655. $globals.IRTempDeclaration);
  37656. $core.addMethod(
  37657. $core.method({
  37658. selector: "isTempDeclaration",
  37659. protocol: 'testing',
  37660. fn: function (){
  37661. var self=this;
  37662. return true;
  37663. },
  37664. //>>excludeStart("ide", pragmas.excludeIdeData);
  37665. args: [],
  37666. source: "isTempDeclaration\x0a\x09^ true",
  37667. referencedClasses: [],
  37668. //>>excludeEnd("ide");
  37669. messageSends: []
  37670. }),
  37671. $globals.IRTempDeclaration);
  37672. $core.addMethod(
  37673. $core.method({
  37674. selector: "name",
  37675. protocol: 'accessing',
  37676. fn: function (){
  37677. var self=this;
  37678. var $1;
  37679. $1=self["@name"];
  37680. return $1;
  37681. },
  37682. //>>excludeStart("ide", pragmas.excludeIdeData);
  37683. args: [],
  37684. source: "name\x0a\x09^ name",
  37685. referencedClasses: [],
  37686. //>>excludeEnd("ide");
  37687. messageSends: []
  37688. }),
  37689. $globals.IRTempDeclaration);
  37690. $core.addMethod(
  37691. $core.method({
  37692. selector: "name:",
  37693. protocol: 'accessing',
  37694. fn: function (aString){
  37695. var self=this;
  37696. self["@name"]=aString;
  37697. return self;
  37698. },
  37699. //>>excludeStart("ide", pragmas.excludeIdeData);
  37700. args: ["aString"],
  37701. source: "name: aString\x0a\x09name := aString",
  37702. referencedClasses: [],
  37703. //>>excludeEnd("ide");
  37704. messageSends: []
  37705. }),
  37706. $globals.IRTempDeclaration);
  37707. $core.addClass('IRSend', $globals.IRInstruction, ['selector', 'classSend', 'index'], 'Compiler-IR');
  37708. //>>excludeStart("ide", pragmas.excludeIdeData);
  37709. $globals.IRSend.comment="I am a message send instruction.";
  37710. //>>excludeEnd("ide");
  37711. $core.addMethod(
  37712. $core.method({
  37713. selector: "accept:",
  37714. protocol: 'visiting',
  37715. fn: function (aVisitor){
  37716. var self=this;
  37717. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  37718. return $core.withContext(function($ctx1) {
  37719. //>>excludeEnd("ctx");
  37720. var $1;
  37721. $1=$recv(aVisitor)._visitIRSend_(self);
  37722. return $1;
  37723. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  37724. }, function($ctx1) {$ctx1.fill(self,"accept:",{aVisitor:aVisitor},$globals.IRSend)});
  37725. //>>excludeEnd("ctx");
  37726. },
  37727. //>>excludeStart("ide", pragmas.excludeIdeData);
  37728. args: ["aVisitor"],
  37729. source: "accept: aVisitor\x0a\x09^ aVisitor visitIRSend: self",
  37730. referencedClasses: [],
  37731. //>>excludeEnd("ide");
  37732. messageSends: ["visitIRSend:"]
  37733. }),
  37734. $globals.IRSend);
  37735. $core.addMethod(
  37736. $core.method({
  37737. selector: "classSend",
  37738. protocol: 'accessing',
  37739. fn: function (){
  37740. var self=this;
  37741. var $1;
  37742. $1=self["@classSend"];
  37743. return $1;
  37744. },
  37745. //>>excludeStart("ide", pragmas.excludeIdeData);
  37746. args: [],
  37747. source: "classSend\x0a\x09^ classSend",
  37748. referencedClasses: [],
  37749. //>>excludeEnd("ide");
  37750. messageSends: []
  37751. }),
  37752. $globals.IRSend);
  37753. $core.addMethod(
  37754. $core.method({
  37755. selector: "classSend:",
  37756. protocol: 'accessing',
  37757. fn: function (aClass){
  37758. var self=this;
  37759. self["@classSend"]=aClass;
  37760. return self;
  37761. },
  37762. //>>excludeStart("ide", pragmas.excludeIdeData);
  37763. args: ["aClass"],
  37764. source: "classSend: aClass\x0a\x09classSend := aClass",
  37765. referencedClasses: [],
  37766. //>>excludeEnd("ide");
  37767. messageSends: []
  37768. }),
  37769. $globals.IRSend);
  37770. $core.addMethod(
  37771. $core.method({
  37772. selector: "index",
  37773. protocol: 'accessing',
  37774. fn: function (){
  37775. var self=this;
  37776. var $1;
  37777. $1=self["@index"];
  37778. return $1;
  37779. },
  37780. //>>excludeStart("ide", pragmas.excludeIdeData);
  37781. args: [],
  37782. source: "index\x0a\x09^ index",
  37783. referencedClasses: [],
  37784. //>>excludeEnd("ide");
  37785. messageSends: []
  37786. }),
  37787. $globals.IRSend);
  37788. $core.addMethod(
  37789. $core.method({
  37790. selector: "index:",
  37791. protocol: 'accessing',
  37792. fn: function (anInteger){
  37793. var self=this;
  37794. self["@index"]=anInteger;
  37795. return self;
  37796. },
  37797. //>>excludeStart("ide", pragmas.excludeIdeData);
  37798. args: ["anInteger"],
  37799. source: "index: anInteger\x0a\x09index := anInteger",
  37800. referencedClasses: [],
  37801. //>>excludeEnd("ide");
  37802. messageSends: []
  37803. }),
  37804. $globals.IRSend);
  37805. $core.addMethod(
  37806. $core.method({
  37807. selector: "isSend",
  37808. protocol: 'testing',
  37809. fn: function (){
  37810. var self=this;
  37811. return true;
  37812. },
  37813. //>>excludeStart("ide", pragmas.excludeIdeData);
  37814. args: [],
  37815. source: "isSend\x0a\x09^ true",
  37816. referencedClasses: [],
  37817. //>>excludeEnd("ide");
  37818. messageSends: []
  37819. }),
  37820. $globals.IRSend);
  37821. $core.addMethod(
  37822. $core.method({
  37823. selector: "selector",
  37824. protocol: 'accessing',
  37825. fn: function (){
  37826. var self=this;
  37827. var $1;
  37828. $1=self["@selector"];
  37829. return $1;
  37830. },
  37831. //>>excludeStart("ide", pragmas.excludeIdeData);
  37832. args: [],
  37833. source: "selector\x0a\x09^ selector",
  37834. referencedClasses: [],
  37835. //>>excludeEnd("ide");
  37836. messageSends: []
  37837. }),
  37838. $globals.IRSend);
  37839. $core.addMethod(
  37840. $core.method({
  37841. selector: "selector:",
  37842. protocol: 'accessing',
  37843. fn: function (aString){
  37844. var self=this;
  37845. self["@selector"]=aString;
  37846. return self;
  37847. },
  37848. //>>excludeStart("ide", pragmas.excludeIdeData);
  37849. args: ["aString"],
  37850. source: "selector: aString\x0a\x09selector := aString",
  37851. referencedClasses: [],
  37852. //>>excludeEnd("ide");
  37853. messageSends: []
  37854. }),
  37855. $globals.IRSend);
  37856. $core.addClass('IRSequence', $globals.IRInstruction, [], 'Compiler-IR');
  37857. $core.addMethod(
  37858. $core.method({
  37859. selector: "accept:",
  37860. protocol: 'visiting',
  37861. fn: function (aVisitor){
  37862. var self=this;
  37863. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  37864. return $core.withContext(function($ctx1) {
  37865. //>>excludeEnd("ctx");
  37866. var $1;
  37867. $1=$recv(aVisitor)._visitIRSequence_(self);
  37868. return $1;
  37869. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  37870. }, function($ctx1) {$ctx1.fill(self,"accept:",{aVisitor:aVisitor},$globals.IRSequence)});
  37871. //>>excludeEnd("ctx");
  37872. },
  37873. //>>excludeStart("ide", pragmas.excludeIdeData);
  37874. args: ["aVisitor"],
  37875. source: "accept: aVisitor\x0a\x09^ aVisitor visitIRSequence: self",
  37876. referencedClasses: [],
  37877. //>>excludeEnd("ide");
  37878. messageSends: ["visitIRSequence:"]
  37879. }),
  37880. $globals.IRSequence);
  37881. $core.addMethod(
  37882. $core.method({
  37883. selector: "isSequence",
  37884. protocol: 'testing',
  37885. fn: function (){
  37886. var self=this;
  37887. return true;
  37888. },
  37889. //>>excludeStart("ide", pragmas.excludeIdeData);
  37890. args: [],
  37891. source: "isSequence\x0a\x09^ true",
  37892. referencedClasses: [],
  37893. //>>excludeEnd("ide");
  37894. messageSends: []
  37895. }),
  37896. $globals.IRSequence);
  37897. $core.addClass('IRBlockSequence', $globals.IRSequence, [], 'Compiler-IR');
  37898. $core.addMethod(
  37899. $core.method({
  37900. selector: "accept:",
  37901. protocol: 'visiting',
  37902. fn: function (aVisitor){
  37903. var self=this;
  37904. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  37905. return $core.withContext(function($ctx1) {
  37906. //>>excludeEnd("ctx");
  37907. var $1;
  37908. $1=$recv(aVisitor)._visitIRBlockSequence_(self);
  37909. return $1;
  37910. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  37911. }, function($ctx1) {$ctx1.fill(self,"accept:",{aVisitor:aVisitor},$globals.IRBlockSequence)});
  37912. //>>excludeEnd("ctx");
  37913. },
  37914. //>>excludeStart("ide", pragmas.excludeIdeData);
  37915. args: ["aVisitor"],
  37916. source: "accept: aVisitor\x0a\x09^ aVisitor visitIRBlockSequence: self",
  37917. referencedClasses: [],
  37918. //>>excludeEnd("ide");
  37919. messageSends: ["visitIRBlockSequence:"]
  37920. }),
  37921. $globals.IRBlockSequence);
  37922. $core.addClass('IRValue', $globals.IRInstruction, ['value'], 'Compiler-IR');
  37923. //>>excludeStart("ide", pragmas.excludeIdeData);
  37924. $globals.IRValue.comment="I am the simplest possible instruction. I represent a value.";
  37925. //>>excludeEnd("ide");
  37926. $core.addMethod(
  37927. $core.method({
  37928. selector: "accept:",
  37929. protocol: 'visiting',
  37930. fn: function (aVisitor){
  37931. var self=this;
  37932. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  37933. return $core.withContext(function($ctx1) {
  37934. //>>excludeEnd("ctx");
  37935. var $1;
  37936. $1=$recv(aVisitor)._visitIRValue_(self);
  37937. return $1;
  37938. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  37939. }, function($ctx1) {$ctx1.fill(self,"accept:",{aVisitor:aVisitor},$globals.IRValue)});
  37940. //>>excludeEnd("ctx");
  37941. },
  37942. //>>excludeStart("ide", pragmas.excludeIdeData);
  37943. args: ["aVisitor"],
  37944. source: "accept: aVisitor\x0a\x09^ aVisitor visitIRValue: self",
  37945. referencedClasses: [],
  37946. //>>excludeEnd("ide");
  37947. messageSends: ["visitIRValue:"]
  37948. }),
  37949. $globals.IRValue);
  37950. $core.addMethod(
  37951. $core.method({
  37952. selector: "needsBoxingAsReceiver",
  37953. protocol: 'testing',
  37954. fn: function (){
  37955. var self=this;
  37956. return false;
  37957. },
  37958. //>>excludeStart("ide", pragmas.excludeIdeData);
  37959. args: [],
  37960. source: "needsBoxingAsReceiver\x0a\x09^ false",
  37961. referencedClasses: [],
  37962. //>>excludeEnd("ide");
  37963. messageSends: []
  37964. }),
  37965. $globals.IRValue);
  37966. $core.addMethod(
  37967. $core.method({
  37968. selector: "value",
  37969. protocol: 'accessing',
  37970. fn: function (){
  37971. var self=this;
  37972. var $1;
  37973. $1=self["@value"];
  37974. return $1;
  37975. },
  37976. //>>excludeStart("ide", pragmas.excludeIdeData);
  37977. args: [],
  37978. source: "value\x0a\x09^ value",
  37979. referencedClasses: [],
  37980. //>>excludeEnd("ide");
  37981. messageSends: []
  37982. }),
  37983. $globals.IRValue);
  37984. $core.addMethod(
  37985. $core.method({
  37986. selector: "value:",
  37987. protocol: 'accessing',
  37988. fn: function (aString){
  37989. var self=this;
  37990. self["@value"]=aString;
  37991. return self;
  37992. },
  37993. //>>excludeStart("ide", pragmas.excludeIdeData);
  37994. args: ["aString"],
  37995. source: "value: aString\x0a\x09value := aString",
  37996. referencedClasses: [],
  37997. //>>excludeEnd("ide");
  37998. messageSends: []
  37999. }),
  38000. $globals.IRValue);
  38001. $core.addClass('IRVariable', $globals.IRInstruction, ['variable'], 'Compiler-IR');
  38002. //>>excludeStart("ide", pragmas.excludeIdeData);
  38003. $globals.IRVariable.comment="I am a variable instruction.";
  38004. //>>excludeEnd("ide");
  38005. $core.addMethod(
  38006. $core.method({
  38007. selector: "accept:",
  38008. protocol: 'visiting',
  38009. fn: function (aVisitor){
  38010. var self=this;
  38011. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  38012. return $core.withContext(function($ctx1) {
  38013. //>>excludeEnd("ctx");
  38014. var $1;
  38015. $1=$recv(aVisitor)._visitIRVariable_(self);
  38016. return $1;
  38017. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  38018. }, function($ctx1) {$ctx1.fill(self,"accept:",{aVisitor:aVisitor},$globals.IRVariable)});
  38019. //>>excludeEnd("ctx");
  38020. },
  38021. //>>excludeStart("ide", pragmas.excludeIdeData);
  38022. args: ["aVisitor"],
  38023. source: "accept: aVisitor\x0a\x09^ aVisitor visitIRVariable: self",
  38024. referencedClasses: [],
  38025. //>>excludeEnd("ide");
  38026. messageSends: ["visitIRVariable:"]
  38027. }),
  38028. $globals.IRVariable);
  38029. $core.addMethod(
  38030. $core.method({
  38031. selector: "isVariable",
  38032. protocol: 'testing',
  38033. fn: function (){
  38034. var self=this;
  38035. return true;
  38036. },
  38037. //>>excludeStart("ide", pragmas.excludeIdeData);
  38038. args: [],
  38039. source: "isVariable\x0a\x09^ true",
  38040. referencedClasses: [],
  38041. //>>excludeEnd("ide");
  38042. messageSends: []
  38043. }),
  38044. $globals.IRVariable);
  38045. $core.addMethod(
  38046. $core.method({
  38047. selector: "needsBoxingAsReceiver",
  38048. protocol: 'testing',
  38049. fn: function (){
  38050. var self=this;
  38051. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  38052. return $core.withContext(function($ctx1) {
  38053. //>>excludeEnd("ctx");
  38054. var $1;
  38055. $1=$recv($recv(self._variable())._isPseudoVar())._not();
  38056. return $1;
  38057. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  38058. }, function($ctx1) {$ctx1.fill(self,"needsBoxingAsReceiver",{},$globals.IRVariable)});
  38059. //>>excludeEnd("ctx");
  38060. },
  38061. //>>excludeStart("ide", pragmas.excludeIdeData);
  38062. args: [],
  38063. source: "needsBoxingAsReceiver\x0a\x09^ self variable isPseudoVar not",
  38064. referencedClasses: [],
  38065. //>>excludeEnd("ide");
  38066. messageSends: ["not", "isPseudoVar", "variable"]
  38067. }),
  38068. $globals.IRVariable);
  38069. $core.addMethod(
  38070. $core.method({
  38071. selector: "variable",
  38072. protocol: 'accessing',
  38073. fn: function (){
  38074. var self=this;
  38075. var $1;
  38076. $1=self["@variable"];
  38077. return $1;
  38078. },
  38079. //>>excludeStart("ide", pragmas.excludeIdeData);
  38080. args: [],
  38081. source: "variable\x0a\x09^ variable",
  38082. referencedClasses: [],
  38083. //>>excludeEnd("ide");
  38084. messageSends: []
  38085. }),
  38086. $globals.IRVariable);
  38087. $core.addMethod(
  38088. $core.method({
  38089. selector: "variable:",
  38090. protocol: 'accessing',
  38091. fn: function (aScopeVariable){
  38092. var self=this;
  38093. self["@variable"]=aScopeVariable;
  38094. return self;
  38095. },
  38096. //>>excludeStart("ide", pragmas.excludeIdeData);
  38097. args: ["aScopeVariable"],
  38098. source: "variable: aScopeVariable\x0a\x09variable := aScopeVariable",
  38099. referencedClasses: [],
  38100. //>>excludeEnd("ide");
  38101. messageSends: []
  38102. }),
  38103. $globals.IRVariable);
  38104. $core.addClass('IRVerbatim', $globals.IRInstruction, ['source'], 'Compiler-IR');
  38105. $core.addMethod(
  38106. $core.method({
  38107. selector: "accept:",
  38108. protocol: 'visiting',
  38109. fn: function (aVisitor){
  38110. var self=this;
  38111. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  38112. return $core.withContext(function($ctx1) {
  38113. //>>excludeEnd("ctx");
  38114. var $1;
  38115. $1=$recv(aVisitor)._visitIRVerbatim_(self);
  38116. return $1;
  38117. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  38118. }, function($ctx1) {$ctx1.fill(self,"accept:",{aVisitor:aVisitor},$globals.IRVerbatim)});
  38119. //>>excludeEnd("ctx");
  38120. },
  38121. //>>excludeStart("ide", pragmas.excludeIdeData);
  38122. args: ["aVisitor"],
  38123. source: "accept: aVisitor\x0a\x09^ aVisitor visitIRVerbatim: self",
  38124. referencedClasses: [],
  38125. //>>excludeEnd("ide");
  38126. messageSends: ["visitIRVerbatim:"]
  38127. }),
  38128. $globals.IRVerbatim);
  38129. $core.addMethod(
  38130. $core.method({
  38131. selector: "source",
  38132. protocol: 'accessing',
  38133. fn: function (){
  38134. var self=this;
  38135. var $1;
  38136. $1=self["@source"];
  38137. return $1;
  38138. },
  38139. //>>excludeStart("ide", pragmas.excludeIdeData);
  38140. args: [],
  38141. source: "source\x0a\x09^ source",
  38142. referencedClasses: [],
  38143. //>>excludeEnd("ide");
  38144. messageSends: []
  38145. }),
  38146. $globals.IRVerbatim);
  38147. $core.addMethod(
  38148. $core.method({
  38149. selector: "source:",
  38150. protocol: 'accessing',
  38151. fn: function (aString){
  38152. var self=this;
  38153. self["@source"]=aString;
  38154. return self;
  38155. },
  38156. //>>excludeStart("ide", pragmas.excludeIdeData);
  38157. args: ["aString"],
  38158. source: "source: aString\x0a\x09source := aString",
  38159. referencedClasses: [],
  38160. //>>excludeEnd("ide");
  38161. messageSends: []
  38162. }),
  38163. $globals.IRVerbatim);
  38164. $core.addClass('IRVisitor', $globals.Object, [], 'Compiler-IR');
  38165. $core.addMethod(
  38166. $core.method({
  38167. selector: "visit:",
  38168. protocol: 'visiting',
  38169. fn: function (anIRInstruction){
  38170. var self=this;
  38171. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  38172. return $core.withContext(function($ctx1) {
  38173. //>>excludeEnd("ctx");
  38174. var $1;
  38175. $1=$recv(anIRInstruction)._accept_(self);
  38176. return $1;
  38177. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  38178. }, function($ctx1) {$ctx1.fill(self,"visit:",{anIRInstruction:anIRInstruction},$globals.IRVisitor)});
  38179. //>>excludeEnd("ctx");
  38180. },
  38181. //>>excludeStart("ide", pragmas.excludeIdeData);
  38182. args: ["anIRInstruction"],
  38183. source: "visit: anIRInstruction\x0a\x09^ anIRInstruction accept: self",
  38184. referencedClasses: [],
  38185. //>>excludeEnd("ide");
  38186. messageSends: ["accept:"]
  38187. }),
  38188. $globals.IRVisitor);
  38189. $core.addMethod(
  38190. $core.method({
  38191. selector: "visitIRAssignment:",
  38192. protocol: 'visiting',
  38193. fn: function (anIRAssignment){
  38194. var self=this;
  38195. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  38196. return $core.withContext(function($ctx1) {
  38197. //>>excludeEnd("ctx");
  38198. var $1;
  38199. $1=self._visitIRInstruction_(anIRAssignment);
  38200. return $1;
  38201. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  38202. }, function($ctx1) {$ctx1.fill(self,"visitIRAssignment:",{anIRAssignment:anIRAssignment},$globals.IRVisitor)});
  38203. //>>excludeEnd("ctx");
  38204. },
  38205. //>>excludeStart("ide", pragmas.excludeIdeData);
  38206. args: ["anIRAssignment"],
  38207. source: "visitIRAssignment: anIRAssignment\x0a\x09^ self visitIRInstruction: anIRAssignment",
  38208. referencedClasses: [],
  38209. //>>excludeEnd("ide");
  38210. messageSends: ["visitIRInstruction:"]
  38211. }),
  38212. $globals.IRVisitor);
  38213. $core.addMethod(
  38214. $core.method({
  38215. selector: "visitIRBlockReturn:",
  38216. protocol: 'visiting',
  38217. fn: function (anIRBlockReturn){
  38218. var self=this;
  38219. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  38220. return $core.withContext(function($ctx1) {
  38221. //>>excludeEnd("ctx");
  38222. var $1;
  38223. $1=self._visitIRReturn_(anIRBlockReturn);
  38224. return $1;
  38225. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  38226. }, function($ctx1) {$ctx1.fill(self,"visitIRBlockReturn:",{anIRBlockReturn:anIRBlockReturn},$globals.IRVisitor)});
  38227. //>>excludeEnd("ctx");
  38228. },
  38229. //>>excludeStart("ide", pragmas.excludeIdeData);
  38230. args: ["anIRBlockReturn"],
  38231. source: "visitIRBlockReturn: anIRBlockReturn\x0a\x09^ self visitIRReturn: anIRBlockReturn",
  38232. referencedClasses: [],
  38233. //>>excludeEnd("ide");
  38234. messageSends: ["visitIRReturn:"]
  38235. }),
  38236. $globals.IRVisitor);
  38237. $core.addMethod(
  38238. $core.method({
  38239. selector: "visitIRBlockSequence:",
  38240. protocol: 'visiting',
  38241. fn: function (anIRBlockSequence){
  38242. var self=this;
  38243. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  38244. return $core.withContext(function($ctx1) {
  38245. //>>excludeEnd("ctx");
  38246. var $1;
  38247. $1=self._visitIRSequence_(anIRBlockSequence);
  38248. return $1;
  38249. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  38250. }, function($ctx1) {$ctx1.fill(self,"visitIRBlockSequence:",{anIRBlockSequence:anIRBlockSequence},$globals.IRVisitor)});
  38251. //>>excludeEnd("ctx");
  38252. },
  38253. //>>excludeStart("ide", pragmas.excludeIdeData);
  38254. args: ["anIRBlockSequence"],
  38255. source: "visitIRBlockSequence: anIRBlockSequence\x0a\x09^ self visitIRSequence: anIRBlockSequence",
  38256. referencedClasses: [],
  38257. //>>excludeEnd("ide");
  38258. messageSends: ["visitIRSequence:"]
  38259. }),
  38260. $globals.IRVisitor);
  38261. $core.addMethod(
  38262. $core.method({
  38263. selector: "visitIRClosure:",
  38264. protocol: 'visiting',
  38265. fn: function (anIRClosure){
  38266. var self=this;
  38267. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  38268. return $core.withContext(function($ctx1) {
  38269. //>>excludeEnd("ctx");
  38270. var $1;
  38271. $1=self._visitIRInstruction_(anIRClosure);
  38272. return $1;
  38273. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  38274. }, function($ctx1) {$ctx1.fill(self,"visitIRClosure:",{anIRClosure:anIRClosure},$globals.IRVisitor)});
  38275. //>>excludeEnd("ctx");
  38276. },
  38277. //>>excludeStart("ide", pragmas.excludeIdeData);
  38278. args: ["anIRClosure"],
  38279. source: "visitIRClosure: anIRClosure\x0a\x09^ self visitIRInstruction: anIRClosure",
  38280. referencedClasses: [],
  38281. //>>excludeEnd("ide");
  38282. messageSends: ["visitIRInstruction:"]
  38283. }),
  38284. $globals.IRVisitor);
  38285. $core.addMethod(
  38286. $core.method({
  38287. selector: "visitIRDynamicArray:",
  38288. protocol: 'visiting',
  38289. fn: function (anIRDynamicArray){
  38290. var self=this;
  38291. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  38292. return $core.withContext(function($ctx1) {
  38293. //>>excludeEnd("ctx");
  38294. var $1;
  38295. $1=self._visitIRInstruction_(anIRDynamicArray);
  38296. return $1;
  38297. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  38298. }, function($ctx1) {$ctx1.fill(self,"visitIRDynamicArray:",{anIRDynamicArray:anIRDynamicArray},$globals.IRVisitor)});
  38299. //>>excludeEnd("ctx");
  38300. },
  38301. //>>excludeStart("ide", pragmas.excludeIdeData);
  38302. args: ["anIRDynamicArray"],
  38303. source: "visitIRDynamicArray: anIRDynamicArray\x0a\x09^ self visitIRInstruction: anIRDynamicArray",
  38304. referencedClasses: [],
  38305. //>>excludeEnd("ide");
  38306. messageSends: ["visitIRInstruction:"]
  38307. }),
  38308. $globals.IRVisitor);
  38309. $core.addMethod(
  38310. $core.method({
  38311. selector: "visitIRDynamicDictionary:",
  38312. protocol: 'visiting',
  38313. fn: function (anIRDynamicDictionary){
  38314. var self=this;
  38315. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  38316. return $core.withContext(function($ctx1) {
  38317. //>>excludeEnd("ctx");
  38318. var $1;
  38319. $1=self._visitIRInstruction_(anIRDynamicDictionary);
  38320. return $1;
  38321. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  38322. }, function($ctx1) {$ctx1.fill(self,"visitIRDynamicDictionary:",{anIRDynamicDictionary:anIRDynamicDictionary},$globals.IRVisitor)});
  38323. //>>excludeEnd("ctx");
  38324. },
  38325. //>>excludeStart("ide", pragmas.excludeIdeData);
  38326. args: ["anIRDynamicDictionary"],
  38327. source: "visitIRDynamicDictionary: anIRDynamicDictionary\x0a\x09^ self visitIRInstruction: anIRDynamicDictionary",
  38328. referencedClasses: [],
  38329. //>>excludeEnd("ide");
  38330. messageSends: ["visitIRInstruction:"]
  38331. }),
  38332. $globals.IRVisitor);
  38333. $core.addMethod(
  38334. $core.method({
  38335. selector: "visitIRInlinedClosure:",
  38336. protocol: 'visiting',
  38337. fn: function (anIRInlinedClosure){
  38338. var self=this;
  38339. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  38340. return $core.withContext(function($ctx1) {
  38341. //>>excludeEnd("ctx");
  38342. var $1;
  38343. $1=self._visitIRClosure_(anIRInlinedClosure);
  38344. return $1;
  38345. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  38346. }, function($ctx1) {$ctx1.fill(self,"visitIRInlinedClosure:",{anIRInlinedClosure:anIRInlinedClosure},$globals.IRVisitor)});
  38347. //>>excludeEnd("ctx");
  38348. },
  38349. //>>excludeStart("ide", pragmas.excludeIdeData);
  38350. args: ["anIRInlinedClosure"],
  38351. source: "visitIRInlinedClosure: anIRInlinedClosure\x0a\x09^ self visitIRClosure: anIRInlinedClosure",
  38352. referencedClasses: [],
  38353. //>>excludeEnd("ide");
  38354. messageSends: ["visitIRClosure:"]
  38355. }),
  38356. $globals.IRVisitor);
  38357. $core.addMethod(
  38358. $core.method({
  38359. selector: "visitIRInlinedSequence:",
  38360. protocol: 'visiting',
  38361. fn: function (anIRInlinedSequence){
  38362. var self=this;
  38363. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  38364. return $core.withContext(function($ctx1) {
  38365. //>>excludeEnd("ctx");
  38366. var $1;
  38367. $1=self._visitIRSequence_(anIRInlinedSequence);
  38368. return $1;
  38369. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  38370. }, function($ctx1) {$ctx1.fill(self,"visitIRInlinedSequence:",{anIRInlinedSequence:anIRInlinedSequence},$globals.IRVisitor)});
  38371. //>>excludeEnd("ctx");
  38372. },
  38373. //>>excludeStart("ide", pragmas.excludeIdeData);
  38374. args: ["anIRInlinedSequence"],
  38375. source: "visitIRInlinedSequence: anIRInlinedSequence\x0a\x09^ self visitIRSequence: anIRInlinedSequence",
  38376. referencedClasses: [],
  38377. //>>excludeEnd("ide");
  38378. messageSends: ["visitIRSequence:"]
  38379. }),
  38380. $globals.IRVisitor);
  38381. $core.addMethod(
  38382. $core.method({
  38383. selector: "visitIRInstruction:",
  38384. protocol: 'visiting',
  38385. fn: function (anIRInstruction){
  38386. var self=this;
  38387. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  38388. return $core.withContext(function($ctx1) {
  38389. //>>excludeEnd("ctx");
  38390. $recv($recv(anIRInstruction)._instructions())._do_((function(each){
  38391. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  38392. return $core.withContext(function($ctx2) {
  38393. //>>excludeEnd("ctx");
  38394. return self._visit_(each);
  38395. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  38396. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  38397. //>>excludeEnd("ctx");
  38398. }));
  38399. return anIRInstruction;
  38400. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  38401. }, function($ctx1) {$ctx1.fill(self,"visitIRInstruction:",{anIRInstruction:anIRInstruction},$globals.IRVisitor)});
  38402. //>>excludeEnd("ctx");
  38403. },
  38404. //>>excludeStart("ide", pragmas.excludeIdeData);
  38405. args: ["anIRInstruction"],
  38406. source: "visitIRInstruction: anIRInstruction\x0a\x09anIRInstruction instructions do: [ :each | self visit: each ].\x0a\x09^ anIRInstruction",
  38407. referencedClasses: [],
  38408. //>>excludeEnd("ide");
  38409. messageSends: ["do:", "instructions", "visit:"]
  38410. }),
  38411. $globals.IRVisitor);
  38412. $core.addMethod(
  38413. $core.method({
  38414. selector: "visitIRMethod:",
  38415. protocol: 'visiting',
  38416. fn: function (anIRMethod){
  38417. var self=this;
  38418. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  38419. return $core.withContext(function($ctx1) {
  38420. //>>excludeEnd("ctx");
  38421. var $1;
  38422. $1=self._visitIRInstruction_(anIRMethod);
  38423. return $1;
  38424. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  38425. }, function($ctx1) {$ctx1.fill(self,"visitIRMethod:",{anIRMethod:anIRMethod},$globals.IRVisitor)});
  38426. //>>excludeEnd("ctx");
  38427. },
  38428. //>>excludeStart("ide", pragmas.excludeIdeData);
  38429. args: ["anIRMethod"],
  38430. source: "visitIRMethod: anIRMethod\x0a\x09^ self visitIRInstruction: anIRMethod",
  38431. referencedClasses: [],
  38432. //>>excludeEnd("ide");
  38433. messageSends: ["visitIRInstruction:"]
  38434. }),
  38435. $globals.IRVisitor);
  38436. $core.addMethod(
  38437. $core.method({
  38438. selector: "visitIRNonLocalReturn:",
  38439. protocol: 'visiting',
  38440. fn: function (anIRNonLocalReturn){
  38441. var self=this;
  38442. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  38443. return $core.withContext(function($ctx1) {
  38444. //>>excludeEnd("ctx");
  38445. var $1;
  38446. $1=self._visitIRInstruction_(anIRNonLocalReturn);
  38447. return $1;
  38448. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  38449. }, function($ctx1) {$ctx1.fill(self,"visitIRNonLocalReturn:",{anIRNonLocalReturn:anIRNonLocalReturn},$globals.IRVisitor)});
  38450. //>>excludeEnd("ctx");
  38451. },
  38452. //>>excludeStart("ide", pragmas.excludeIdeData);
  38453. args: ["anIRNonLocalReturn"],
  38454. source: "visitIRNonLocalReturn: anIRNonLocalReturn\x0a\x09^ self visitIRInstruction: anIRNonLocalReturn",
  38455. referencedClasses: [],
  38456. //>>excludeEnd("ide");
  38457. messageSends: ["visitIRInstruction:"]
  38458. }),
  38459. $globals.IRVisitor);
  38460. $core.addMethod(
  38461. $core.method({
  38462. selector: "visitIRNonLocalReturnHandling:",
  38463. protocol: 'visiting',
  38464. fn: function (anIRNonLocalReturnHandling){
  38465. var self=this;
  38466. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  38467. return $core.withContext(function($ctx1) {
  38468. //>>excludeEnd("ctx");
  38469. var $1;
  38470. $1=self._visitIRInstruction_(anIRNonLocalReturnHandling);
  38471. return $1;
  38472. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  38473. }, function($ctx1) {$ctx1.fill(self,"visitIRNonLocalReturnHandling:",{anIRNonLocalReturnHandling:anIRNonLocalReturnHandling},$globals.IRVisitor)});
  38474. //>>excludeEnd("ctx");
  38475. },
  38476. //>>excludeStart("ide", pragmas.excludeIdeData);
  38477. args: ["anIRNonLocalReturnHandling"],
  38478. source: "visitIRNonLocalReturnHandling: anIRNonLocalReturnHandling\x0a\x09^ self visitIRInstruction: anIRNonLocalReturnHandling",
  38479. referencedClasses: [],
  38480. //>>excludeEnd("ide");
  38481. messageSends: ["visitIRInstruction:"]
  38482. }),
  38483. $globals.IRVisitor);
  38484. $core.addMethod(
  38485. $core.method({
  38486. selector: "visitIRReturn:",
  38487. protocol: 'visiting',
  38488. fn: function (anIRReturn){
  38489. var self=this;
  38490. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  38491. return $core.withContext(function($ctx1) {
  38492. //>>excludeEnd("ctx");
  38493. var $1;
  38494. $1=self._visitIRInstruction_(anIRReturn);
  38495. return $1;
  38496. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  38497. }, function($ctx1) {$ctx1.fill(self,"visitIRReturn:",{anIRReturn:anIRReturn},$globals.IRVisitor)});
  38498. //>>excludeEnd("ctx");
  38499. },
  38500. //>>excludeStart("ide", pragmas.excludeIdeData);
  38501. args: ["anIRReturn"],
  38502. source: "visitIRReturn: anIRReturn\x0a\x09^ self visitIRInstruction: anIRReturn",
  38503. referencedClasses: [],
  38504. //>>excludeEnd("ide");
  38505. messageSends: ["visitIRInstruction:"]
  38506. }),
  38507. $globals.IRVisitor);
  38508. $core.addMethod(
  38509. $core.method({
  38510. selector: "visitIRSend:",
  38511. protocol: 'visiting',
  38512. fn: function (anIRSend){
  38513. var self=this;
  38514. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  38515. return $core.withContext(function($ctx1) {
  38516. //>>excludeEnd("ctx");
  38517. var $1;
  38518. $1=self._visitIRInstruction_(anIRSend);
  38519. return $1;
  38520. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  38521. }, function($ctx1) {$ctx1.fill(self,"visitIRSend:",{anIRSend:anIRSend},$globals.IRVisitor)});
  38522. //>>excludeEnd("ctx");
  38523. },
  38524. //>>excludeStart("ide", pragmas.excludeIdeData);
  38525. args: ["anIRSend"],
  38526. source: "visitIRSend: anIRSend\x0a\x09^ self visitIRInstruction: anIRSend",
  38527. referencedClasses: [],
  38528. //>>excludeEnd("ide");
  38529. messageSends: ["visitIRInstruction:"]
  38530. }),
  38531. $globals.IRVisitor);
  38532. $core.addMethod(
  38533. $core.method({
  38534. selector: "visitIRSequence:",
  38535. protocol: 'visiting',
  38536. fn: function (anIRSequence){
  38537. var self=this;
  38538. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  38539. return $core.withContext(function($ctx1) {
  38540. //>>excludeEnd("ctx");
  38541. var $1;
  38542. $1=self._visitIRInstruction_(anIRSequence);
  38543. return $1;
  38544. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  38545. }, function($ctx1) {$ctx1.fill(self,"visitIRSequence:",{anIRSequence:anIRSequence},$globals.IRVisitor)});
  38546. //>>excludeEnd("ctx");
  38547. },
  38548. //>>excludeStart("ide", pragmas.excludeIdeData);
  38549. args: ["anIRSequence"],
  38550. source: "visitIRSequence: anIRSequence\x0a\x09^ self visitIRInstruction: anIRSequence",
  38551. referencedClasses: [],
  38552. //>>excludeEnd("ide");
  38553. messageSends: ["visitIRInstruction:"]
  38554. }),
  38555. $globals.IRVisitor);
  38556. $core.addMethod(
  38557. $core.method({
  38558. selector: "visitIRTempDeclaration:",
  38559. protocol: 'visiting',
  38560. fn: function (anIRTempDeclaration){
  38561. var self=this;
  38562. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  38563. return $core.withContext(function($ctx1) {
  38564. //>>excludeEnd("ctx");
  38565. var $1;
  38566. $1=self._visitIRInstruction_(anIRTempDeclaration);
  38567. return $1;
  38568. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  38569. }, function($ctx1) {$ctx1.fill(self,"visitIRTempDeclaration:",{anIRTempDeclaration:anIRTempDeclaration},$globals.IRVisitor)});
  38570. //>>excludeEnd("ctx");
  38571. },
  38572. //>>excludeStart("ide", pragmas.excludeIdeData);
  38573. args: ["anIRTempDeclaration"],
  38574. source: "visitIRTempDeclaration: anIRTempDeclaration\x0a\x09^ self visitIRInstruction: anIRTempDeclaration",
  38575. referencedClasses: [],
  38576. //>>excludeEnd("ide");
  38577. messageSends: ["visitIRInstruction:"]
  38578. }),
  38579. $globals.IRVisitor);
  38580. $core.addMethod(
  38581. $core.method({
  38582. selector: "visitIRValue:",
  38583. protocol: 'visiting',
  38584. fn: function (anIRValue){
  38585. var self=this;
  38586. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  38587. return $core.withContext(function($ctx1) {
  38588. //>>excludeEnd("ctx");
  38589. var $1;
  38590. $1=self._visitIRInstruction_(anIRValue);
  38591. return $1;
  38592. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  38593. }, function($ctx1) {$ctx1.fill(self,"visitIRValue:",{anIRValue:anIRValue},$globals.IRVisitor)});
  38594. //>>excludeEnd("ctx");
  38595. },
  38596. //>>excludeStart("ide", pragmas.excludeIdeData);
  38597. args: ["anIRValue"],
  38598. source: "visitIRValue: anIRValue\x0a\x09^ self visitIRInstruction: anIRValue",
  38599. referencedClasses: [],
  38600. //>>excludeEnd("ide");
  38601. messageSends: ["visitIRInstruction:"]
  38602. }),
  38603. $globals.IRVisitor);
  38604. $core.addMethod(
  38605. $core.method({
  38606. selector: "visitIRVariable:",
  38607. protocol: 'visiting',
  38608. fn: function (anIRVariable){
  38609. var self=this;
  38610. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  38611. return $core.withContext(function($ctx1) {
  38612. //>>excludeEnd("ctx");
  38613. var $1;
  38614. $1=self._visitIRInstruction_(anIRVariable);
  38615. return $1;
  38616. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  38617. }, function($ctx1) {$ctx1.fill(self,"visitIRVariable:",{anIRVariable:anIRVariable},$globals.IRVisitor)});
  38618. //>>excludeEnd("ctx");
  38619. },
  38620. //>>excludeStart("ide", pragmas.excludeIdeData);
  38621. args: ["anIRVariable"],
  38622. source: "visitIRVariable: anIRVariable\x0a\x09^ self visitIRInstruction: anIRVariable",
  38623. referencedClasses: [],
  38624. //>>excludeEnd("ide");
  38625. messageSends: ["visitIRInstruction:"]
  38626. }),
  38627. $globals.IRVisitor);
  38628. $core.addMethod(
  38629. $core.method({
  38630. selector: "visitIRVerbatim:",
  38631. protocol: 'visiting',
  38632. fn: function (anIRVerbatim){
  38633. var self=this;
  38634. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  38635. return $core.withContext(function($ctx1) {
  38636. //>>excludeEnd("ctx");
  38637. var $1;
  38638. $1=self._visitIRInstruction_(anIRVerbatim);
  38639. return $1;
  38640. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  38641. }, function($ctx1) {$ctx1.fill(self,"visitIRVerbatim:",{anIRVerbatim:anIRVerbatim},$globals.IRVisitor)});
  38642. //>>excludeEnd("ctx");
  38643. },
  38644. //>>excludeStart("ide", pragmas.excludeIdeData);
  38645. args: ["anIRVerbatim"],
  38646. source: "visitIRVerbatim: anIRVerbatim\x0a\x09^ self visitIRInstruction: anIRVerbatim",
  38647. referencedClasses: [],
  38648. //>>excludeEnd("ide");
  38649. messageSends: ["visitIRInstruction:"]
  38650. }),
  38651. $globals.IRVisitor);
  38652. $core.addClass('IRJSTranslator', $globals.IRVisitor, ['stream', 'currentClass'], 'Compiler-IR');
  38653. $core.addMethod(
  38654. $core.method({
  38655. selector: "contents",
  38656. protocol: 'accessing',
  38657. fn: function (){
  38658. var self=this;
  38659. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  38660. return $core.withContext(function($ctx1) {
  38661. //>>excludeEnd("ctx");
  38662. var $1;
  38663. $1=$recv(self._stream())._contents();
  38664. return $1;
  38665. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  38666. }, function($ctx1) {$ctx1.fill(self,"contents",{},$globals.IRJSTranslator)});
  38667. //>>excludeEnd("ctx");
  38668. },
  38669. //>>excludeStart("ide", pragmas.excludeIdeData);
  38670. args: [],
  38671. source: "contents\x0a\x09^ self stream contents",
  38672. referencedClasses: [],
  38673. //>>excludeEnd("ide");
  38674. messageSends: ["contents", "stream"]
  38675. }),
  38676. $globals.IRJSTranslator);
  38677. $core.addMethod(
  38678. $core.method({
  38679. selector: "currentClass",
  38680. protocol: 'accessing',
  38681. fn: function (){
  38682. var self=this;
  38683. var $1;
  38684. $1=self["@currentClass"];
  38685. return $1;
  38686. },
  38687. //>>excludeStart("ide", pragmas.excludeIdeData);
  38688. args: [],
  38689. source: "currentClass\x0a\x09^ currentClass",
  38690. referencedClasses: [],
  38691. //>>excludeEnd("ide");
  38692. messageSends: []
  38693. }),
  38694. $globals.IRJSTranslator);
  38695. $core.addMethod(
  38696. $core.method({
  38697. selector: "currentClass:",
  38698. protocol: 'accessing',
  38699. fn: function (aClass){
  38700. var self=this;
  38701. self["@currentClass"]=aClass;
  38702. return self;
  38703. },
  38704. //>>excludeStart("ide", pragmas.excludeIdeData);
  38705. args: ["aClass"],
  38706. source: "currentClass: aClass\x0a\x09currentClass := aClass",
  38707. referencedClasses: [],
  38708. //>>excludeEnd("ide");
  38709. messageSends: []
  38710. }),
  38711. $globals.IRJSTranslator);
  38712. $core.addMethod(
  38713. $core.method({
  38714. selector: "initialize",
  38715. protocol: 'initialization',
  38716. fn: function (){
  38717. var self=this;
  38718. function $JSStream(){return $globals.JSStream||(typeof JSStream=="undefined"?nil:JSStream)}
  38719. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  38720. return $core.withContext(function($ctx1) {
  38721. //>>excludeEnd("ctx");
  38722. (
  38723. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  38724. $ctx1.supercall = true,
  38725. //>>excludeEnd("ctx");
  38726. $globals.IRJSTranslator.superclass.fn.prototype._initialize.apply($recv(self), []));
  38727. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  38728. $ctx1.supercall = false;
  38729. //>>excludeEnd("ctx");;
  38730. self["@stream"]=$recv($JSStream())._new();
  38731. return self;
  38732. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  38733. }, function($ctx1) {$ctx1.fill(self,"initialize",{},$globals.IRJSTranslator)});
  38734. //>>excludeEnd("ctx");
  38735. },
  38736. //>>excludeStart("ide", pragmas.excludeIdeData);
  38737. args: [],
  38738. source: "initialize\x0a\x09super initialize.\x0a\x09stream := JSStream new.",
  38739. referencedClasses: ["JSStream"],
  38740. //>>excludeEnd("ide");
  38741. messageSends: ["initialize", "new"]
  38742. }),
  38743. $globals.IRJSTranslator);
  38744. $core.addMethod(
  38745. $core.method({
  38746. selector: "stream",
  38747. protocol: 'accessing',
  38748. fn: function (){
  38749. var self=this;
  38750. var $1;
  38751. $1=self["@stream"];
  38752. return $1;
  38753. },
  38754. //>>excludeStart("ide", pragmas.excludeIdeData);
  38755. args: [],
  38756. source: "stream\x0a\x09^ stream",
  38757. referencedClasses: [],
  38758. //>>excludeEnd("ide");
  38759. messageSends: []
  38760. }),
  38761. $globals.IRJSTranslator);
  38762. $core.addMethod(
  38763. $core.method({
  38764. selector: "stream:",
  38765. protocol: 'accessing',
  38766. fn: function (aStream){
  38767. var self=this;
  38768. self["@stream"]=aStream;
  38769. return self;
  38770. },
  38771. //>>excludeStart("ide", pragmas.excludeIdeData);
  38772. args: ["aStream"],
  38773. source: "stream: aStream\x0a\x09stream := aStream",
  38774. referencedClasses: [],
  38775. //>>excludeEnd("ide");
  38776. messageSends: []
  38777. }),
  38778. $globals.IRJSTranslator);
  38779. $core.addMethod(
  38780. $core.method({
  38781. selector: "visitIRAssignment:",
  38782. protocol: 'visiting',
  38783. fn: function (anIRAssignment){
  38784. var self=this;
  38785. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  38786. return $core.withContext(function($ctx1) {
  38787. //>>excludeEnd("ctx");
  38788. var $2,$1;
  38789. $2=$recv(anIRAssignment)._instructions();
  38790. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  38791. $ctx1.sendIdx["instructions"]=1;
  38792. //>>excludeEnd("ctx");
  38793. $1=$recv($2)._first();
  38794. self._visit_($1);
  38795. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  38796. $ctx1.sendIdx["visit:"]=1;
  38797. //>>excludeEnd("ctx");
  38798. $recv(self._stream())._nextPutAssignment();
  38799. self._visit_($recv($recv(anIRAssignment)._instructions())._last());
  38800. return self;
  38801. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  38802. }, function($ctx1) {$ctx1.fill(self,"visitIRAssignment:",{anIRAssignment:anIRAssignment},$globals.IRJSTranslator)});
  38803. //>>excludeEnd("ctx");
  38804. },
  38805. //>>excludeStart("ide", pragmas.excludeIdeData);
  38806. args: ["anIRAssignment"],
  38807. source: "visitIRAssignment: anIRAssignment\x0a\x09self visit: anIRAssignment instructions first.\x0a\x09self stream nextPutAssignment.\x0a\x09self visit: anIRAssignment instructions last.",
  38808. referencedClasses: [],
  38809. //>>excludeEnd("ide");
  38810. messageSends: ["visit:", "first", "instructions", "nextPutAssignment", "stream", "last"]
  38811. }),
  38812. $globals.IRJSTranslator);
  38813. $core.addMethod(
  38814. $core.method({
  38815. selector: "visitIRClosure:",
  38816. protocol: 'visiting',
  38817. fn: function (anIRClosure){
  38818. var self=this;
  38819. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  38820. return $core.withContext(function($ctx1) {
  38821. //>>excludeEnd("ctx");
  38822. var $1,$2;
  38823. $1=self._stream();
  38824. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  38825. $ctx1.sendIdx["stream"]=1;
  38826. //>>excludeEnd("ctx");
  38827. $recv($1)._nextPutClosureWith_arguments_((function(){
  38828. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  38829. return $core.withContext(function($ctx2) {
  38830. //>>excludeEnd("ctx");
  38831. $2=self._stream();
  38832. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  38833. $ctx2.sendIdx["stream"]=2;
  38834. //>>excludeEnd("ctx");
  38835. $recv($2)._nextPutVars_($recv($recv(anIRClosure)._tempDeclarations())._collect_((function(each){
  38836. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  38837. return $core.withContext(function($ctx3) {
  38838. //>>excludeEnd("ctx");
  38839. return $recv($recv(each)._name())._asVariableName();
  38840. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  38841. }, function($ctx3) {$ctx3.fillBlock({each:each},$ctx2,2)});
  38842. //>>excludeEnd("ctx");
  38843. })));
  38844. return $recv(self._stream())._nextPutBlockContextFor_during_(anIRClosure,(function(){
  38845. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  38846. return $core.withContext(function($ctx3) {
  38847. //>>excludeEnd("ctx");
  38848. return (
  38849. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  38850. $ctx3.supercall = true,
  38851. //>>excludeEnd("ctx");
  38852. $globals.IRJSTranslator.superclass.fn.prototype._visitIRClosure_.apply($recv(self), [anIRClosure]));
  38853. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  38854. $ctx3.supercall = false;
  38855. //>>excludeEnd("ctx");;
  38856. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  38857. }, function($ctx3) {$ctx3.fillBlock({},$ctx2,3)});
  38858. //>>excludeEnd("ctx");
  38859. }));
  38860. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  38861. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  38862. //>>excludeEnd("ctx");
  38863. }),$recv(anIRClosure)._arguments());
  38864. return self;
  38865. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  38866. }, function($ctx1) {$ctx1.fill(self,"visitIRClosure:",{anIRClosure:anIRClosure},$globals.IRJSTranslator)});
  38867. //>>excludeEnd("ctx");
  38868. },
  38869. //>>excludeStart("ide", pragmas.excludeIdeData);
  38870. args: ["anIRClosure"],
  38871. 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",
  38872. referencedClasses: [],
  38873. //>>excludeEnd("ide");
  38874. messageSends: ["nextPutClosureWith:arguments:", "stream", "nextPutVars:", "collect:", "tempDeclarations", "asVariableName", "name", "nextPutBlockContextFor:during:", "visitIRClosure:", "arguments"]
  38875. }),
  38876. $globals.IRJSTranslator);
  38877. $core.addMethod(
  38878. $core.method({
  38879. selector: "visitIRDynamicArray:",
  38880. protocol: 'visiting',
  38881. fn: function (anIRDynamicArray){
  38882. var self=this;
  38883. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  38884. return $core.withContext(function($ctx1) {
  38885. //>>excludeEnd("ctx");
  38886. var $1;
  38887. $1=self._stream();
  38888. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  38889. $ctx1.sendIdx["stream"]=1;
  38890. //>>excludeEnd("ctx");
  38891. $recv($1)._nextPutAll_("[");
  38892. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  38893. $ctx1.sendIdx["nextPutAll:"]=1;
  38894. //>>excludeEnd("ctx");
  38895. $recv($recv(anIRDynamicArray)._instructions())._do_separatedBy_((function(each){
  38896. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  38897. return $core.withContext(function($ctx2) {
  38898. //>>excludeEnd("ctx");
  38899. return self._visit_(each);
  38900. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  38901. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  38902. //>>excludeEnd("ctx");
  38903. }),(function(){
  38904. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  38905. return $core.withContext(function($ctx2) {
  38906. //>>excludeEnd("ctx");
  38907. return $recv(self._stream())._nextPutAll_(",");
  38908. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  38909. $ctx2.sendIdx["nextPutAll:"]=2;
  38910. //>>excludeEnd("ctx");
  38911. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  38912. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
  38913. //>>excludeEnd("ctx");
  38914. }));
  38915. $recv(self["@stream"])._nextPutAll_("]");
  38916. return self;
  38917. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  38918. }, function($ctx1) {$ctx1.fill(self,"visitIRDynamicArray:",{anIRDynamicArray:anIRDynamicArray},$globals.IRJSTranslator)});
  38919. //>>excludeEnd("ctx");
  38920. },
  38921. //>>excludeStart("ide", pragmas.excludeIdeData);
  38922. args: ["anIRDynamicArray"],
  38923. source: "visitIRDynamicArray: anIRDynamicArray\x0a\x09self stream nextPutAll: '['.\x0a\x09anIRDynamicArray instructions\x0a\x09\x09do: [ :each | self visit: each ]\x0a\x09\x09separatedBy: [ self stream nextPutAll: ',' ].\x0a\x09stream nextPutAll: ']'",
  38924. referencedClasses: [],
  38925. //>>excludeEnd("ide");
  38926. messageSends: ["nextPutAll:", "stream", "do:separatedBy:", "instructions", "visit:"]
  38927. }),
  38928. $globals.IRJSTranslator);
  38929. $core.addMethod(
  38930. $core.method({
  38931. selector: "visitIRDynamicDictionary:",
  38932. protocol: 'visiting',
  38933. fn: function (anIRDynamicDictionary){
  38934. var self=this;
  38935. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  38936. return $core.withContext(function($ctx1) {
  38937. //>>excludeEnd("ctx");
  38938. var $1,$2;
  38939. $1=self._stream();
  38940. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  38941. $ctx1.sendIdx["stream"]=1;
  38942. //>>excludeEnd("ctx");
  38943. $recv($1)._nextPutAll_("$globals.HashedCollection._newFromPairs_([");
  38944. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  38945. $ctx1.sendIdx["nextPutAll:"]=1;
  38946. //>>excludeEnd("ctx");
  38947. $recv($recv(anIRDynamicDictionary)._instructions())._do_separatedBy_((function(each){
  38948. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  38949. return $core.withContext(function($ctx2) {
  38950. //>>excludeEnd("ctx");
  38951. return self._visit_(each);
  38952. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  38953. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  38954. //>>excludeEnd("ctx");
  38955. }),(function(){
  38956. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  38957. return $core.withContext(function($ctx2) {
  38958. //>>excludeEnd("ctx");
  38959. $2=self._stream();
  38960. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  38961. $ctx2.sendIdx["stream"]=2;
  38962. //>>excludeEnd("ctx");
  38963. return $recv($2)._nextPutAll_(",");
  38964. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  38965. $ctx2.sendIdx["nextPutAll:"]=2;
  38966. //>>excludeEnd("ctx");
  38967. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  38968. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
  38969. //>>excludeEnd("ctx");
  38970. }));
  38971. $recv(self._stream())._nextPutAll_("])");
  38972. return self;
  38973. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  38974. }, function($ctx1) {$ctx1.fill(self,"visitIRDynamicDictionary:",{anIRDynamicDictionary:anIRDynamicDictionary},$globals.IRJSTranslator)});
  38975. //>>excludeEnd("ctx");
  38976. },
  38977. //>>excludeStart("ide", pragmas.excludeIdeData);
  38978. args: ["anIRDynamicDictionary"],
  38979. source: "visitIRDynamicDictionary: anIRDynamicDictionary\x0a\x09self stream nextPutAll: '$globals.HashedCollection._newFromPairs_(['.\x0a\x09\x09anIRDynamicDictionary instructions\x0a\x09\x09\x09do: [ :each | self visit: each ]\x0a\x09\x09\x09separatedBy: [ self stream nextPutAll: ',' ].\x0a\x09self stream nextPutAll: '])'",
  38980. referencedClasses: [],
  38981. //>>excludeEnd("ide");
  38982. messageSends: ["nextPutAll:", "stream", "do:separatedBy:", "instructions", "visit:"]
  38983. }),
  38984. $globals.IRJSTranslator);
  38985. $core.addMethod(
  38986. $core.method({
  38987. selector: "visitIRMethod:",
  38988. protocol: 'visiting',
  38989. fn: function (anIRMethod){
  38990. var self=this;
  38991. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  38992. return $core.withContext(function($ctx1) {
  38993. //>>excludeEnd("ctx");
  38994. var $1,$2,$3,$4,$5,$6,$8,$7,$9,$10;
  38995. $1=self._stream();
  38996. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  38997. $ctx1.sendIdx["stream"]=1;
  38998. //>>excludeEnd("ctx");
  38999. $recv($1)._nextPutMethodDeclaration_with_(anIRMethod,(function(){
  39000. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  39001. return $core.withContext(function($ctx2) {
  39002. //>>excludeEnd("ctx");
  39003. $2=self._stream();
  39004. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  39005. $ctx2.sendIdx["stream"]=2;
  39006. //>>excludeEnd("ctx");
  39007. return $recv($2)._nextPutFunctionWith_arguments_((function(){
  39008. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  39009. return $core.withContext(function($ctx3) {
  39010. //>>excludeEnd("ctx");
  39011. $3=self._stream();
  39012. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  39013. $ctx3.sendIdx["stream"]=3;
  39014. //>>excludeEnd("ctx");
  39015. $4=$recv($recv(anIRMethod)._tempDeclarations())._collect_((function(each){
  39016. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  39017. return $core.withContext(function($ctx4) {
  39018. //>>excludeEnd("ctx");
  39019. return $recv($recv(each)._name())._asVariableName();
  39020. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  39021. }, function($ctx4) {$ctx4.fillBlock({each:each},$ctx3,3)});
  39022. //>>excludeEnd("ctx");
  39023. }));
  39024. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  39025. $ctx3.sendIdx["collect:"]=1;
  39026. //>>excludeEnd("ctx");
  39027. $recv($3)._nextPutVars_($4);
  39028. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  39029. $ctx3.sendIdx["nextPutVars:"]=1;
  39030. //>>excludeEnd("ctx");
  39031. $recv($recv(anIRMethod)._classReferences())._do_((function(each){
  39032. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  39033. return $core.withContext(function($ctx4) {
  39034. //>>excludeEnd("ctx");
  39035. $5=self._stream();
  39036. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  39037. $ctx4.sendIdx["stream"]=4;
  39038. //>>excludeEnd("ctx");
  39039. return $recv($5)._nextPutClassRefFunction_(each);
  39040. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  39041. }, function($ctx4) {$ctx4.fillBlock({each:each},$ctx3,4)});
  39042. //>>excludeEnd("ctx");
  39043. }));
  39044. $6=self._stream();
  39045. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  39046. $ctx3.sendIdx["stream"]=5;
  39047. //>>excludeEnd("ctx");
  39048. return $recv($6)._nextPutContextFor_during_(anIRMethod,(function(){
  39049. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  39050. return $core.withContext(function($ctx4) {
  39051. //>>excludeEnd("ctx");
  39052. $8=$recv(anIRMethod)._internalVariables();
  39053. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  39054. $ctx4.sendIdx["internalVariables"]=1;
  39055. //>>excludeEnd("ctx");
  39056. $7=$recv($8)._notEmpty();
  39057. if($core.assert($7)){
  39058. $9=self._stream();
  39059. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  39060. $ctx4.sendIdx["stream"]=6;
  39061. //>>excludeEnd("ctx");
  39062. $recv($9)._nextPutVars_($recv($recv($recv(anIRMethod)._internalVariables())._asSet())._collect_((function(each){
  39063. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  39064. return $core.withContext(function($ctx5) {
  39065. //>>excludeEnd("ctx");
  39066. return $recv($recv(each)._variable())._alias();
  39067. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  39068. }, function($ctx5) {$ctx5.fillBlock({each:each},$ctx4,7)});
  39069. //>>excludeEnd("ctx");
  39070. })));
  39071. };
  39072. $10=$recv($recv(anIRMethod)._scope())._hasNonLocalReturn();
  39073. if($core.assert($10)){
  39074. return $recv(self._stream())._nextPutNonLocalReturnHandlingWith_((function(){
  39075. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  39076. return $core.withContext(function($ctx5) {
  39077. //>>excludeEnd("ctx");
  39078. return (
  39079. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  39080. $ctx5.supercall = true,
  39081. //>>excludeEnd("ctx");
  39082. $globals.IRJSTranslator.superclass.fn.prototype._visitIRMethod_.apply($recv(self), [anIRMethod]));
  39083. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  39084. $ctx5.supercall = false;
  39085. //>>excludeEnd("ctx");;
  39086. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  39087. $ctx5.sendIdx["visitIRMethod:"]=1;
  39088. //>>excludeEnd("ctx");
  39089. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  39090. }, function($ctx5) {$ctx5.fillBlock({},$ctx4,9)});
  39091. //>>excludeEnd("ctx");
  39092. }));
  39093. } else {
  39094. return (
  39095. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  39096. $ctx4.supercall = true,
  39097. //>>excludeEnd("ctx");
  39098. $globals.IRJSTranslator.superclass.fn.prototype._visitIRMethod_.apply($recv(self), [anIRMethod]));
  39099. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  39100. $ctx4.supercall = false;
  39101. //>>excludeEnd("ctx");;
  39102. };
  39103. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  39104. }, function($ctx4) {$ctx4.fillBlock({},$ctx3,5)});
  39105. //>>excludeEnd("ctx");
  39106. }));
  39107. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  39108. }, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)});
  39109. //>>excludeEnd("ctx");
  39110. }),$recv(anIRMethod)._arguments());
  39111. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  39112. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  39113. //>>excludeEnd("ctx");
  39114. }));
  39115. return self;
  39116. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  39117. }, function($ctx1) {$ctx1.fill(self,"visitIRMethod:",{anIRMethod:anIRMethod},$globals.IRJSTranslator)});
  39118. //>>excludeEnd("ctx");
  39119. },
  39120. //>>excludeStart("ide", pragmas.excludeIdeData);
  39121. args: ["anIRMethod"],
  39122. source: "visitIRMethod: anIRMethod\x0a\x0a\x09self stream\x0a\x09\x09nextPutMethodDeclaration: anIRMethod\x0a\x09\x09with: [ self 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\x09anIRMethod classReferences do: [ :each | self stream nextPutClassRefFunction: each ].\x0a\x09\x09\x09\x09self stream nextPutContextFor: anIRMethod during: [\x0a\x09\x09\x09\x09anIRMethod internalVariables notEmpty ifTrue: [\x0a\x09\x09\x09\x09\x09self stream nextPutVars: (anIRMethod internalVariables asSet collect: [ :each |\x0a\x09\x09\x09\x09\x09\x09each variable alias ]) ].\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 ]",
  39123. referencedClasses: [],
  39124. //>>excludeEnd("ide");
  39125. messageSends: ["nextPutMethodDeclaration:with:", "stream", "nextPutFunctionWith:arguments:", "nextPutVars:", "collect:", "tempDeclarations", "asVariableName", "name", "do:", "classReferences", "nextPutClassRefFunction:", "nextPutContextFor:during:", "ifTrue:", "notEmpty", "internalVariables", "asSet", "alias", "variable", "ifTrue:ifFalse:", "hasNonLocalReturn", "scope", "nextPutNonLocalReturnHandlingWith:", "visitIRMethod:", "arguments"]
  39126. }),
  39127. $globals.IRJSTranslator);
  39128. $core.addMethod(
  39129. $core.method({
  39130. selector: "visitIRNonLocalReturn:",
  39131. protocol: 'visiting',
  39132. fn: function (anIRNonLocalReturn){
  39133. var self=this;
  39134. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  39135. return $core.withContext(function($ctx1) {
  39136. //>>excludeEnd("ctx");
  39137. $recv(self._stream())._nextPutNonLocalReturnWith_((function(){
  39138. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  39139. return $core.withContext(function($ctx2) {
  39140. //>>excludeEnd("ctx");
  39141. return (
  39142. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  39143. $ctx2.supercall = true,
  39144. //>>excludeEnd("ctx");
  39145. $globals.IRJSTranslator.superclass.fn.prototype._visitIRNonLocalReturn_.apply($recv(self), [anIRNonLocalReturn]));
  39146. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  39147. $ctx2.supercall = false;
  39148. //>>excludeEnd("ctx");;
  39149. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  39150. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  39151. //>>excludeEnd("ctx");
  39152. }));
  39153. return self;
  39154. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  39155. }, function($ctx1) {$ctx1.fill(self,"visitIRNonLocalReturn:",{anIRNonLocalReturn:anIRNonLocalReturn},$globals.IRJSTranslator)});
  39156. //>>excludeEnd("ctx");
  39157. },
  39158. //>>excludeStart("ide", pragmas.excludeIdeData);
  39159. args: ["anIRNonLocalReturn"],
  39160. source: "visitIRNonLocalReturn: anIRNonLocalReturn\x0a\x09self stream nextPutNonLocalReturnWith: [\x0a\x09\x09super visitIRNonLocalReturn: anIRNonLocalReturn ]",
  39161. referencedClasses: [],
  39162. //>>excludeEnd("ide");
  39163. messageSends: ["nextPutNonLocalReturnWith:", "stream", "visitIRNonLocalReturn:"]
  39164. }),
  39165. $globals.IRJSTranslator);
  39166. $core.addMethod(
  39167. $core.method({
  39168. selector: "visitIRReturn:",
  39169. protocol: 'visiting',
  39170. fn: function (anIRReturn){
  39171. var self=this;
  39172. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  39173. return $core.withContext(function($ctx1) {
  39174. //>>excludeEnd("ctx");
  39175. $recv(self._stream())._nextPutReturnWith_((function(){
  39176. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  39177. return $core.withContext(function($ctx2) {
  39178. //>>excludeEnd("ctx");
  39179. return (
  39180. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  39181. $ctx2.supercall = true,
  39182. //>>excludeEnd("ctx");
  39183. $globals.IRJSTranslator.superclass.fn.prototype._visitIRReturn_.apply($recv(self), [anIRReturn]));
  39184. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  39185. $ctx2.supercall = false;
  39186. //>>excludeEnd("ctx");;
  39187. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  39188. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  39189. //>>excludeEnd("ctx");
  39190. }));
  39191. return self;
  39192. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  39193. }, function($ctx1) {$ctx1.fill(self,"visitIRReturn:",{anIRReturn:anIRReturn},$globals.IRJSTranslator)});
  39194. //>>excludeEnd("ctx");
  39195. },
  39196. //>>excludeStart("ide", pragmas.excludeIdeData);
  39197. args: ["anIRReturn"],
  39198. source: "visitIRReturn: anIRReturn\x0a\x09self stream nextPutReturnWith: [\x0a\x09\x09super visitIRReturn: anIRReturn ]",
  39199. referencedClasses: [],
  39200. //>>excludeEnd("ide");
  39201. messageSends: ["nextPutReturnWith:", "stream", "visitIRReturn:"]
  39202. }),
  39203. $globals.IRJSTranslator);
  39204. $core.addMethod(
  39205. $core.method({
  39206. selector: "visitIRSend:",
  39207. protocol: 'visiting',
  39208. fn: function (anIRSend){
  39209. var self=this;
  39210. var sends;
  39211. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  39212. return $core.withContext(function($ctx1) {
  39213. //>>excludeEnd("ctx");
  39214. var $1,$2,$receiver;
  39215. sends=$recv($recv($recv($recv(anIRSend)._method())._sendIndexes())._at_($recv(anIRSend)._selector()))._size();
  39216. $1=$recv(anIRSend)._classSend();
  39217. if(($receiver = $1) == null || $receiver.isNil){
  39218. self._visitSend_(anIRSend);
  39219. } else {
  39220. self._visitSuperSend_(anIRSend);
  39221. };
  39222. $2=$recv($recv(sends).__gt((1)))._and_((function(){
  39223. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  39224. return $core.withContext(function($ctx2) {
  39225. //>>excludeEnd("ctx");
  39226. return $recv($recv(anIRSend)._index()).__lt(sends);
  39227. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  39228. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,3)});
  39229. //>>excludeEnd("ctx");
  39230. }));
  39231. if($core.assert($2)){
  39232. $recv(self._stream())._nextPutSendIndexFor_(anIRSend);
  39233. };
  39234. return self;
  39235. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  39236. }, function($ctx1) {$ctx1.fill(self,"visitIRSend:",{anIRSend:anIRSend,sends:sends},$globals.IRJSTranslator)});
  39237. //>>excludeEnd("ctx");
  39238. },
  39239. //>>excludeStart("ide", pragmas.excludeIdeData);
  39240. args: ["anIRSend"],
  39241. source: "visitIRSend: anIRSend\x0a\x09| sends |\x0a\x09sends := (anIRSend method sendIndexes at: anIRSend selector) size.\x0a\x09\x0a\x09anIRSend classSend\x0a\x09\x09ifNil: [ self visitSend: anIRSend ]\x0a\x09\x09ifNotNil: [ self visitSuperSend: anIRSend ].\x0a\x09\x09\x0a\x09(sends > 1 and: [ anIRSend index < sends ])\x0a\x09\x09ifTrue: [ self stream nextPutSendIndexFor: anIRSend ]",
  39242. referencedClasses: [],
  39243. //>>excludeEnd("ide");
  39244. messageSends: ["size", "at:", "sendIndexes", "method", "selector", "ifNil:ifNotNil:", "classSend", "visitSend:", "visitSuperSend:", "ifTrue:", "and:", ">", "<", "index", "nextPutSendIndexFor:", "stream"]
  39245. }),
  39246. $globals.IRJSTranslator);
  39247. $core.addMethod(
  39248. $core.method({
  39249. selector: "visitIRSequence:",
  39250. protocol: 'visiting',
  39251. fn: function (anIRSequence){
  39252. var self=this;
  39253. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  39254. return $core.withContext(function($ctx1) {
  39255. //>>excludeEnd("ctx");
  39256. var $1;
  39257. $1=self._stream();
  39258. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  39259. $ctx1.sendIdx["stream"]=1;
  39260. //>>excludeEnd("ctx");
  39261. $recv($1)._nextPutSequenceWith_((function(){
  39262. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  39263. return $core.withContext(function($ctx2) {
  39264. //>>excludeEnd("ctx");
  39265. return $recv($recv(anIRSequence)._instructions())._do_((function(each){
  39266. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  39267. return $core.withContext(function($ctx3) {
  39268. //>>excludeEnd("ctx");
  39269. return $recv(self._stream())._nextPutStatementWith_(self._visit_(each));
  39270. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  39271. }, function($ctx3) {$ctx3.fillBlock({each:each},$ctx2,2)});
  39272. //>>excludeEnd("ctx");
  39273. }));
  39274. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  39275. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  39276. //>>excludeEnd("ctx");
  39277. }));
  39278. return self;
  39279. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  39280. }, function($ctx1) {$ctx1.fill(self,"visitIRSequence:",{anIRSequence:anIRSequence},$globals.IRJSTranslator)});
  39281. //>>excludeEnd("ctx");
  39282. },
  39283. //>>excludeStart("ide", pragmas.excludeIdeData);
  39284. args: ["anIRSequence"],
  39285. source: "visitIRSequence: anIRSequence\x0a\x09self stream nextPutSequenceWith: [\x0a\x09\x09anIRSequence instructions do: [ :each |\x0a\x09\x09\x09self stream nextPutStatementWith: (self visit: each) ] ]",
  39286. referencedClasses: [],
  39287. //>>excludeEnd("ide");
  39288. messageSends: ["nextPutSequenceWith:", "stream", "do:", "instructions", "nextPutStatementWith:", "visit:"]
  39289. }),
  39290. $globals.IRJSTranslator);
  39291. $core.addMethod(
  39292. $core.method({
  39293. selector: "visitIRTempDeclaration:",
  39294. protocol: 'visiting',
  39295. fn: function (anIRTempDeclaration){
  39296. var self=this;
  39297. return self;
  39298. },
  39299. //>>excludeStart("ide", pragmas.excludeIdeData);
  39300. args: ["anIRTempDeclaration"],
  39301. source: "visitIRTempDeclaration: anIRTempDeclaration\x0a\x09\x22self stream\x0a\x09\x09nextPutAll: 'var ', anIRTempDeclaration name asVariableName, ';';\x0a\x09\x09lf\x22",
  39302. referencedClasses: [],
  39303. //>>excludeEnd("ide");
  39304. messageSends: []
  39305. }),
  39306. $globals.IRJSTranslator);
  39307. $core.addMethod(
  39308. $core.method({
  39309. selector: "visitIRValue:",
  39310. protocol: 'visiting',
  39311. fn: function (anIRValue){
  39312. var self=this;
  39313. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  39314. return $core.withContext(function($ctx1) {
  39315. //>>excludeEnd("ctx");
  39316. $recv(self._stream())._nextPutAll_($recv($recv(anIRValue)._value())._asJavascript());
  39317. return self;
  39318. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  39319. }, function($ctx1) {$ctx1.fill(self,"visitIRValue:",{anIRValue:anIRValue},$globals.IRJSTranslator)});
  39320. //>>excludeEnd("ctx");
  39321. },
  39322. //>>excludeStart("ide", pragmas.excludeIdeData);
  39323. args: ["anIRValue"],
  39324. source: "visitIRValue: anIRValue\x0a\x09self stream nextPutAll: anIRValue value asJavascript",
  39325. referencedClasses: [],
  39326. //>>excludeEnd("ide");
  39327. messageSends: ["nextPutAll:", "stream", "asJavascript", "value"]
  39328. }),
  39329. $globals.IRJSTranslator);
  39330. $core.addMethod(
  39331. $core.method({
  39332. selector: "visitIRVariable:",
  39333. protocol: 'visiting',
  39334. fn: function (anIRVariable){
  39335. var self=this;
  39336. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  39337. return $core.withContext(function($ctx1) {
  39338. //>>excludeEnd("ctx");
  39339. var $3,$2,$1,$4;
  39340. $3=$recv(anIRVariable)._variable();
  39341. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  39342. $ctx1.sendIdx["variable"]=1;
  39343. //>>excludeEnd("ctx");
  39344. $2=$recv($3)._name();
  39345. $1=$recv($2).__eq("thisContext");
  39346. if($core.assert($1)){
  39347. $4=self._stream();
  39348. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  39349. $ctx1.sendIdx["stream"]=1;
  39350. //>>excludeEnd("ctx");
  39351. $recv($4)._nextPutAll_("$core.getThisContext()");
  39352. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  39353. $ctx1.sendIdx["nextPutAll:"]=1;
  39354. //>>excludeEnd("ctx");
  39355. } else {
  39356. $recv(self._stream())._nextPutAll_($recv($recv(anIRVariable)._variable())._alias());
  39357. };
  39358. return self;
  39359. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  39360. }, function($ctx1) {$ctx1.fill(self,"visitIRVariable:",{anIRVariable:anIRVariable},$globals.IRJSTranslator)});
  39361. //>>excludeEnd("ctx");
  39362. },
  39363. //>>excludeStart("ide", pragmas.excludeIdeData);
  39364. args: ["anIRVariable"],
  39365. source: "visitIRVariable: anIRVariable\x0a\x09anIRVariable variable name = 'thisContext'\x0a\x09\x09ifTrue: [ self stream nextPutAll: '$core.getThisContext()' ]\x0a\x09\x09ifFalse: [ self stream nextPutAll: anIRVariable variable alias ]",
  39366. referencedClasses: [],
  39367. //>>excludeEnd("ide");
  39368. messageSends: ["ifTrue:ifFalse:", "=", "name", "variable", "nextPutAll:", "stream", "alias"]
  39369. }),
  39370. $globals.IRJSTranslator);
  39371. $core.addMethod(
  39372. $core.method({
  39373. selector: "visitIRVerbatim:",
  39374. protocol: 'visiting',
  39375. fn: function (anIRVerbatim){
  39376. var self=this;
  39377. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  39378. return $core.withContext(function($ctx1) {
  39379. //>>excludeEnd("ctx");
  39380. var $1;
  39381. $1=self._stream();
  39382. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  39383. $ctx1.sendIdx["stream"]=1;
  39384. //>>excludeEnd("ctx");
  39385. $recv($1)._nextPutStatementWith_((function(){
  39386. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  39387. return $core.withContext(function($ctx2) {
  39388. //>>excludeEnd("ctx");
  39389. return $recv(self._stream())._nextPutAll_($recv(anIRVerbatim)._source());
  39390. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  39391. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  39392. //>>excludeEnd("ctx");
  39393. }));
  39394. return self;
  39395. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  39396. }, function($ctx1) {$ctx1.fill(self,"visitIRVerbatim:",{anIRVerbatim:anIRVerbatim},$globals.IRJSTranslator)});
  39397. //>>excludeEnd("ctx");
  39398. },
  39399. //>>excludeStart("ide", pragmas.excludeIdeData);
  39400. args: ["anIRVerbatim"],
  39401. source: "visitIRVerbatim: anIRVerbatim\x0a\x09self stream nextPutStatementWith: [\x0a\x09\x09self stream nextPutAll: anIRVerbatim source ]",
  39402. referencedClasses: [],
  39403. //>>excludeEnd("ide");
  39404. messageSends: ["nextPutStatementWith:", "stream", "nextPutAll:", "source"]
  39405. }),
  39406. $globals.IRJSTranslator);
  39407. $core.addMethod(
  39408. $core.method({
  39409. selector: "visitReceiver:",
  39410. protocol: 'visiting',
  39411. fn: function (anIRInstruction){
  39412. var self=this;
  39413. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  39414. return $core.withContext(function($ctx1) {
  39415. //>>excludeEnd("ctx");
  39416. var $1,$2,$3;
  39417. $1=$recv(anIRInstruction)._needsBoxingAsReceiver();
  39418. if(!$core.assert($1)){
  39419. $2=self._visit_(anIRInstruction);
  39420. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  39421. $ctx1.sendIdx["visit:"]=1;
  39422. //>>excludeEnd("ctx");
  39423. return $2;
  39424. };
  39425. $3=self._stream();
  39426. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  39427. $ctx1.sendIdx["stream"]=1;
  39428. //>>excludeEnd("ctx");
  39429. $recv($3)._nextPutAll_("$recv(");
  39430. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  39431. $ctx1.sendIdx["nextPutAll:"]=1;
  39432. //>>excludeEnd("ctx");
  39433. self._visit_(anIRInstruction);
  39434. $recv(self._stream())._nextPutAll_(")");
  39435. return self;
  39436. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  39437. }, function($ctx1) {$ctx1.fill(self,"visitReceiver:",{anIRInstruction:anIRInstruction},$globals.IRJSTranslator)});
  39438. //>>excludeEnd("ctx");
  39439. },
  39440. //>>excludeStart("ide", pragmas.excludeIdeData);
  39441. args: ["anIRInstruction"],
  39442. source: "visitReceiver: anIRInstruction\x0a\x09anIRInstruction needsBoxingAsReceiver ifFalse: [ ^ self visit: anIRInstruction ].\x0a\x09\x0a\x09self stream nextPutAll: '$recv('.\x0a\x09self visit: anIRInstruction.\x0a\x09self stream nextPutAll: ')'",
  39443. referencedClasses: [],
  39444. //>>excludeEnd("ide");
  39445. messageSends: ["ifFalse:", "needsBoxingAsReceiver", "visit:", "nextPutAll:", "stream"]
  39446. }),
  39447. $globals.IRJSTranslator);
  39448. $core.addMethod(
  39449. $core.method({
  39450. selector: "visitSend:",
  39451. protocol: 'visiting',
  39452. fn: function (anIRSend){
  39453. var self=this;
  39454. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  39455. return $core.withContext(function($ctx1) {
  39456. //>>excludeEnd("ctx");
  39457. var $2,$1,$3,$4,$5;
  39458. $2=$recv(anIRSend)._instructions();
  39459. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  39460. $ctx1.sendIdx["instructions"]=1;
  39461. //>>excludeEnd("ctx");
  39462. $1=$recv($2)._first();
  39463. self._visitReceiver_($1);
  39464. $3=self._stream();
  39465. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  39466. $ctx1.sendIdx["stream"]=1;
  39467. //>>excludeEnd("ctx");
  39468. $4=$recv(".".__comma($recv($recv(anIRSend)._selector())._asJavaScriptMethodName())).__comma("(");
  39469. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  39470. $ctx1.sendIdx[","]=1;
  39471. //>>excludeEnd("ctx");
  39472. $recv($3)._nextPutAll_($4);
  39473. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  39474. $ctx1.sendIdx["nextPutAll:"]=1;
  39475. //>>excludeEnd("ctx");
  39476. $recv($recv($recv(anIRSend)._instructions())._allButFirst())._do_separatedBy_((function(each){
  39477. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  39478. return $core.withContext(function($ctx2) {
  39479. //>>excludeEnd("ctx");
  39480. return self._visit_(each);
  39481. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  39482. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  39483. //>>excludeEnd("ctx");
  39484. }),(function(){
  39485. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  39486. return $core.withContext(function($ctx2) {
  39487. //>>excludeEnd("ctx");
  39488. $5=self._stream();
  39489. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  39490. $ctx2.sendIdx["stream"]=2;
  39491. //>>excludeEnd("ctx");
  39492. return $recv($5)._nextPutAll_(",");
  39493. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  39494. $ctx2.sendIdx["nextPutAll:"]=2;
  39495. //>>excludeEnd("ctx");
  39496. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  39497. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
  39498. //>>excludeEnd("ctx");
  39499. }));
  39500. $recv(self._stream())._nextPutAll_(")");
  39501. return self;
  39502. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  39503. }, function($ctx1) {$ctx1.fill(self,"visitSend:",{anIRSend:anIRSend},$globals.IRJSTranslator)});
  39504. //>>excludeEnd("ctx");
  39505. },
  39506. //>>excludeStart("ide", pragmas.excludeIdeData);
  39507. args: ["anIRSend"],
  39508. source: "visitSend: anIRSend\x0a\x09self visitReceiver: anIRSend instructions first.\x0a\x09self stream nextPutAll: '.', anIRSend selector asJavaScriptMethodName, '('.\x0a\x09anIRSend instructions allButFirst\x0a\x09\x09do: [ :each | self visit: each ]\x0a\x09\x09separatedBy: [ self stream nextPutAll: ',' ].\x0a\x09self stream nextPutAll: ')'",
  39509. referencedClasses: [],
  39510. //>>excludeEnd("ide");
  39511. messageSends: ["visitReceiver:", "first", "instructions", "nextPutAll:", "stream", ",", "asJavaScriptMethodName", "selector", "do:separatedBy:", "allButFirst", "visit:"]
  39512. }),
  39513. $globals.IRJSTranslator);
  39514. $core.addMethod(
  39515. $core.method({
  39516. selector: "visitSuperSend:",
  39517. protocol: 'visiting',
  39518. fn: function (anIRSend){
  39519. var self=this;
  39520. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  39521. return $core.withContext(function($ctx1) {
  39522. //>>excludeEnd("ctx");
  39523. var $1,$2,$5,$4,$3,$6,$7,$8,$10,$9,$11,$12,$13,$14;
  39524. $1=self._stream();
  39525. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  39526. $ctx1.sendIdx["stream"]=1;
  39527. //>>excludeEnd("ctx");
  39528. $recv($1)._nextPutAll_("(");
  39529. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  39530. $ctx1.sendIdx["nextPutAll:"]=1;
  39531. //>>excludeEnd("ctx");
  39532. $recv($1)._lf();
  39533. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  39534. $ctx1.sendIdx["lf"]=1;
  39535. //>>excludeEnd("ctx");
  39536. $recv($1)._nextPutAll_("//>>excludeStart(\x22ctx\x22, pragmas.excludeDebugContexts);");
  39537. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  39538. $ctx1.sendIdx["nextPutAll:"]=2;
  39539. //>>excludeEnd("ctx");
  39540. $recv($1)._lf();
  39541. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  39542. $ctx1.sendIdx["lf"]=2;
  39543. //>>excludeEnd("ctx");
  39544. $2=$1;
  39545. $5=$recv(anIRSend)._scope();
  39546. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  39547. $ctx1.sendIdx["scope"]=1;
  39548. //>>excludeEnd("ctx");
  39549. $4=$recv($5)._alias();
  39550. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  39551. $ctx1.sendIdx["alias"]=1;
  39552. //>>excludeEnd("ctx");
  39553. $3=$recv($4).__comma(".supercall = true, ");
  39554. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  39555. $ctx1.sendIdx[","]=1;
  39556. //>>excludeEnd("ctx");
  39557. $recv($2)._nextPutAll_($3);
  39558. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  39559. $ctx1.sendIdx["nextPutAll:"]=3;
  39560. //>>excludeEnd("ctx");
  39561. $recv($1)._lf();
  39562. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  39563. $ctx1.sendIdx["lf"]=3;
  39564. //>>excludeEnd("ctx");
  39565. $recv($1)._nextPutAll_("//>>excludeEnd(\x22ctx\x22);");
  39566. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  39567. $ctx1.sendIdx["nextPutAll:"]=4;
  39568. //>>excludeEnd("ctx");
  39569. $recv($1)._lf();
  39570. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  39571. $ctx1.sendIdx["lf"]=4;
  39572. //>>excludeEnd("ctx");
  39573. $recv($1)._nextPutAll_($recv(self._currentClass())._asJavascript());
  39574. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  39575. $ctx1.sendIdx["nextPutAll:"]=5;
  39576. //>>excludeEnd("ctx");
  39577. $recv($1)._nextPutAll_(".superclass.fn.prototype.");
  39578. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  39579. $ctx1.sendIdx["nextPutAll:"]=6;
  39580. //>>excludeEnd("ctx");
  39581. $6=$1;
  39582. $7=$recv($recv($recv(anIRSend)._selector())._asJavaScriptMethodName()).__comma(".apply(");
  39583. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  39584. $ctx1.sendIdx[","]=2;
  39585. //>>excludeEnd("ctx");
  39586. $recv($6)._nextPutAll_($7);
  39587. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  39588. $ctx1.sendIdx["nextPutAll:"]=7;
  39589. //>>excludeEnd("ctx");
  39590. $8=$recv($1)._nextPutAll_("$recv(");
  39591. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  39592. $ctx1.sendIdx["nextPutAll:"]=8;
  39593. //>>excludeEnd("ctx");
  39594. $10=$recv(anIRSend)._instructions();
  39595. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  39596. $ctx1.sendIdx["instructions"]=1;
  39597. //>>excludeEnd("ctx");
  39598. $9=$recv($10)._first();
  39599. self._visit_($9);
  39600. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  39601. $ctx1.sendIdx["visit:"]=1;
  39602. //>>excludeEnd("ctx");
  39603. $11=self._stream();
  39604. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  39605. $ctx1.sendIdx["stream"]=2;
  39606. //>>excludeEnd("ctx");
  39607. $recv($11)._nextPutAll_("), [");
  39608. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  39609. $ctx1.sendIdx["nextPutAll:"]=9;
  39610. //>>excludeEnd("ctx");
  39611. $recv($recv($recv(anIRSend)._instructions())._allButFirst())._do_separatedBy_((function(each){
  39612. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  39613. return $core.withContext(function($ctx2) {
  39614. //>>excludeEnd("ctx");
  39615. return self._visit_(each);
  39616. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  39617. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  39618. //>>excludeEnd("ctx");
  39619. }),(function(){
  39620. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  39621. return $core.withContext(function($ctx2) {
  39622. //>>excludeEnd("ctx");
  39623. $12=self._stream();
  39624. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  39625. $ctx2.sendIdx["stream"]=3;
  39626. //>>excludeEnd("ctx");
  39627. return $recv($12)._nextPutAll_(",");
  39628. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  39629. $ctx2.sendIdx["nextPutAll:"]=10;
  39630. //>>excludeEnd("ctx");
  39631. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  39632. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
  39633. //>>excludeEnd("ctx");
  39634. }));
  39635. $13=self._stream();
  39636. $recv($13)._nextPutAll_("]));");
  39637. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  39638. $ctx1.sendIdx["nextPutAll:"]=11;
  39639. //>>excludeEnd("ctx");
  39640. $recv($13)._lf();
  39641. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  39642. $ctx1.sendIdx["lf"]=5;
  39643. //>>excludeEnd("ctx");
  39644. $recv($13)._nextPutAll_("//>>excludeStart(\x22ctx\x22, pragmas.excludeDebugContexts);");
  39645. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  39646. $ctx1.sendIdx["nextPutAll:"]=12;
  39647. //>>excludeEnd("ctx");
  39648. $recv($13)._lf();
  39649. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  39650. $ctx1.sendIdx["lf"]=6;
  39651. //>>excludeEnd("ctx");
  39652. $recv($13)._nextPutAll_($recv($recv($recv(anIRSend)._scope())._alias()).__comma(".supercall = false;"));
  39653. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  39654. $ctx1.sendIdx["nextPutAll:"]=13;
  39655. //>>excludeEnd("ctx");
  39656. $recv($13)._lf();
  39657. $14=$recv($13)._nextPutAll_("//>>excludeEnd(\x22ctx\x22);");
  39658. return self;
  39659. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  39660. }, function($ctx1) {$ctx1.fill(self,"visitSuperSend:",{anIRSend:anIRSend},$globals.IRJSTranslator)});
  39661. //>>excludeEnd("ctx");
  39662. },
  39663. //>>excludeStart("ide", pragmas.excludeIdeData);
  39664. args: ["anIRSend"],
  39665. source: "visitSuperSend: anIRSend\x0a\x09self stream\x0a\x09\x09nextPutAll: '('; lf;\x0a\x09\x09nextPutAll: '//>>excludeStart(\x22ctx\x22, pragmas.excludeDebugContexts);'; lf;\x0a\x09\x09nextPutAll: anIRSend scope alias, '.supercall = true, '; lf;\x0a\x09\x09nextPutAll: '//>>excludeEnd(\x22ctx\x22);'; lf;\x0a\x09\x09nextPutAll: self currentClass asJavascript;\x0a\x09\x09nextPutAll: '.superclass.fn.prototype.';\x0a\x09\x09nextPutAll: anIRSend selector asJavaScriptMethodName, '.apply(';\x0a\x09\x09nextPutAll: '$recv('.\x0a\x09self visit: anIRSend instructions first.\x0a\x09self stream nextPutAll: '), ['.\x0a\x09anIRSend instructions allButFirst\x0a\x09\x09do: [ :each | self visit: each ]\x0a\x09\x09separatedBy: [ self stream nextPutAll: ',' ].\x0a\x09self stream \x0a\x09\x09nextPutAll: ']));'; lf;\x0a\x09\x09nextPutAll: '//>>excludeStart(\x22ctx\x22, pragmas.excludeDebugContexts);'; lf;\x0a\x09\x09nextPutAll: anIRSend scope alias, '.supercall = false;'; lf;\x0a\x09\x09nextPutAll: '//>>excludeEnd(\x22ctx\x22);'",
  39666. referencedClasses: [],
  39667. //>>excludeEnd("ide");
  39668. messageSends: ["nextPutAll:", "stream", "lf", ",", "alias", "scope", "asJavascript", "currentClass", "asJavaScriptMethodName", "selector", "visit:", "first", "instructions", "do:separatedBy:", "allButFirst"]
  39669. }),
  39670. $globals.IRJSTranslator);
  39671. $core.addClass('JSStream', $globals.Object, ['stream'], 'Compiler-IR');
  39672. $core.addMethod(
  39673. $core.method({
  39674. selector: "contents",
  39675. protocol: 'accessing',
  39676. fn: function (){
  39677. var self=this;
  39678. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  39679. return $core.withContext(function($ctx1) {
  39680. //>>excludeEnd("ctx");
  39681. var $1;
  39682. $1=$recv(self["@stream"])._contents();
  39683. return $1;
  39684. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  39685. }, function($ctx1) {$ctx1.fill(self,"contents",{},$globals.JSStream)});
  39686. //>>excludeEnd("ctx");
  39687. },
  39688. //>>excludeStart("ide", pragmas.excludeIdeData);
  39689. args: [],
  39690. source: "contents\x0a\x09^ stream contents",
  39691. referencedClasses: [],
  39692. //>>excludeEnd("ide");
  39693. messageSends: ["contents"]
  39694. }),
  39695. $globals.JSStream);
  39696. $core.addMethod(
  39697. $core.method({
  39698. selector: "initialize",
  39699. protocol: 'initialization',
  39700. fn: function (){
  39701. var self=this;
  39702. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  39703. return $core.withContext(function($ctx1) {
  39704. //>>excludeEnd("ctx");
  39705. (
  39706. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  39707. $ctx1.supercall = true,
  39708. //>>excludeEnd("ctx");
  39709. $globals.JSStream.superclass.fn.prototype._initialize.apply($recv(self), []));
  39710. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  39711. $ctx1.supercall = false;
  39712. //>>excludeEnd("ctx");;
  39713. self["@stream"]=""._writeStream();
  39714. return self;
  39715. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  39716. }, function($ctx1) {$ctx1.fill(self,"initialize",{},$globals.JSStream)});
  39717. //>>excludeEnd("ctx");
  39718. },
  39719. //>>excludeStart("ide", pragmas.excludeIdeData);
  39720. args: [],
  39721. source: "initialize\x0a\x09super initialize.\x0a\x09stream := '' writeStream.",
  39722. referencedClasses: [],
  39723. //>>excludeEnd("ide");
  39724. messageSends: ["initialize", "writeStream"]
  39725. }),
  39726. $globals.JSStream);
  39727. $core.addMethod(
  39728. $core.method({
  39729. selector: "lf",
  39730. protocol: 'streaming',
  39731. fn: function (){
  39732. var self=this;
  39733. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  39734. return $core.withContext(function($ctx1) {
  39735. //>>excludeEnd("ctx");
  39736. $recv(self["@stream"])._lf();
  39737. return self;
  39738. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  39739. }, function($ctx1) {$ctx1.fill(self,"lf",{},$globals.JSStream)});
  39740. //>>excludeEnd("ctx");
  39741. },
  39742. //>>excludeStart("ide", pragmas.excludeIdeData);
  39743. args: [],
  39744. source: "lf\x0a\x09stream lf",
  39745. referencedClasses: [],
  39746. //>>excludeEnd("ide");
  39747. messageSends: ["lf"]
  39748. }),
  39749. $globals.JSStream);
  39750. $core.addMethod(
  39751. $core.method({
  39752. selector: "nextPut:",
  39753. protocol: 'streaming',
  39754. fn: function (aString){
  39755. var self=this;
  39756. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  39757. return $core.withContext(function($ctx1) {
  39758. //>>excludeEnd("ctx");
  39759. $recv(self["@stream"])._nextPut_(aString);
  39760. return self;
  39761. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  39762. }, function($ctx1) {$ctx1.fill(self,"nextPut:",{aString:aString},$globals.JSStream)});
  39763. //>>excludeEnd("ctx");
  39764. },
  39765. //>>excludeStart("ide", pragmas.excludeIdeData);
  39766. args: ["aString"],
  39767. source: "nextPut: aString\x0a\x09stream nextPut: aString",
  39768. referencedClasses: [],
  39769. //>>excludeEnd("ide");
  39770. messageSends: ["nextPut:"]
  39771. }),
  39772. $globals.JSStream);
  39773. $core.addMethod(
  39774. $core.method({
  39775. selector: "nextPutAll:",
  39776. protocol: 'streaming',
  39777. fn: function (aString){
  39778. var self=this;
  39779. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  39780. return $core.withContext(function($ctx1) {
  39781. //>>excludeEnd("ctx");
  39782. $recv(self["@stream"])._nextPutAll_(aString);
  39783. return self;
  39784. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  39785. }, function($ctx1) {$ctx1.fill(self,"nextPutAll:",{aString:aString},$globals.JSStream)});
  39786. //>>excludeEnd("ctx");
  39787. },
  39788. //>>excludeStart("ide", pragmas.excludeIdeData);
  39789. args: ["aString"],
  39790. source: "nextPutAll: aString\x0a\x09stream nextPutAll: aString",
  39791. referencedClasses: [],
  39792. //>>excludeEnd("ide");
  39793. messageSends: ["nextPutAll:"]
  39794. }),
  39795. $globals.JSStream);
  39796. $core.addMethod(
  39797. $core.method({
  39798. selector: "nextPutAssignment",
  39799. protocol: 'streaming',
  39800. fn: function (){
  39801. var self=this;
  39802. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  39803. return $core.withContext(function($ctx1) {
  39804. //>>excludeEnd("ctx");
  39805. $recv(self["@stream"])._nextPutAll_("=");
  39806. return self;
  39807. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  39808. }, function($ctx1) {$ctx1.fill(self,"nextPutAssignment",{},$globals.JSStream)});
  39809. //>>excludeEnd("ctx");
  39810. },
  39811. //>>excludeStart("ide", pragmas.excludeIdeData);
  39812. args: [],
  39813. source: "nextPutAssignment\x0a\x09stream nextPutAll: '='",
  39814. referencedClasses: [],
  39815. //>>excludeEnd("ide");
  39816. messageSends: ["nextPutAll:"]
  39817. }),
  39818. $globals.JSStream);
  39819. $core.addMethod(
  39820. $core.method({
  39821. selector: "nextPutBlockContextFor:during:",
  39822. protocol: 'streaming',
  39823. fn: function (anIRClosure,aBlock){
  39824. var self=this;
  39825. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  39826. return $core.withContext(function($ctx1) {
  39827. //>>excludeEnd("ctx");
  39828. var $1,$2,$6,$5,$4,$3,$7,$11,$10,$9,$8,$15,$14,$13,$12,$16,$17,$23,$22,$21,$20,$19,$18,$24;
  39829. $1=$recv(anIRClosure)._requiresSmalltalkContext();
  39830. if(!$core.assert($1)){
  39831. $2=$recv(aBlock)._value();
  39832. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  39833. $ctx1.sendIdx["value"]=1;
  39834. //>>excludeEnd("ctx");
  39835. return $2;
  39836. };
  39837. self._nextPutAll_("//>>excludeStart(\x22ctx\x22, pragmas.excludeDebugContexts);");
  39838. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  39839. $ctx1.sendIdx["nextPutAll:"]=1;
  39840. //>>excludeEnd("ctx");
  39841. self._lf();
  39842. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  39843. $ctx1.sendIdx["lf"]=1;
  39844. //>>excludeEnd("ctx");
  39845. $6=$recv(anIRClosure)._scope();
  39846. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  39847. $ctx1.sendIdx["scope"]=1;
  39848. //>>excludeEnd("ctx");
  39849. $5=$recv($6)._alias();
  39850. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  39851. $ctx1.sendIdx["alias"]=1;
  39852. //>>excludeEnd("ctx");
  39853. $4="return $core.withContext(function(".__comma($5);
  39854. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  39855. $ctx1.sendIdx[","]=2;
  39856. //>>excludeEnd("ctx");
  39857. $3=$recv($4).__comma(") {");
  39858. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  39859. $ctx1.sendIdx[","]=1;
  39860. //>>excludeEnd("ctx");
  39861. self._nextPutAll_($3);
  39862. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  39863. $ctx1.sendIdx["nextPutAll:"]=2;
  39864. //>>excludeEnd("ctx");
  39865. self._lf();
  39866. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  39867. $ctx1.sendIdx["lf"]=2;
  39868. //>>excludeEnd("ctx");
  39869. self._nextPutAll_("//>>excludeEnd(\x22ctx\x22);");
  39870. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  39871. $ctx1.sendIdx["nextPutAll:"]=3;
  39872. //>>excludeEnd("ctx");
  39873. $7=self._lf();
  39874. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  39875. $ctx1.sendIdx["lf"]=3;
  39876. //>>excludeEnd("ctx");
  39877. $recv(aBlock)._value();
  39878. self._nextPutAll_("//>>excludeStart(\x22ctx\x22, pragmas.excludeDebugContexts);");
  39879. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  39880. $ctx1.sendIdx["nextPutAll:"]=4;
  39881. //>>excludeEnd("ctx");
  39882. self._lf();
  39883. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  39884. $ctx1.sendIdx["lf"]=4;
  39885. //>>excludeEnd("ctx");
  39886. $11=$recv(anIRClosure)._scope();
  39887. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  39888. $ctx1.sendIdx["scope"]=2;
  39889. //>>excludeEnd("ctx");
  39890. $10=$recv($11)._alias();
  39891. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  39892. $ctx1.sendIdx["alias"]=2;
  39893. //>>excludeEnd("ctx");
  39894. $9="}, function(".__comma($10);
  39895. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  39896. $ctx1.sendIdx[","]=4;
  39897. //>>excludeEnd("ctx");
  39898. $8=$recv($9).__comma(") {");
  39899. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  39900. $ctx1.sendIdx[","]=3;
  39901. //>>excludeEnd("ctx");
  39902. self._nextPutAll_($8);
  39903. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  39904. $ctx1.sendIdx["nextPutAll:"]=5;
  39905. //>>excludeEnd("ctx");
  39906. $15=$recv(anIRClosure)._scope();
  39907. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  39908. $ctx1.sendIdx["scope"]=3;
  39909. //>>excludeEnd("ctx");
  39910. $14=$recv($15)._alias();
  39911. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  39912. $ctx1.sendIdx["alias"]=3;
  39913. //>>excludeEnd("ctx");
  39914. $13=$recv($14).__comma(".fillBlock({");
  39915. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  39916. $ctx1.sendIdx[","]=5;
  39917. //>>excludeEnd("ctx");
  39918. $12=self._nextPutAll_($13);
  39919. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  39920. $ctx1.sendIdx["nextPutAll:"]=6;
  39921. //>>excludeEnd("ctx");
  39922. $recv($recv(anIRClosure)._locals())._do_separatedBy_((function(each){
  39923. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  39924. return $core.withContext(function($ctx2) {
  39925. //>>excludeEnd("ctx");
  39926. $16=$recv(each)._asVariableName();
  39927. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  39928. $ctx2.sendIdx["asVariableName"]=1;
  39929. //>>excludeEnd("ctx");
  39930. self._nextPutAll_($16);
  39931. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  39932. $ctx2.sendIdx["nextPutAll:"]=7;
  39933. //>>excludeEnd("ctx");
  39934. self._nextPutAll_(":");
  39935. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  39936. $ctx2.sendIdx["nextPutAll:"]=8;
  39937. //>>excludeEnd("ctx");
  39938. $17=self._nextPutAll_($recv(each)._asVariableName());
  39939. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  39940. $ctx2.sendIdx["nextPutAll:"]=9;
  39941. //>>excludeEnd("ctx");
  39942. return $17;
  39943. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  39944. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,2)});
  39945. //>>excludeEnd("ctx");
  39946. }),(function(){
  39947. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  39948. return $core.withContext(function($ctx2) {
  39949. //>>excludeEnd("ctx");
  39950. return self._nextPutAll_(",");
  39951. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  39952. $ctx2.sendIdx["nextPutAll:"]=10;
  39953. //>>excludeEnd("ctx");
  39954. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  39955. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,3)});
  39956. //>>excludeEnd("ctx");
  39957. }));
  39958. self._nextPutAll_("},");
  39959. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  39960. $ctx1.sendIdx["nextPutAll:"]=11;
  39961. //>>excludeEnd("ctx");
  39962. $23=$recv(anIRClosure)._scope();
  39963. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  39964. $ctx1.sendIdx["scope"]=4;
  39965. //>>excludeEnd("ctx");
  39966. $22=$recv($23)._outerScope();
  39967. $21=$recv($22)._alias();
  39968. $20=$recv($21).__comma(",");
  39969. $19=$recv($20).__comma($recv($recv($recv(anIRClosure)._scope())._blockIndex())._asString());
  39970. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  39971. $ctx1.sendIdx[","]=7;
  39972. //>>excludeEnd("ctx");
  39973. $18=$recv($19).__comma(")});");
  39974. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  39975. $ctx1.sendIdx[","]=6;
  39976. //>>excludeEnd("ctx");
  39977. self._nextPutAll_($18);
  39978. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  39979. $ctx1.sendIdx["nextPutAll:"]=12;
  39980. //>>excludeEnd("ctx");
  39981. self._lf();
  39982. $24=self._nextPutAll_("//>>excludeEnd(\x22ctx\x22);");
  39983. return self;
  39984. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  39985. }, function($ctx1) {$ctx1.fill(self,"nextPutBlockContextFor:during:",{anIRClosure:anIRClosure,aBlock:aBlock},$globals.JSStream)});
  39986. //>>excludeEnd("ctx");
  39987. },
  39988. //>>excludeStart("ide", pragmas.excludeIdeData);
  39989. args: ["anIRClosure", "aBlock"],
  39990. 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);'",
  39991. referencedClasses: [],
  39992. //>>excludeEnd("ide");
  39993. messageSends: ["ifFalse:", "requiresSmalltalkContext", "value", "nextPutAll:", "lf", ",", "alias", "scope", "do:separatedBy:", "locals", "asVariableName", "outerScope", "asString", "blockIndex"]
  39994. }),
  39995. $globals.JSStream);
  39996. $core.addMethod(
  39997. $core.method({
  39998. selector: "nextPutClassRefFunction:",
  39999. protocol: 'streaming',
  40000. fn: function (aString){
  40001. var self=this;
  40002. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  40003. return $core.withContext(function($ctx1) {
  40004. //>>excludeEnd("ctx");
  40005. var $1,$2;
  40006. $1=self["@stream"];
  40007. $recv($1)._nextPutAll_("function $");
  40008. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  40009. $ctx1.sendIdx["nextPutAll:"]=1;
  40010. //>>excludeEnd("ctx");
  40011. $recv($1)._nextPutAll_(aString);
  40012. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  40013. $ctx1.sendIdx["nextPutAll:"]=2;
  40014. //>>excludeEnd("ctx");
  40015. $recv($1)._nextPutAll_("(){return $globals.");
  40016. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  40017. $ctx1.sendIdx["nextPutAll:"]=3;
  40018. //>>excludeEnd("ctx");
  40019. $recv($1)._nextPutAll_(aString);
  40020. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  40021. $ctx1.sendIdx["nextPutAll:"]=4;
  40022. //>>excludeEnd("ctx");
  40023. $recv($1)._nextPutAll_("||(typeof ");
  40024. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  40025. $ctx1.sendIdx["nextPutAll:"]=5;
  40026. //>>excludeEnd("ctx");
  40027. $recv($1)._nextPutAll_(aString);
  40028. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  40029. $ctx1.sendIdx["nextPutAll:"]=6;
  40030. //>>excludeEnd("ctx");
  40031. $recv($1)._nextPutAll_("==\x22undefined\x22?nil:");
  40032. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  40033. $ctx1.sendIdx["nextPutAll:"]=7;
  40034. //>>excludeEnd("ctx");
  40035. $recv($1)._nextPutAll_(aString);
  40036. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  40037. $ctx1.sendIdx["nextPutAll:"]=8;
  40038. //>>excludeEnd("ctx");
  40039. $recv($1)._nextPutAll_(")}");
  40040. $2=$recv($1)._lf();
  40041. return self;
  40042. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  40043. }, function($ctx1) {$ctx1.fill(self,"nextPutClassRefFunction:",{aString:aString},$globals.JSStream)});
  40044. //>>excludeEnd("ctx");
  40045. },
  40046. //>>excludeStart("ide", pragmas.excludeIdeData);
  40047. args: ["aString"],
  40048. source: "nextPutClassRefFunction: aString\x0a\x09\x22Creates an inner function $aString into method and called as `$Foo()`whenever the global is accessed.\x0a\x09This ensures that undefined global access will answer `nil`\x22\x0a\x09\x0a\x09stream\x0a\x09\x09nextPutAll: 'function $';\x0a\x09\x09nextPutAll: aString;\x0a\x09\x09nextPutAll: '(){return $globals.';\x0a\x09\x09nextPutAll: aString;\x0a\x09\x09nextPutAll: '||(typeof ';\x0a\x09\x09nextPutAll: aString;\x0a\x09\x09nextPutAll: '==\x22undefined\x22?nil:';\x0a\x09\x09nextPutAll: aString;\x0a\x09\x09nextPutAll: ')}';\x0a\x09\x09lf",
  40049. referencedClasses: [],
  40050. //>>excludeEnd("ide");
  40051. messageSends: ["nextPutAll:", "lf"]
  40052. }),
  40053. $globals.JSStream);
  40054. $core.addMethod(
  40055. $core.method({
  40056. selector: "nextPutClosureWith:arguments:",
  40057. protocol: 'streaming',
  40058. fn: function (aBlock,anArray){
  40059. var self=this;
  40060. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  40061. return $core.withContext(function($ctx1) {
  40062. //>>excludeEnd("ctx");
  40063. var $1,$2,$3,$4;
  40064. $recv(self["@stream"])._nextPutAll_("(function(");
  40065. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  40066. $ctx1.sendIdx["nextPutAll:"]=1;
  40067. //>>excludeEnd("ctx");
  40068. $recv(anArray)._do_separatedBy_((function(each){
  40069. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  40070. return $core.withContext(function($ctx2) {
  40071. //>>excludeEnd("ctx");
  40072. return $recv(self["@stream"])._nextPutAll_($recv(each)._asVariableName());
  40073. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  40074. $ctx2.sendIdx["nextPutAll:"]=2;
  40075. //>>excludeEnd("ctx");
  40076. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  40077. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  40078. //>>excludeEnd("ctx");
  40079. }),(function(){
  40080. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  40081. return $core.withContext(function($ctx2) {
  40082. //>>excludeEnd("ctx");
  40083. return $recv(self["@stream"])._nextPut_(",");
  40084. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  40085. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
  40086. //>>excludeEnd("ctx");
  40087. }));
  40088. $1=self["@stream"];
  40089. $recv($1)._nextPutAll_("){");
  40090. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  40091. $ctx1.sendIdx["nextPutAll:"]=3;
  40092. //>>excludeEnd("ctx");
  40093. $2=$recv($1)._lf();
  40094. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  40095. $ctx1.sendIdx["lf"]=1;
  40096. //>>excludeEnd("ctx");
  40097. $recv(aBlock)._value();
  40098. $3=self["@stream"];
  40099. $recv($3)._lf();
  40100. $4=$recv($3)._nextPutAll_("})");
  40101. return self;
  40102. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  40103. }, function($ctx1) {$ctx1.fill(self,"nextPutClosureWith:arguments:",{aBlock:aBlock,anArray:anArray},$globals.JSStream)});
  40104. //>>excludeEnd("ctx");
  40105. },
  40106. //>>excludeStart("ide", pragmas.excludeIdeData);
  40107. args: ["aBlock", "anArray"],
  40108. 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: '})'",
  40109. referencedClasses: [],
  40110. //>>excludeEnd("ide");
  40111. messageSends: ["nextPutAll:", "do:separatedBy:", "asVariableName", "nextPut:", "lf", "value"]
  40112. }),
  40113. $globals.JSStream);
  40114. $core.addMethod(
  40115. $core.method({
  40116. selector: "nextPutContextFor:during:",
  40117. protocol: 'streaming',
  40118. fn: function (aMethod,aBlock){
  40119. var self=this;
  40120. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  40121. return $core.withContext(function($ctx1) {
  40122. //>>excludeEnd("ctx");
  40123. var $1,$2,$6,$5,$4,$3,$7,$12,$11,$10,$9,$8,$16,$15,$14,$13,$17,$18,$19;
  40124. $1=$recv(aMethod)._requiresSmalltalkContext();
  40125. if(!$core.assert($1)){
  40126. $2=$recv(aBlock)._value();
  40127. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  40128. $ctx1.sendIdx["value"]=1;
  40129. //>>excludeEnd("ctx");
  40130. return $2;
  40131. };
  40132. self._nextPutAll_("//>>excludeStart(\x22ctx\x22, pragmas.excludeDebugContexts);");
  40133. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  40134. $ctx1.sendIdx["nextPutAll:"]=1;
  40135. //>>excludeEnd("ctx");
  40136. self._lf();
  40137. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  40138. $ctx1.sendIdx["lf"]=1;
  40139. //>>excludeEnd("ctx");
  40140. $6=$recv(aMethod)._scope();
  40141. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  40142. $ctx1.sendIdx["scope"]=1;
  40143. //>>excludeEnd("ctx");
  40144. $5=$recv($6)._alias();
  40145. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  40146. $ctx1.sendIdx["alias"]=1;
  40147. //>>excludeEnd("ctx");
  40148. $4="return $core.withContext(function(".__comma($5);
  40149. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  40150. $ctx1.sendIdx[","]=2;
  40151. //>>excludeEnd("ctx");
  40152. $3=$recv($4).__comma(") { ");
  40153. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  40154. $ctx1.sendIdx[","]=1;
  40155. //>>excludeEnd("ctx");
  40156. self._nextPutAll_($3);
  40157. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  40158. $ctx1.sendIdx["nextPutAll:"]=2;
  40159. //>>excludeEnd("ctx");
  40160. self._lf();
  40161. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  40162. $ctx1.sendIdx["lf"]=2;
  40163. //>>excludeEnd("ctx");
  40164. self._nextPutAll_("//>>excludeEnd(\x22ctx\x22);");
  40165. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  40166. $ctx1.sendIdx["nextPutAll:"]=3;
  40167. //>>excludeEnd("ctx");
  40168. $7=self._lf();
  40169. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  40170. $ctx1.sendIdx["lf"]=3;
  40171. //>>excludeEnd("ctx");
  40172. $recv(aBlock)._value();
  40173. self._nextPutAll_("//>>excludeStart(\x22ctx\x22, pragmas.excludeDebugContexts);");
  40174. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  40175. $ctx1.sendIdx["nextPutAll:"]=4;
  40176. //>>excludeEnd("ctx");
  40177. self._lf();
  40178. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  40179. $ctx1.sendIdx["lf"]=4;
  40180. //>>excludeEnd("ctx");
  40181. $12=$recv(aMethod)._scope();
  40182. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  40183. $ctx1.sendIdx["scope"]=2;
  40184. //>>excludeEnd("ctx");
  40185. $11=$recv($12)._alias();
  40186. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  40187. $ctx1.sendIdx["alias"]=2;
  40188. //>>excludeEnd("ctx");
  40189. $10="}, function(".__comma($11);
  40190. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  40191. $ctx1.sendIdx[","]=5;
  40192. //>>excludeEnd("ctx");
  40193. $9=$recv($10).__comma(") {");
  40194. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  40195. $ctx1.sendIdx[","]=4;
  40196. //>>excludeEnd("ctx");
  40197. $8=$recv($9).__comma($recv($recv(aMethod)._scope())._alias());
  40198. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  40199. $ctx1.sendIdx[","]=3;
  40200. //>>excludeEnd("ctx");
  40201. self._nextPutAll_($8);
  40202. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  40203. $ctx1.sendIdx["nextPutAll:"]=5;
  40204. //>>excludeEnd("ctx");
  40205. $16=$recv($recv(aMethod)._selector())._asJavascript();
  40206. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  40207. $ctx1.sendIdx["asJavascript"]=1;
  40208. //>>excludeEnd("ctx");
  40209. $15=".fill(self,".__comma($16);
  40210. $14=$recv($15).__comma(",{");
  40211. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  40212. $ctx1.sendIdx[","]=6;
  40213. //>>excludeEnd("ctx");
  40214. $13=self._nextPutAll_($14);
  40215. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  40216. $ctx1.sendIdx["nextPutAll:"]=6;
  40217. //>>excludeEnd("ctx");
  40218. $recv($recv(aMethod)._locals())._do_separatedBy_((function(each){
  40219. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  40220. return $core.withContext(function($ctx2) {
  40221. //>>excludeEnd("ctx");
  40222. $17=$recv(each)._asVariableName();
  40223. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  40224. $ctx2.sendIdx["asVariableName"]=1;
  40225. //>>excludeEnd("ctx");
  40226. self._nextPutAll_($17);
  40227. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  40228. $ctx2.sendIdx["nextPutAll:"]=7;
  40229. //>>excludeEnd("ctx");
  40230. self._nextPutAll_(":");
  40231. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  40232. $ctx2.sendIdx["nextPutAll:"]=8;
  40233. //>>excludeEnd("ctx");
  40234. $18=self._nextPutAll_($recv(each)._asVariableName());
  40235. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  40236. $ctx2.sendIdx["nextPutAll:"]=9;
  40237. //>>excludeEnd("ctx");
  40238. return $18;
  40239. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  40240. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,2)});
  40241. //>>excludeEnd("ctx");
  40242. }),(function(){
  40243. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  40244. return $core.withContext(function($ctx2) {
  40245. //>>excludeEnd("ctx");
  40246. return self._nextPutAll_(",");
  40247. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  40248. $ctx2.sendIdx["nextPutAll:"]=10;
  40249. //>>excludeEnd("ctx");
  40250. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  40251. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,3)});
  40252. //>>excludeEnd("ctx");
  40253. }));
  40254. self._nextPutAll_("},");
  40255. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  40256. $ctx1.sendIdx["nextPutAll:"]=11;
  40257. //>>excludeEnd("ctx");
  40258. self._nextPutAll_($recv($recv(aMethod)._theClass())._asJavascript());
  40259. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  40260. $ctx1.sendIdx["nextPutAll:"]=12;
  40261. //>>excludeEnd("ctx");
  40262. self._nextPutAll_(")});");
  40263. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  40264. $ctx1.sendIdx["nextPutAll:"]=13;
  40265. //>>excludeEnd("ctx");
  40266. self._lf();
  40267. $19=self._nextPutAll_("//>>excludeEnd(\x22ctx\x22);");
  40268. return self;
  40269. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  40270. }, function($ctx1) {$ctx1.fill(self,"nextPutContextFor:during:",{aMethod:aMethod,aBlock:aBlock},$globals.JSStream)});
  40271. //>>excludeEnd("ctx");
  40272. },
  40273. //>>excludeStart("ide", pragmas.excludeIdeData);
  40274. args: ["aMethod", "aBlock"],
  40275. 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 asJavascript, ',{'.\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\x09nextPutAll: aMethod theClass asJavascript;\x0a\x09\x09nextPutAll: ')});';\x0a\x09\x09lf;\x0a\x09\x09nextPutAll: '//>>excludeEnd(\x22ctx\x22);'",
  40276. referencedClasses: [],
  40277. //>>excludeEnd("ide");
  40278. messageSends: ["ifFalse:", "requiresSmalltalkContext", "value", "nextPutAll:", "lf", ",", "alias", "scope", "asJavascript", "selector", "do:separatedBy:", "locals", "asVariableName", "theClass"]
  40279. }),
  40280. $globals.JSStream);
  40281. $core.addMethod(
  40282. $core.method({
  40283. selector: "nextPutFunctionWith:arguments:",
  40284. protocol: 'streaming',
  40285. fn: function (aBlock,anArray){
  40286. var self=this;
  40287. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  40288. return $core.withContext(function($ctx1) {
  40289. //>>excludeEnd("ctx");
  40290. var $1,$2,$3,$4,$5,$6;
  40291. $recv(self["@stream"])._nextPutAll_("fn: function(");
  40292. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  40293. $ctx1.sendIdx["nextPutAll:"]=1;
  40294. //>>excludeEnd("ctx");
  40295. $recv(anArray)._do_separatedBy_((function(each){
  40296. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  40297. return $core.withContext(function($ctx2) {
  40298. //>>excludeEnd("ctx");
  40299. return $recv(self["@stream"])._nextPutAll_($recv(each)._asVariableName());
  40300. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  40301. $ctx2.sendIdx["nextPutAll:"]=2;
  40302. //>>excludeEnd("ctx");
  40303. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  40304. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  40305. //>>excludeEnd("ctx");
  40306. }),(function(){
  40307. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  40308. return $core.withContext(function($ctx2) {
  40309. //>>excludeEnd("ctx");
  40310. return $recv(self["@stream"])._nextPut_(",");
  40311. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  40312. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
  40313. //>>excludeEnd("ctx");
  40314. }));
  40315. $1=self["@stream"];
  40316. $recv($1)._nextPutAll_("){");
  40317. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  40318. $ctx1.sendIdx["nextPutAll:"]=3;
  40319. //>>excludeEnd("ctx");
  40320. $2=$recv($1)._lf();
  40321. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  40322. $ctx1.sendIdx["lf"]=1;
  40323. //>>excludeEnd("ctx");
  40324. $3=self["@stream"];
  40325. $recv($3)._nextPutAll_("var self=this;");
  40326. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  40327. $ctx1.sendIdx["nextPutAll:"]=4;
  40328. //>>excludeEnd("ctx");
  40329. $4=$recv($3)._lf();
  40330. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  40331. $ctx1.sendIdx["lf"]=2;
  40332. //>>excludeEnd("ctx");
  40333. $recv(aBlock)._value();
  40334. $5=self["@stream"];
  40335. $recv($5)._lf();
  40336. $6=$recv($5)._nextPutAll_("}");
  40337. return self;
  40338. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  40339. }, function($ctx1) {$ctx1.fill(self,"nextPutFunctionWith:arguments:",{aBlock:aBlock,anArray:anArray},$globals.JSStream)});
  40340. //>>excludeEnd("ctx");
  40341. },
  40342. //>>excludeStart("ide", pragmas.excludeIdeData);
  40343. args: ["aBlock", "anArray"],
  40344. source: "nextPutFunctionWith: aBlock arguments: anArray\x0a\x09stream nextPutAll: 'fn: 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;'; lf.\x0a\x09aBlock value.\x0a\x09stream lf; nextPutAll: '}'",
  40345. referencedClasses: [],
  40346. //>>excludeEnd("ide");
  40347. messageSends: ["nextPutAll:", "do:separatedBy:", "asVariableName", "nextPut:", "lf", "value"]
  40348. }),
  40349. $globals.JSStream);
  40350. $core.addMethod(
  40351. $core.method({
  40352. selector: "nextPutIf:with:",
  40353. protocol: 'streaming',
  40354. fn: function (aBlock,anotherBlock){
  40355. var self=this;
  40356. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  40357. return $core.withContext(function($ctx1) {
  40358. //>>excludeEnd("ctx");
  40359. var $1,$2;
  40360. $recv(self["@stream"])._nextPutAll_("if(");
  40361. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  40362. $ctx1.sendIdx["nextPutAll:"]=1;
  40363. //>>excludeEnd("ctx");
  40364. $recv(aBlock)._value();
  40365. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  40366. $ctx1.sendIdx["value"]=1;
  40367. //>>excludeEnd("ctx");
  40368. $1=self["@stream"];
  40369. $recv($1)._nextPutAll_("){");
  40370. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  40371. $ctx1.sendIdx["nextPutAll:"]=2;
  40372. //>>excludeEnd("ctx");
  40373. $2=$recv($1)._lf();
  40374. $recv(anotherBlock)._value();
  40375. $recv(self["@stream"])._nextPutAll_("}");
  40376. return self;
  40377. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  40378. }, function($ctx1) {$ctx1.fill(self,"nextPutIf:with:",{aBlock:aBlock,anotherBlock:anotherBlock},$globals.JSStream)});
  40379. //>>excludeEnd("ctx");
  40380. },
  40381. //>>excludeStart("ide", pragmas.excludeIdeData);
  40382. args: ["aBlock", "anotherBlock"],
  40383. source: "nextPutIf: aBlock with: anotherBlock\x0a\x09stream nextPutAll: 'if('.\x0a\x09aBlock value.\x0a\x09stream nextPutAll: '){'; lf.\x0a\x09anotherBlock value.\x0a\x09stream nextPutAll: '}'",
  40384. referencedClasses: [],
  40385. //>>excludeEnd("ide");
  40386. messageSends: ["nextPutAll:", "value", "lf"]
  40387. }),
  40388. $globals.JSStream);
  40389. $core.addMethod(
  40390. $core.method({
  40391. selector: "nextPutIfElse:with:with:",
  40392. protocol: 'streaming',
  40393. fn: function (aBlock,ifBlock,elseBlock){
  40394. var self=this;
  40395. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  40396. return $core.withContext(function($ctx1) {
  40397. //>>excludeEnd("ctx");
  40398. var $1,$2,$3,$4;
  40399. $recv(self["@stream"])._nextPutAll_("if(");
  40400. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  40401. $ctx1.sendIdx["nextPutAll:"]=1;
  40402. //>>excludeEnd("ctx");
  40403. $recv(aBlock)._value();
  40404. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  40405. $ctx1.sendIdx["value"]=1;
  40406. //>>excludeEnd("ctx");
  40407. $1=self["@stream"];
  40408. $recv($1)._nextPutAll_("){");
  40409. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  40410. $ctx1.sendIdx["nextPutAll:"]=2;
  40411. //>>excludeEnd("ctx");
  40412. $2=$recv($1)._lf();
  40413. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  40414. $ctx1.sendIdx["lf"]=1;
  40415. //>>excludeEnd("ctx");
  40416. $recv(ifBlock)._value();
  40417. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  40418. $ctx1.sendIdx["value"]=2;
  40419. //>>excludeEnd("ctx");
  40420. $3=self["@stream"];
  40421. $recv($3)._nextPutAll_("} else {");
  40422. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  40423. $ctx1.sendIdx["nextPutAll:"]=3;
  40424. //>>excludeEnd("ctx");
  40425. $4=$recv($3)._lf();
  40426. $recv(elseBlock)._value();
  40427. $recv(self["@stream"])._nextPutAll_("}");
  40428. return self;
  40429. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  40430. }, function($ctx1) {$ctx1.fill(self,"nextPutIfElse:with:with:",{aBlock:aBlock,ifBlock:ifBlock,elseBlock:elseBlock},$globals.JSStream)});
  40431. //>>excludeEnd("ctx");
  40432. },
  40433. //>>excludeStart("ide", pragmas.excludeIdeData);
  40434. args: ["aBlock", "ifBlock", "elseBlock"],
  40435. source: "nextPutIfElse: aBlock with: ifBlock with: 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: '}'",
  40436. referencedClasses: [],
  40437. //>>excludeEnd("ide");
  40438. messageSends: ["nextPutAll:", "value", "lf"]
  40439. }),
  40440. $globals.JSStream);
  40441. $core.addMethod(
  40442. $core.method({
  40443. selector: "nextPutMethodDeclaration:with:",
  40444. protocol: 'streaming',
  40445. fn: function (aMethod,aBlock){
  40446. var self=this;
  40447. function $String(){return $globals.String||(typeof String=="undefined"?nil:String)}
  40448. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  40449. return $core.withContext(function($ctx1) {
  40450. //>>excludeEnd("ctx");
  40451. var $1,$2,$5,$4,$3,$6,$9,$8,$7,$10,$11,$12,$15,$14,$13,$16,$19,$18,$17,$20,$23,$22,$21,$24,$25,$26;
  40452. $1=self["@stream"];
  40453. $recv($1)._nextPutAll_("$core.method({");
  40454. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  40455. $ctx1.sendIdx["nextPutAll:"]=1;
  40456. //>>excludeEnd("ctx");
  40457. $recv($1)._lf();
  40458. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  40459. $ctx1.sendIdx["lf"]=1;
  40460. //>>excludeEnd("ctx");
  40461. $2=$1;
  40462. $5=$recv($recv(aMethod)._selector())._asJavascript();
  40463. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  40464. $ctx1.sendIdx["asJavascript"]=1;
  40465. //>>excludeEnd("ctx");
  40466. $4="selector: ".__comma($5);
  40467. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  40468. $ctx1.sendIdx[","]=2;
  40469. //>>excludeEnd("ctx");
  40470. $3=$recv($4).__comma(",");
  40471. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  40472. $ctx1.sendIdx[","]=1;
  40473. //>>excludeEnd("ctx");
  40474. $recv($2)._nextPutAll_($3);
  40475. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  40476. $ctx1.sendIdx["nextPutAll:"]=2;
  40477. //>>excludeEnd("ctx");
  40478. $recv($1)._lf();
  40479. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  40480. $ctx1.sendIdx["lf"]=2;
  40481. //>>excludeEnd("ctx");
  40482. $6=$1;
  40483. $9=$recv($recv(aMethod)._source())._asJavascript();
  40484. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  40485. $ctx1.sendIdx["asJavascript"]=2;
  40486. //>>excludeEnd("ctx");
  40487. $8="source: ".__comma($9);
  40488. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  40489. $ctx1.sendIdx[","]=4;
  40490. //>>excludeEnd("ctx");
  40491. $7=$recv($8).__comma(",");
  40492. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  40493. $ctx1.sendIdx[","]=3;
  40494. //>>excludeEnd("ctx");
  40495. $recv($6)._nextPutAll_($7);
  40496. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  40497. $ctx1.sendIdx["nextPutAll:"]=3;
  40498. //>>excludeEnd("ctx");
  40499. $10=$recv($1)._lf();
  40500. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  40501. $ctx1.sendIdx["lf"]=3;
  40502. //>>excludeEnd("ctx");
  40503. $recv(aBlock)._value();
  40504. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  40505. $ctx1.sendIdx["value"]=1;
  40506. //>>excludeEnd("ctx");
  40507. $11=self["@stream"];
  40508. $12=$11;
  40509. $15=$recv($String())._lf();
  40510. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  40511. $ctx1.sendIdx["lf"]=4;
  40512. //>>excludeEnd("ctx");
  40513. $14=",".__comma($15);
  40514. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  40515. $ctx1.sendIdx[","]=6;
  40516. //>>excludeEnd("ctx");
  40517. $13=$recv($14).__comma("messageSends: ");
  40518. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  40519. $ctx1.sendIdx[","]=5;
  40520. //>>excludeEnd("ctx");
  40521. $recv($12)._nextPutAll_($13);
  40522. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  40523. $ctx1.sendIdx["nextPutAll:"]=4;
  40524. //>>excludeEnd("ctx");
  40525. $16=$11;
  40526. $19=$recv($recv(aMethod)._messageSends())._asArray();
  40527. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  40528. $ctx1.sendIdx["asArray"]=1;
  40529. //>>excludeEnd("ctx");
  40530. $18=$recv($19)._asJavascript();
  40531. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  40532. $ctx1.sendIdx["asJavascript"]=3;
  40533. //>>excludeEnd("ctx");
  40534. $17=$recv($18).__comma(",");
  40535. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  40536. $ctx1.sendIdx[","]=7;
  40537. //>>excludeEnd("ctx");
  40538. $recv($16)._nextPutAll_($17);
  40539. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  40540. $ctx1.sendIdx["nextPutAll:"]=5;
  40541. //>>excludeEnd("ctx");
  40542. $recv($11)._lf();
  40543. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  40544. $ctx1.sendIdx["lf"]=5;
  40545. //>>excludeEnd("ctx");
  40546. $20=$11;
  40547. $23=$recv($recv($recv($recv(aMethod)._arguments())._collect_((function(each){
  40548. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  40549. return $core.withContext(function($ctx2) {
  40550. //>>excludeEnd("ctx");
  40551. return $recv(each)._value();
  40552. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  40553. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  40554. //>>excludeEnd("ctx");
  40555. })))._asArray())._asJavascript();
  40556. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  40557. $ctx1.sendIdx["asJavascript"]=4;
  40558. //>>excludeEnd("ctx");
  40559. $22="args: ".__comma($23);
  40560. $21=$recv($22).__comma(",");
  40561. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  40562. $ctx1.sendIdx[","]=8;
  40563. //>>excludeEnd("ctx");
  40564. $recv($20)._nextPutAll_($21);
  40565. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  40566. $ctx1.sendIdx["nextPutAll:"]=6;
  40567. //>>excludeEnd("ctx");
  40568. $recv($11)._lf();
  40569. $24=$recv($11)._nextPutAll_("referencedClasses: [");
  40570. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  40571. $ctx1.sendIdx["nextPutAll:"]=7;
  40572. //>>excludeEnd("ctx");
  40573. $recv($recv(aMethod)._classReferences())._do_separatedBy_((function(each){
  40574. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  40575. return $core.withContext(function($ctx2) {
  40576. //>>excludeEnd("ctx");
  40577. return $recv(self["@stream"])._nextPutAll_($recv(each)._asJavascript());
  40578. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  40579. $ctx2.sendIdx["nextPutAll:"]=8;
  40580. //>>excludeEnd("ctx");
  40581. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  40582. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,2)});
  40583. //>>excludeEnd("ctx");
  40584. }),(function(){
  40585. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  40586. return $core.withContext(function($ctx2) {
  40587. //>>excludeEnd("ctx");
  40588. return $recv(self["@stream"])._nextPutAll_(",");
  40589. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  40590. $ctx2.sendIdx["nextPutAll:"]=9;
  40591. //>>excludeEnd("ctx");
  40592. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  40593. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,3)});
  40594. //>>excludeEnd("ctx");
  40595. }));
  40596. $25=self["@stream"];
  40597. $recv($25)._nextPutAll_("]");
  40598. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  40599. $ctx1.sendIdx["nextPutAll:"]=10;
  40600. //>>excludeEnd("ctx");
  40601. $26=$recv($25)._nextPutAll_("})");
  40602. return self;
  40603. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  40604. }, function($ctx1) {$ctx1.fill(self,"nextPutMethodDeclaration:with:",{aMethod:aMethod,aBlock:aBlock},$globals.JSStream)});
  40605. //>>excludeEnd("ctx");
  40606. },
  40607. //>>excludeStart("ide", pragmas.excludeIdeData);
  40608. args: ["aMethod", "aBlock"],
  40609. source: "nextPutMethodDeclaration: aMethod with: aBlock\x0a\x09stream\x0a\x09\x09nextPutAll: '$core.method({'; lf;\x0a\x09\x09nextPutAll: 'selector: ', aMethod selector asJavascript, ','; lf;\x0a\x09\x09nextPutAll: 'source: ', aMethod source asJavascript, ',';lf.\x0a\x09aBlock value.\x0a\x09stream\x0a\x09\x09nextPutAll: ',', String lf, 'messageSends: ';\x0a\x09\x09nextPutAll: aMethod messageSends asArray asJavascript, ','; lf;\x0a\x09\x09nextPutAll: 'args: ', (aMethod arguments collect: [ :each | each value ]) asArray asJavascript, ','; lf;\x0a\x09\x09nextPutAll: 'referencedClasses: ['.\x0a\x09aMethod classReferences\x0a\x09\x09do: [ :each | stream nextPutAll: each asJavascript ]\x0a\x09\x09separatedBy: [ stream nextPutAll: ',' ].\x0a\x09stream\x0a\x09\x09nextPutAll: ']';\x0a\x09\x09nextPutAll: '})'",
  40610. referencedClasses: ["String"],
  40611. //>>excludeEnd("ide");
  40612. messageSends: ["nextPutAll:", "lf", ",", "asJavascript", "selector", "source", "value", "asArray", "messageSends", "collect:", "arguments", "do:separatedBy:", "classReferences"]
  40613. }),
  40614. $globals.JSStream);
  40615. $core.addMethod(
  40616. $core.method({
  40617. selector: "nextPutNonLocalReturnHandlingWith:",
  40618. protocol: 'streaming',
  40619. fn: function (aBlock){
  40620. var self=this;
  40621. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  40622. return $core.withContext(function($ctx1) {
  40623. //>>excludeEnd("ctx");
  40624. var $1,$2,$3,$4;
  40625. $1=self["@stream"];
  40626. $recv($1)._nextPutAll_("var $early={};");
  40627. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  40628. $ctx1.sendIdx["nextPutAll:"]=1;
  40629. //>>excludeEnd("ctx");
  40630. $recv($1)._lf();
  40631. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  40632. $ctx1.sendIdx["lf"]=1;
  40633. //>>excludeEnd("ctx");
  40634. $recv($1)._nextPutAll_("try {");
  40635. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  40636. $ctx1.sendIdx["nextPutAll:"]=2;
  40637. //>>excludeEnd("ctx");
  40638. $2=$recv($1)._lf();
  40639. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  40640. $ctx1.sendIdx["lf"]=2;
  40641. //>>excludeEnd("ctx");
  40642. $recv(aBlock)._value();
  40643. $3=self["@stream"];
  40644. $recv($3)._nextPutAll_("}");
  40645. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  40646. $ctx1.sendIdx["nextPutAll:"]=3;
  40647. //>>excludeEnd("ctx");
  40648. $recv($3)._lf();
  40649. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  40650. $ctx1.sendIdx["lf"]=3;
  40651. //>>excludeEnd("ctx");
  40652. $recv($3)._nextPutAll_("catch(e) {if(e===$early)return e[0]; throw e}");
  40653. $4=$recv($3)._lf();
  40654. return self;
  40655. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  40656. }, function($ctx1) {$ctx1.fill(self,"nextPutNonLocalReturnHandlingWith:",{aBlock:aBlock},$globals.JSStream)});
  40657. //>>excludeEnd("ctx");
  40658. },
  40659. //>>excludeStart("ide", pragmas.excludeIdeData);
  40660. args: ["aBlock"],
  40661. 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",
  40662. referencedClasses: [],
  40663. //>>excludeEnd("ide");
  40664. messageSends: ["nextPutAll:", "lf", "value"]
  40665. }),
  40666. $globals.JSStream);
  40667. $core.addMethod(
  40668. $core.method({
  40669. selector: "nextPutNonLocalReturnWith:",
  40670. protocol: 'streaming',
  40671. fn: function (aBlock){
  40672. var self=this;
  40673. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  40674. return $core.withContext(function($ctx1) {
  40675. //>>excludeEnd("ctx");
  40676. $recv(self["@stream"])._nextPutAll_("throw $early=[");
  40677. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  40678. $ctx1.sendIdx["nextPutAll:"]=1;
  40679. //>>excludeEnd("ctx");
  40680. $recv(aBlock)._value();
  40681. $recv(self["@stream"])._nextPutAll_("]");
  40682. return self;
  40683. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  40684. }, function($ctx1) {$ctx1.fill(self,"nextPutNonLocalReturnWith:",{aBlock:aBlock},$globals.JSStream)});
  40685. //>>excludeEnd("ctx");
  40686. },
  40687. //>>excludeStart("ide", pragmas.excludeIdeData);
  40688. args: ["aBlock"],
  40689. source: "nextPutNonLocalReturnWith: aBlock\x0a\x09stream nextPutAll: 'throw $early=['.\x0a\x09aBlock value.\x0a\x09stream nextPutAll: ']'",
  40690. referencedClasses: [],
  40691. //>>excludeEnd("ide");
  40692. messageSends: ["nextPutAll:", "value"]
  40693. }),
  40694. $globals.JSStream);
  40695. $core.addMethod(
  40696. $core.method({
  40697. selector: "nextPutReturn",
  40698. protocol: 'streaming',
  40699. fn: function (){
  40700. var self=this;
  40701. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  40702. return $core.withContext(function($ctx1) {
  40703. //>>excludeEnd("ctx");
  40704. $recv(self["@stream"])._nextPutAll_("return ");
  40705. return self;
  40706. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  40707. }, function($ctx1) {$ctx1.fill(self,"nextPutReturn",{},$globals.JSStream)});
  40708. //>>excludeEnd("ctx");
  40709. },
  40710. //>>excludeStart("ide", pragmas.excludeIdeData);
  40711. args: [],
  40712. source: "nextPutReturn\x0a\x09stream nextPutAll: 'return '",
  40713. referencedClasses: [],
  40714. //>>excludeEnd("ide");
  40715. messageSends: ["nextPutAll:"]
  40716. }),
  40717. $globals.JSStream);
  40718. $core.addMethod(
  40719. $core.method({
  40720. selector: "nextPutReturnWith:",
  40721. protocol: 'streaming',
  40722. fn: function (aBlock){
  40723. var self=this;
  40724. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  40725. return $core.withContext(function($ctx1) {
  40726. //>>excludeEnd("ctx");
  40727. self._nextPutReturn();
  40728. $recv(aBlock)._value();
  40729. return self;
  40730. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  40731. }, function($ctx1) {$ctx1.fill(self,"nextPutReturnWith:",{aBlock:aBlock},$globals.JSStream)});
  40732. //>>excludeEnd("ctx");
  40733. },
  40734. //>>excludeStart("ide", pragmas.excludeIdeData);
  40735. args: ["aBlock"],
  40736. source: "nextPutReturnWith: aBlock\x0a\x09self nextPutReturn.\x0a\x09aBlock value",
  40737. referencedClasses: [],
  40738. //>>excludeEnd("ide");
  40739. messageSends: ["nextPutReturn", "value"]
  40740. }),
  40741. $globals.JSStream);
  40742. $core.addMethod(
  40743. $core.method({
  40744. selector: "nextPutSendIndexFor:",
  40745. protocol: 'streaming',
  40746. fn: function (anIRSend){
  40747. var self=this;
  40748. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  40749. return $core.withContext(function($ctx1) {
  40750. //>>excludeEnd("ctx");
  40751. var $1;
  40752. self._nextPutAll_(";");
  40753. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  40754. $ctx1.sendIdx["nextPutAll:"]=1;
  40755. //>>excludeEnd("ctx");
  40756. self._lf();
  40757. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  40758. $ctx1.sendIdx["lf"]=1;
  40759. //>>excludeEnd("ctx");
  40760. self._nextPutAll_("//>>excludeStart(\x22ctx\x22, pragmas.excludeDebugContexts);");
  40761. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  40762. $ctx1.sendIdx["nextPutAll:"]=2;
  40763. //>>excludeEnd("ctx");
  40764. self._lf();
  40765. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  40766. $ctx1.sendIdx["lf"]=2;
  40767. //>>excludeEnd("ctx");
  40768. self._nextPutAll_($recv($recv(anIRSend)._scope())._alias());
  40769. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  40770. $ctx1.sendIdx["nextPutAll:"]=3;
  40771. //>>excludeEnd("ctx");
  40772. self._nextPutAll_(".sendIdx[");
  40773. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  40774. $ctx1.sendIdx["nextPutAll:"]=4;
  40775. //>>excludeEnd("ctx");
  40776. self._nextPutAll_($recv($recv(anIRSend)._selector())._asJavascript());
  40777. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  40778. $ctx1.sendIdx["nextPutAll:"]=5;
  40779. //>>excludeEnd("ctx");
  40780. self._nextPutAll_("]=");
  40781. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  40782. $ctx1.sendIdx["nextPutAll:"]=6;
  40783. //>>excludeEnd("ctx");
  40784. self._nextPutAll_($recv($recv(anIRSend)._index())._asString());
  40785. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  40786. $ctx1.sendIdx["nextPutAll:"]=7;
  40787. //>>excludeEnd("ctx");
  40788. self._nextPutAll_(";");
  40789. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  40790. $ctx1.sendIdx["nextPutAll:"]=8;
  40791. //>>excludeEnd("ctx");
  40792. self._lf();
  40793. $1=self._nextPutAll_("//>>excludeEnd(\x22ctx\x22)");
  40794. return self;
  40795. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  40796. }, function($ctx1) {$ctx1.fill(self,"nextPutSendIndexFor:",{anIRSend:anIRSend},$globals.JSStream)});
  40797. //>>excludeEnd("ctx");
  40798. },
  40799. //>>excludeStart("ide", pragmas.excludeIdeData);
  40800. args: ["anIRSend"],
  40801. source: "nextPutSendIndexFor: anIRSend\x0a\x09self \x0a\x09\x09nextPutAll: ';'; lf;\x0a\x09\x09nextPutAll: '//>>excludeStart(\x22ctx\x22, pragmas.excludeDebugContexts);'; lf;\x0a\x09\x09nextPutAll: anIRSend scope alias;\x0a\x09\x09nextPutAll: '.sendIdx[';\x0a\x09\x09nextPutAll: anIRSend selector asJavascript;\x0a\x09\x09nextPutAll: ']=';\x0a\x09\x09nextPutAll: anIRSend index asString;\x0a\x09\x09nextPutAll: ';'; lf;\x0a\x09\x09nextPutAll: '//>>excludeEnd(\x22ctx\x22)'",
  40802. referencedClasses: [],
  40803. //>>excludeEnd("ide");
  40804. messageSends: ["nextPutAll:", "lf", "alias", "scope", "asJavascript", "selector", "asString", "index"]
  40805. }),
  40806. $globals.JSStream);
  40807. $core.addMethod(
  40808. $core.method({
  40809. selector: "nextPutSequenceWith:",
  40810. protocol: 'streaming',
  40811. fn: function (aBlock){
  40812. var self=this;
  40813. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  40814. return $core.withContext(function($ctx1) {
  40815. //>>excludeEnd("ctx");
  40816. $recv(aBlock)._value();
  40817. return self;
  40818. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  40819. }, function($ctx1) {$ctx1.fill(self,"nextPutSequenceWith:",{aBlock:aBlock},$globals.JSStream)});
  40820. //>>excludeEnd("ctx");
  40821. },
  40822. //>>excludeStart("ide", pragmas.excludeIdeData);
  40823. args: ["aBlock"],
  40824. source: "nextPutSequenceWith: aBlock\x0a\x09\x22stream\x0a\x09\x09nextPutAll: 'switch($core.thisContext.pc){'; lf.\x22\x0a\x09aBlock value.\x0a\x09\x22stream\x0a\x09\x09nextPutAll: '};'; lf\x22",
  40825. referencedClasses: [],
  40826. //>>excludeEnd("ide");
  40827. messageSends: ["value"]
  40828. }),
  40829. $globals.JSStream);
  40830. $core.addMethod(
  40831. $core.method({
  40832. selector: "nextPutStatementWith:",
  40833. protocol: 'streaming',
  40834. fn: function (aBlock){
  40835. var self=this;
  40836. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  40837. return $core.withContext(function($ctx1) {
  40838. //>>excludeEnd("ctx");
  40839. var $1,$2;
  40840. $recv(aBlock)._value();
  40841. $1=self["@stream"];
  40842. $recv($1)._nextPutAll_(";");
  40843. $2=$recv($1)._lf();
  40844. return self;
  40845. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  40846. }, function($ctx1) {$ctx1.fill(self,"nextPutStatementWith:",{aBlock:aBlock},$globals.JSStream)});
  40847. //>>excludeEnd("ctx");
  40848. },
  40849. //>>excludeStart("ide", pragmas.excludeIdeData);
  40850. args: ["aBlock"],
  40851. source: "nextPutStatementWith: aBlock\x0a\x09aBlock value.\x0a\x09stream nextPutAll: ';'; lf",
  40852. referencedClasses: [],
  40853. //>>excludeEnd("ide");
  40854. messageSends: ["value", "nextPutAll:", "lf"]
  40855. }),
  40856. $globals.JSStream);
  40857. $core.addMethod(
  40858. $core.method({
  40859. selector: "nextPutVars:",
  40860. protocol: 'streaming',
  40861. fn: function (aCollection){
  40862. var self=this;
  40863. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  40864. return $core.withContext(function($ctx1) {
  40865. //>>excludeEnd("ctx");
  40866. var $1,$2;
  40867. var $early={};
  40868. try {
  40869. $recv(aCollection)._ifEmpty_((function(){
  40870. throw $early=[self];
  40871. }));
  40872. $recv(self["@stream"])._nextPutAll_("var ");
  40873. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  40874. $ctx1.sendIdx["nextPutAll:"]=1;
  40875. //>>excludeEnd("ctx");
  40876. $recv(aCollection)._do_separatedBy_((function(each){
  40877. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  40878. return $core.withContext(function($ctx2) {
  40879. //>>excludeEnd("ctx");
  40880. return $recv(self["@stream"])._nextPutAll_(each);
  40881. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  40882. $ctx2.sendIdx["nextPutAll:"]=2;
  40883. //>>excludeEnd("ctx");
  40884. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  40885. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,2)});
  40886. //>>excludeEnd("ctx");
  40887. }),(function(){
  40888. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  40889. return $core.withContext(function($ctx2) {
  40890. //>>excludeEnd("ctx");
  40891. return $recv(self["@stream"])._nextPutAll_(",");
  40892. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  40893. $ctx2.sendIdx["nextPutAll:"]=3;
  40894. //>>excludeEnd("ctx");
  40895. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  40896. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,3)});
  40897. //>>excludeEnd("ctx");
  40898. }));
  40899. $1=self["@stream"];
  40900. $recv($1)._nextPutAll_(";");
  40901. $2=$recv($1)._lf();
  40902. return self;
  40903. }
  40904. catch(e) {if(e===$early)return e[0]; throw e}
  40905. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  40906. }, function($ctx1) {$ctx1.fill(self,"nextPutVars:",{aCollection:aCollection},$globals.JSStream)});
  40907. //>>excludeEnd("ctx");
  40908. },
  40909. //>>excludeStart("ide", pragmas.excludeIdeData);
  40910. args: ["aCollection"],
  40911. source: "nextPutVars: aCollection\x0a\x09aCollection ifEmpty: [ ^ self ].\x0a\x09\x0a\x09stream nextPutAll: 'var '.\x0a\x09aCollection\x0a\x09\x09do: [ :each | stream nextPutAll: each ]\x0a\x09\x09separatedBy: [ stream nextPutAll: ',' ].\x0a\x09stream nextPutAll: ';'; lf",
  40912. referencedClasses: [],
  40913. //>>excludeEnd("ide");
  40914. messageSends: ["ifEmpty:", "nextPutAll:", "do:separatedBy:", "lf"]
  40915. }),
  40916. $globals.JSStream);
  40917. $core.addMethod(
  40918. $core.method({
  40919. selector: "appendToInstruction:",
  40920. protocol: '*Compiler-IR',
  40921. fn: function (anIRInstruction){
  40922. var self=this;
  40923. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  40924. return $core.withContext(function($ctx1) {
  40925. //>>excludeEnd("ctx");
  40926. $recv(anIRInstruction)._appendBlock_(self);
  40927. return self;
  40928. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  40929. }, function($ctx1) {$ctx1.fill(self,"appendToInstruction:",{anIRInstruction:anIRInstruction},$globals.BlockClosure)});
  40930. //>>excludeEnd("ctx");
  40931. },
  40932. //>>excludeStart("ide", pragmas.excludeIdeData);
  40933. args: ["anIRInstruction"],
  40934. source: "appendToInstruction: anIRInstruction\x0a\x09anIRInstruction appendBlock: self",
  40935. referencedClasses: [],
  40936. //>>excludeEnd("ide");
  40937. messageSends: ["appendBlock:"]
  40938. }),
  40939. $globals.BlockClosure);
  40940. });
  40941. define("amber_core/Compiler-Inlining", ["amber/boot", "amber_core/Compiler-IR", "amber_core/Kernel-Objects", "amber_core/Compiler-Core"], function($boot){
  40942. var $core=$boot.api,nil=$boot.nil,$recv=$boot.asReceiver,$globals=$boot.globals;
  40943. var smalltalk=$core,_st=$recv,globals=$globals;
  40944. $core.addPackage('Compiler-Inlining');
  40945. $core.packages["Compiler-Inlining"].transport = {"type":"amd","amdNamespace":"amber_core"};
  40946. $core.addClass('IRInlinedAssignment', $globals.IRAssignment, [], 'Compiler-Inlining');
  40947. //>>excludeStart("ide", pragmas.excludeIdeData);
  40948. $globals.IRInlinedAssignment.comment="I represent an inlined assignment instruction.";
  40949. //>>excludeEnd("ide");
  40950. $core.addMethod(
  40951. $core.method({
  40952. selector: "accept:",
  40953. protocol: 'visiting',
  40954. fn: function (aVisitor){
  40955. var self=this;
  40956. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  40957. return $core.withContext(function($ctx1) {
  40958. //>>excludeEnd("ctx");
  40959. var $1;
  40960. $1=$recv(aVisitor)._visitIRInlinedAssignment_(self);
  40961. return $1;
  40962. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  40963. }, function($ctx1) {$ctx1.fill(self,"accept:",{aVisitor:aVisitor},$globals.IRInlinedAssignment)});
  40964. //>>excludeEnd("ctx");
  40965. },
  40966. //>>excludeStart("ide", pragmas.excludeIdeData);
  40967. args: ["aVisitor"],
  40968. source: "accept: aVisitor\x0a\x09^ aVisitor visitIRInlinedAssignment: self",
  40969. referencedClasses: [],
  40970. //>>excludeEnd("ide");
  40971. messageSends: ["visitIRInlinedAssignment:"]
  40972. }),
  40973. $globals.IRInlinedAssignment);
  40974. $core.addMethod(
  40975. $core.method({
  40976. selector: "isInlined",
  40977. protocol: 'testing',
  40978. fn: function (){
  40979. var self=this;
  40980. return true;
  40981. },
  40982. //>>excludeStart("ide", pragmas.excludeIdeData);
  40983. args: [],
  40984. source: "isInlined\x0a\x09^ true",
  40985. referencedClasses: [],
  40986. //>>excludeEnd("ide");
  40987. messageSends: []
  40988. }),
  40989. $globals.IRInlinedAssignment);
  40990. $core.addClass('IRInlinedClosure', $globals.IRClosure, [], 'Compiler-Inlining');
  40991. //>>excludeStart("ide", pragmas.excludeIdeData);
  40992. $globals.IRInlinedClosure.comment="I represent an inlined closure instruction.";
  40993. //>>excludeEnd("ide");
  40994. $core.addMethod(
  40995. $core.method({
  40996. selector: "accept:",
  40997. protocol: 'visiting',
  40998. fn: function (aVisitor){
  40999. var self=this;
  41000. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41001. return $core.withContext(function($ctx1) {
  41002. //>>excludeEnd("ctx");
  41003. $recv(aVisitor)._visitIRInlinedClosure_(self);
  41004. return self;
  41005. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41006. }, function($ctx1) {$ctx1.fill(self,"accept:",{aVisitor:aVisitor},$globals.IRInlinedClosure)});
  41007. //>>excludeEnd("ctx");
  41008. },
  41009. //>>excludeStart("ide", pragmas.excludeIdeData);
  41010. args: ["aVisitor"],
  41011. source: "accept: aVisitor\x0a\x09aVisitor visitIRInlinedClosure: self",
  41012. referencedClasses: [],
  41013. //>>excludeEnd("ide");
  41014. messageSends: ["visitIRInlinedClosure:"]
  41015. }),
  41016. $globals.IRInlinedClosure);
  41017. $core.addMethod(
  41018. $core.method({
  41019. selector: "isInlined",
  41020. protocol: 'testing',
  41021. fn: function (){
  41022. var self=this;
  41023. return true;
  41024. },
  41025. //>>excludeStart("ide", pragmas.excludeIdeData);
  41026. args: [],
  41027. source: "isInlined\x0a\x09^ true",
  41028. referencedClasses: [],
  41029. //>>excludeEnd("ide");
  41030. messageSends: []
  41031. }),
  41032. $globals.IRInlinedClosure);
  41033. $core.addClass('IRInlinedReturn', $globals.IRReturn, [], 'Compiler-Inlining');
  41034. //>>excludeStart("ide", pragmas.excludeIdeData);
  41035. $globals.IRInlinedReturn.comment="I represent an inlined local return instruction.";
  41036. //>>excludeEnd("ide");
  41037. $core.addMethod(
  41038. $core.method({
  41039. selector: "accept:",
  41040. protocol: 'visiting',
  41041. fn: function (aVisitor){
  41042. var self=this;
  41043. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41044. return $core.withContext(function($ctx1) {
  41045. //>>excludeEnd("ctx");
  41046. var $1;
  41047. $1=$recv(aVisitor)._visitIRInlinedReturn_(self);
  41048. return $1;
  41049. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41050. }, function($ctx1) {$ctx1.fill(self,"accept:",{aVisitor:aVisitor},$globals.IRInlinedReturn)});
  41051. //>>excludeEnd("ctx");
  41052. },
  41053. //>>excludeStart("ide", pragmas.excludeIdeData);
  41054. args: ["aVisitor"],
  41055. source: "accept: aVisitor\x0a\x09^ aVisitor visitIRInlinedReturn: self",
  41056. referencedClasses: [],
  41057. //>>excludeEnd("ide");
  41058. messageSends: ["visitIRInlinedReturn:"]
  41059. }),
  41060. $globals.IRInlinedReturn);
  41061. $core.addMethod(
  41062. $core.method({
  41063. selector: "isInlined",
  41064. protocol: 'testing',
  41065. fn: function (){
  41066. var self=this;
  41067. return true;
  41068. },
  41069. //>>excludeStart("ide", pragmas.excludeIdeData);
  41070. args: [],
  41071. source: "isInlined\x0a\x09^ true",
  41072. referencedClasses: [],
  41073. //>>excludeEnd("ide");
  41074. messageSends: []
  41075. }),
  41076. $globals.IRInlinedReturn);
  41077. $core.addClass('IRInlinedSend', $globals.IRSend, [], 'Compiler-Inlining');
  41078. //>>excludeStart("ide", pragmas.excludeIdeData);
  41079. $globals.IRInlinedSend.comment="I am the abstract super class of inlined message send instructions.";
  41080. //>>excludeEnd("ide");
  41081. $core.addMethod(
  41082. $core.method({
  41083. selector: "accept:",
  41084. protocol: 'visiting',
  41085. fn: function (aVisitor){
  41086. var self=this;
  41087. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41088. return $core.withContext(function($ctx1) {
  41089. //>>excludeEnd("ctx");
  41090. $recv(aVisitor)._visitInlinedSend_(self);
  41091. return self;
  41092. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41093. }, function($ctx1) {$ctx1.fill(self,"accept:",{aVisitor:aVisitor},$globals.IRInlinedSend)});
  41094. //>>excludeEnd("ctx");
  41095. },
  41096. //>>excludeStart("ide", pragmas.excludeIdeData);
  41097. args: ["aVisitor"],
  41098. source: "accept: aVisitor\x0a\x09aVisitor visitInlinedSend: self",
  41099. referencedClasses: [],
  41100. //>>excludeEnd("ide");
  41101. messageSends: ["visitInlinedSend:"]
  41102. }),
  41103. $globals.IRInlinedSend);
  41104. $core.addMethod(
  41105. $core.method({
  41106. selector: "internalVariables",
  41107. protocol: 'accessing',
  41108. fn: function (){
  41109. var self=this;
  41110. var $1;
  41111. $1=[];
  41112. return $1;
  41113. },
  41114. //>>excludeStart("ide", pragmas.excludeIdeData);
  41115. args: [],
  41116. source: "internalVariables\x0a\x09\x22Answer a collection of internal variables required \x0a\x09to perform the inlining\x22\x0a\x09\x0a\x09^ #()",
  41117. referencedClasses: [],
  41118. //>>excludeEnd("ide");
  41119. messageSends: []
  41120. }),
  41121. $globals.IRInlinedSend);
  41122. $core.addMethod(
  41123. $core.method({
  41124. selector: "isInlined",
  41125. protocol: 'testing',
  41126. fn: function (){
  41127. var self=this;
  41128. return true;
  41129. },
  41130. //>>excludeStart("ide", pragmas.excludeIdeData);
  41131. args: [],
  41132. source: "isInlined\x0a\x09^ true",
  41133. referencedClasses: [],
  41134. //>>excludeEnd("ide");
  41135. messageSends: []
  41136. }),
  41137. $globals.IRInlinedSend);
  41138. $core.addClass('IRInlinedIfFalse', $globals.IRInlinedSend, [], 'Compiler-Inlining');
  41139. //>>excludeStart("ide", pragmas.excludeIdeData);
  41140. $globals.IRInlinedIfFalse.comment="I represent an inlined `#ifFalse:` message send instruction.";
  41141. //>>excludeEnd("ide");
  41142. $core.addMethod(
  41143. $core.method({
  41144. selector: "accept:",
  41145. protocol: 'visiting',
  41146. fn: function (aVisitor){
  41147. var self=this;
  41148. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41149. return $core.withContext(function($ctx1) {
  41150. //>>excludeEnd("ctx");
  41151. $recv(aVisitor)._visitIRInlinedIfFalse_(self);
  41152. return self;
  41153. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41154. }, function($ctx1) {$ctx1.fill(self,"accept:",{aVisitor:aVisitor},$globals.IRInlinedIfFalse)});
  41155. //>>excludeEnd("ctx");
  41156. },
  41157. //>>excludeStart("ide", pragmas.excludeIdeData);
  41158. args: ["aVisitor"],
  41159. source: "accept: aVisitor\x0a\x09aVisitor visitIRInlinedIfFalse: self",
  41160. referencedClasses: [],
  41161. //>>excludeEnd("ide");
  41162. messageSends: ["visitIRInlinedIfFalse:"]
  41163. }),
  41164. $globals.IRInlinedIfFalse);
  41165. $core.addClass('IRInlinedIfNilIfNotNil', $globals.IRInlinedSend, [], 'Compiler-Inlining');
  41166. //>>excludeStart("ide", pragmas.excludeIdeData);
  41167. $globals.IRInlinedIfNilIfNotNil.comment="I represent an inlined `#ifNil:ifNotNil:` message send instruction.";
  41168. //>>excludeEnd("ide");
  41169. $core.addMethod(
  41170. $core.method({
  41171. selector: "accept:",
  41172. protocol: 'visiting',
  41173. fn: function (aVisitor){
  41174. var self=this;
  41175. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41176. return $core.withContext(function($ctx1) {
  41177. //>>excludeEnd("ctx");
  41178. $recv(aVisitor)._visitIRInlinedIfNilIfNotNil_(self);
  41179. return self;
  41180. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41181. }, function($ctx1) {$ctx1.fill(self,"accept:",{aVisitor:aVisitor},$globals.IRInlinedIfNilIfNotNil)});
  41182. //>>excludeEnd("ctx");
  41183. },
  41184. //>>excludeStart("ide", pragmas.excludeIdeData);
  41185. args: ["aVisitor"],
  41186. source: "accept: aVisitor\x0a\x09aVisitor visitIRInlinedIfNilIfNotNil: self",
  41187. referencedClasses: [],
  41188. //>>excludeEnd("ide");
  41189. messageSends: ["visitIRInlinedIfNilIfNotNil:"]
  41190. }),
  41191. $globals.IRInlinedIfNilIfNotNil);
  41192. $core.addMethod(
  41193. $core.method({
  41194. selector: "internalVariables",
  41195. protocol: 'accessing',
  41196. fn: function (){
  41197. var self=this;
  41198. function $Array(){return $globals.Array||(typeof Array=="undefined"?nil:Array)}
  41199. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41200. return $core.withContext(function($ctx1) {
  41201. //>>excludeEnd("ctx");
  41202. var $1;
  41203. $1=$recv($Array())._with_(self._receiverInternalVariable());
  41204. return $1;
  41205. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41206. }, function($ctx1) {$ctx1.fill(self,"internalVariables",{},$globals.IRInlinedIfNilIfNotNil)});
  41207. //>>excludeEnd("ctx");
  41208. },
  41209. //>>excludeStart("ide", pragmas.excludeIdeData);
  41210. args: [],
  41211. source: "internalVariables\x0a\x09^ Array with: self receiverInternalVariable",
  41212. referencedClasses: ["Array"],
  41213. //>>excludeEnd("ide");
  41214. messageSends: ["with:", "receiverInternalVariable"]
  41215. }),
  41216. $globals.IRInlinedIfNilIfNotNil);
  41217. $core.addMethod(
  41218. $core.method({
  41219. selector: "receiverInternalVariable",
  41220. protocol: 'accessing',
  41221. fn: function (){
  41222. var self=this;
  41223. function $IRVariable(){return $globals.IRVariable||(typeof IRVariable=="undefined"?nil:IRVariable)}
  41224. function $AliasVar(){return $globals.AliasVar||(typeof AliasVar=="undefined"?nil:AliasVar)}
  41225. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41226. return $core.withContext(function($ctx1) {
  41227. //>>excludeEnd("ctx");
  41228. var $2,$3,$1;
  41229. $2=$recv($IRVariable())._new();
  41230. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41231. $ctx1.sendIdx["new"]=1;
  41232. //>>excludeEnd("ctx");
  41233. $recv($2)._variable_($recv($recv($AliasVar())._new())._name_(self._receiverInternalVariableName()));
  41234. $3=$recv($2)._yourself();
  41235. $1=$3;
  41236. return $1;
  41237. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41238. }, function($ctx1) {$ctx1.fill(self,"receiverInternalVariable",{},$globals.IRInlinedIfNilIfNotNil)});
  41239. //>>excludeEnd("ctx");
  41240. },
  41241. //>>excludeStart("ide", pragmas.excludeIdeData);
  41242. args: [],
  41243. source: "receiverInternalVariable\x0a\x09^ IRVariable new\x0a\x09\x09variable: (AliasVar new name: self receiverInternalVariableName);\x0a\x09\x09yourself.",
  41244. referencedClasses: ["IRVariable", "AliasVar"],
  41245. //>>excludeEnd("ide");
  41246. messageSends: ["variable:", "new", "name:", "receiverInternalVariableName", "yourself"]
  41247. }),
  41248. $globals.IRInlinedIfNilIfNotNil);
  41249. $core.addMethod(
  41250. $core.method({
  41251. selector: "receiverInternalVariableName",
  41252. protocol: 'accessing',
  41253. fn: function (){
  41254. var self=this;
  41255. return "$receiver";
  41256. },
  41257. //>>excludeStart("ide", pragmas.excludeIdeData);
  41258. args: [],
  41259. source: "receiverInternalVariableName\x0a\x09^ '$receiver'",
  41260. referencedClasses: [],
  41261. //>>excludeEnd("ide");
  41262. messageSends: []
  41263. }),
  41264. $globals.IRInlinedIfNilIfNotNil);
  41265. $core.addClass('IRInlinedIfTrue', $globals.IRInlinedSend, [], 'Compiler-Inlining');
  41266. //>>excludeStart("ide", pragmas.excludeIdeData);
  41267. $globals.IRInlinedIfTrue.comment="I represent an inlined `#ifTrue:` message send instruction.";
  41268. //>>excludeEnd("ide");
  41269. $core.addMethod(
  41270. $core.method({
  41271. selector: "accept:",
  41272. protocol: 'visiting',
  41273. fn: function (aVisitor){
  41274. var self=this;
  41275. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41276. return $core.withContext(function($ctx1) {
  41277. //>>excludeEnd("ctx");
  41278. $recv(aVisitor)._visitIRInlinedIfTrue_(self);
  41279. return self;
  41280. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41281. }, function($ctx1) {$ctx1.fill(self,"accept:",{aVisitor:aVisitor},$globals.IRInlinedIfTrue)});
  41282. //>>excludeEnd("ctx");
  41283. },
  41284. //>>excludeStart("ide", pragmas.excludeIdeData);
  41285. args: ["aVisitor"],
  41286. source: "accept: aVisitor\x0a\x09aVisitor visitIRInlinedIfTrue: self",
  41287. referencedClasses: [],
  41288. //>>excludeEnd("ide");
  41289. messageSends: ["visitIRInlinedIfTrue:"]
  41290. }),
  41291. $globals.IRInlinedIfTrue);
  41292. $core.addClass('IRInlinedIfTrueIfFalse', $globals.IRInlinedSend, [], 'Compiler-Inlining');
  41293. //>>excludeStart("ide", pragmas.excludeIdeData);
  41294. $globals.IRInlinedIfTrueIfFalse.comment="I represent an inlined `#ifTrue:ifFalse:` message send instruction.";
  41295. //>>excludeEnd("ide");
  41296. $core.addMethod(
  41297. $core.method({
  41298. selector: "accept:",
  41299. protocol: 'visiting',
  41300. fn: function (aVisitor){
  41301. var self=this;
  41302. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41303. return $core.withContext(function($ctx1) {
  41304. //>>excludeEnd("ctx");
  41305. $recv(aVisitor)._visitIRInlinedIfTrueIfFalse_(self);
  41306. return self;
  41307. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41308. }, function($ctx1) {$ctx1.fill(self,"accept:",{aVisitor:aVisitor},$globals.IRInlinedIfTrueIfFalse)});
  41309. //>>excludeEnd("ctx");
  41310. },
  41311. //>>excludeStart("ide", pragmas.excludeIdeData);
  41312. args: ["aVisitor"],
  41313. source: "accept: aVisitor\x0a\x09aVisitor visitIRInlinedIfTrueIfFalse: self",
  41314. referencedClasses: [],
  41315. //>>excludeEnd("ide");
  41316. messageSends: ["visitIRInlinedIfTrueIfFalse:"]
  41317. }),
  41318. $globals.IRInlinedIfTrueIfFalse);
  41319. $core.addClass('IRInlinedSequence', $globals.IRBlockSequence, [], 'Compiler-Inlining');
  41320. //>>excludeStart("ide", pragmas.excludeIdeData);
  41321. $globals.IRInlinedSequence.comment="I represent a (block) sequence inside an inlined closure instruction (instance of `IRInlinedClosure`).";
  41322. //>>excludeEnd("ide");
  41323. $core.addMethod(
  41324. $core.method({
  41325. selector: "accept:",
  41326. protocol: 'visiting',
  41327. fn: function (aVisitor){
  41328. var self=this;
  41329. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41330. return $core.withContext(function($ctx1) {
  41331. //>>excludeEnd("ctx");
  41332. $recv(aVisitor)._visitIRInlinedSequence_(self);
  41333. return self;
  41334. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41335. }, function($ctx1) {$ctx1.fill(self,"accept:",{aVisitor:aVisitor},$globals.IRInlinedSequence)});
  41336. //>>excludeEnd("ctx");
  41337. },
  41338. //>>excludeStart("ide", pragmas.excludeIdeData);
  41339. args: ["aVisitor"],
  41340. source: "accept: aVisitor\x0a\x09aVisitor visitIRInlinedSequence: self",
  41341. referencedClasses: [],
  41342. //>>excludeEnd("ide");
  41343. messageSends: ["visitIRInlinedSequence:"]
  41344. }),
  41345. $globals.IRInlinedSequence);
  41346. $core.addMethod(
  41347. $core.method({
  41348. selector: "isInlined",
  41349. protocol: 'testing',
  41350. fn: function (){
  41351. var self=this;
  41352. return true;
  41353. },
  41354. //>>excludeStart("ide", pragmas.excludeIdeData);
  41355. args: [],
  41356. source: "isInlined\x0a\x09^ true",
  41357. referencedClasses: [],
  41358. //>>excludeEnd("ide");
  41359. messageSends: []
  41360. }),
  41361. $globals.IRInlinedSequence);
  41362. $core.addClass('IRInliner', $globals.IRVisitor, [], 'Compiler-Inlining');
  41363. //>>excludeStart("ide", pragmas.excludeIdeData);
  41364. $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`";
  41365. //>>excludeEnd("ide");
  41366. $core.addMethod(
  41367. $core.method({
  41368. selector: "assignmentInliner",
  41369. protocol: 'factory',
  41370. fn: function (){
  41371. var self=this;
  41372. function $IRAssignmentInliner(){return $globals.IRAssignmentInliner||(typeof IRAssignmentInliner=="undefined"?nil:IRAssignmentInliner)}
  41373. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41374. return $core.withContext(function($ctx1) {
  41375. //>>excludeEnd("ctx");
  41376. var $2,$3,$1;
  41377. $2=$recv($IRAssignmentInliner())._new();
  41378. $recv($2)._translator_(self);
  41379. $3=$recv($2)._yourself();
  41380. $1=$3;
  41381. return $1;
  41382. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41383. }, function($ctx1) {$ctx1.fill(self,"assignmentInliner",{},$globals.IRInliner)});
  41384. //>>excludeEnd("ctx");
  41385. },
  41386. //>>excludeStart("ide", pragmas.excludeIdeData);
  41387. args: [],
  41388. source: "assignmentInliner\x0a\x09^ IRAssignmentInliner new\x0a\x09\x09translator: self;\x0a\x09\x09yourself",
  41389. referencedClasses: ["IRAssignmentInliner"],
  41390. //>>excludeEnd("ide");
  41391. messageSends: ["translator:", "new", "yourself"]
  41392. }),
  41393. $globals.IRInliner);
  41394. $core.addMethod(
  41395. $core.method({
  41396. selector: "returnInliner",
  41397. protocol: 'factory',
  41398. fn: function (){
  41399. var self=this;
  41400. function $IRReturnInliner(){return $globals.IRReturnInliner||(typeof IRReturnInliner=="undefined"?nil:IRReturnInliner)}
  41401. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41402. return $core.withContext(function($ctx1) {
  41403. //>>excludeEnd("ctx");
  41404. var $2,$3,$1;
  41405. $2=$recv($IRReturnInliner())._new();
  41406. $recv($2)._translator_(self);
  41407. $3=$recv($2)._yourself();
  41408. $1=$3;
  41409. return $1;
  41410. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41411. }, function($ctx1) {$ctx1.fill(self,"returnInliner",{},$globals.IRInliner)});
  41412. //>>excludeEnd("ctx");
  41413. },
  41414. //>>excludeStart("ide", pragmas.excludeIdeData);
  41415. args: [],
  41416. source: "returnInliner\x0a\x09^ IRReturnInliner new\x0a\x09\x09translator: self;\x0a\x09\x09yourself",
  41417. referencedClasses: ["IRReturnInliner"],
  41418. //>>excludeEnd("ide");
  41419. messageSends: ["translator:", "new", "yourself"]
  41420. }),
  41421. $globals.IRInliner);
  41422. $core.addMethod(
  41423. $core.method({
  41424. selector: "sendInliner",
  41425. protocol: 'factory',
  41426. fn: function (){
  41427. var self=this;
  41428. function $IRSendInliner(){return $globals.IRSendInliner||(typeof IRSendInliner=="undefined"?nil:IRSendInliner)}
  41429. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41430. return $core.withContext(function($ctx1) {
  41431. //>>excludeEnd("ctx");
  41432. var $2,$3,$1;
  41433. $2=$recv($IRSendInliner())._new();
  41434. $recv($2)._translator_(self);
  41435. $3=$recv($2)._yourself();
  41436. $1=$3;
  41437. return $1;
  41438. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41439. }, function($ctx1) {$ctx1.fill(self,"sendInliner",{},$globals.IRInliner)});
  41440. //>>excludeEnd("ctx");
  41441. },
  41442. //>>excludeStart("ide", pragmas.excludeIdeData);
  41443. args: [],
  41444. source: "sendInliner\x0a\x09^ IRSendInliner new\x0a\x09\x09translator: self;\x0a\x09\x09yourself",
  41445. referencedClasses: ["IRSendInliner"],
  41446. //>>excludeEnd("ide");
  41447. messageSends: ["translator:", "new", "yourself"]
  41448. }),
  41449. $globals.IRInliner);
  41450. $core.addMethod(
  41451. $core.method({
  41452. selector: "shouldInlineAssignment:",
  41453. protocol: 'testing',
  41454. fn: function (anIRAssignment){
  41455. var self=this;
  41456. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41457. return $core.withContext(function($ctx1) {
  41458. //>>excludeEnd("ctx");
  41459. var $4,$3,$2,$1;
  41460. $1=$recv($recv($recv(anIRAssignment)._isInlined())._not())._and_((function(){
  41461. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41462. return $core.withContext(function($ctx2) {
  41463. //>>excludeEnd("ctx");
  41464. $4=$recv(anIRAssignment)._instructions();
  41465. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41466. $ctx2.sendIdx["instructions"]=1;
  41467. //>>excludeEnd("ctx");
  41468. $3=$recv($4)._last();
  41469. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41470. $ctx2.sendIdx["last"]=1;
  41471. //>>excludeEnd("ctx");
  41472. $2=$recv($3)._isSend();
  41473. return $recv($2)._and_((function(){
  41474. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41475. return $core.withContext(function($ctx3) {
  41476. //>>excludeEnd("ctx");
  41477. return self._shouldInlineSend_($recv($recv(anIRAssignment)._instructions())._last());
  41478. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41479. }, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)});
  41480. //>>excludeEnd("ctx");
  41481. }));
  41482. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41483. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  41484. //>>excludeEnd("ctx");
  41485. }));
  41486. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41487. $ctx1.sendIdx["and:"]=1;
  41488. //>>excludeEnd("ctx");
  41489. return $1;
  41490. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41491. }, function($ctx1) {$ctx1.fill(self,"shouldInlineAssignment:",{anIRAssignment:anIRAssignment},$globals.IRInliner)});
  41492. //>>excludeEnd("ctx");
  41493. },
  41494. //>>excludeStart("ide", pragmas.excludeIdeData);
  41495. args: ["anIRAssignment"],
  41496. source: "shouldInlineAssignment: anIRAssignment\x0a\x09^ anIRAssignment isInlined not and: [\x0a\x09\x09anIRAssignment instructions last isSend and: [\x0a\x09\x09\x09self shouldInlineSend: (anIRAssignment instructions last) ]]",
  41497. referencedClasses: [],
  41498. //>>excludeEnd("ide");
  41499. messageSends: ["and:", "not", "isInlined", "isSend", "last", "instructions", "shouldInlineSend:"]
  41500. }),
  41501. $globals.IRInliner);
  41502. $core.addMethod(
  41503. $core.method({
  41504. selector: "shouldInlineReturn:",
  41505. protocol: 'testing',
  41506. fn: function (anIRReturn){
  41507. var self=this;
  41508. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41509. return $core.withContext(function($ctx1) {
  41510. //>>excludeEnd("ctx");
  41511. var $4,$3,$2,$1;
  41512. $1=$recv($recv($recv(anIRReturn)._isInlined())._not())._and_((function(){
  41513. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41514. return $core.withContext(function($ctx2) {
  41515. //>>excludeEnd("ctx");
  41516. $4=$recv(anIRReturn)._instructions();
  41517. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41518. $ctx2.sendIdx["instructions"]=1;
  41519. //>>excludeEnd("ctx");
  41520. $3=$recv($4)._first();
  41521. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41522. $ctx2.sendIdx["first"]=1;
  41523. //>>excludeEnd("ctx");
  41524. $2=$recv($3)._isSend();
  41525. return $recv($2)._and_((function(){
  41526. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41527. return $core.withContext(function($ctx3) {
  41528. //>>excludeEnd("ctx");
  41529. return self._shouldInlineSend_($recv($recv(anIRReturn)._instructions())._first());
  41530. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41531. }, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)});
  41532. //>>excludeEnd("ctx");
  41533. }));
  41534. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41535. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  41536. //>>excludeEnd("ctx");
  41537. }));
  41538. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41539. $ctx1.sendIdx["and:"]=1;
  41540. //>>excludeEnd("ctx");
  41541. return $1;
  41542. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41543. }, function($ctx1) {$ctx1.fill(self,"shouldInlineReturn:",{anIRReturn:anIRReturn},$globals.IRInliner)});
  41544. //>>excludeEnd("ctx");
  41545. },
  41546. //>>excludeStart("ide", pragmas.excludeIdeData);
  41547. args: ["anIRReturn"],
  41548. source: "shouldInlineReturn: anIRReturn\x0a\x09^ anIRReturn isInlined not and: [\x0a\x09\x09anIRReturn instructions first isSend and: [\x0a\x09\x09\x09self shouldInlineSend: (anIRReturn instructions first) ]]",
  41549. referencedClasses: [],
  41550. //>>excludeEnd("ide");
  41551. messageSends: ["and:", "not", "isInlined", "isSend", "first", "instructions", "shouldInlineSend:"]
  41552. }),
  41553. $globals.IRInliner);
  41554. $core.addMethod(
  41555. $core.method({
  41556. selector: "shouldInlineSend:",
  41557. protocol: 'testing',
  41558. fn: function (anIRSend){
  41559. var self=this;
  41560. function $IRSendInliner(){return $globals.IRSendInliner||(typeof IRSendInliner=="undefined"?nil:IRSendInliner)}
  41561. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41562. return $core.withContext(function($ctx1) {
  41563. //>>excludeEnd("ctx");
  41564. var $1;
  41565. $1=$recv($recv($recv(anIRSend)._isInlined())._not())._and_((function(){
  41566. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41567. return $core.withContext(function($ctx2) {
  41568. //>>excludeEnd("ctx");
  41569. return $recv($IRSendInliner())._shouldInline_(anIRSend);
  41570. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41571. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  41572. //>>excludeEnd("ctx");
  41573. }));
  41574. return $1;
  41575. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41576. }, function($ctx1) {$ctx1.fill(self,"shouldInlineSend:",{anIRSend:anIRSend},$globals.IRInliner)});
  41577. //>>excludeEnd("ctx");
  41578. },
  41579. //>>excludeStart("ide", pragmas.excludeIdeData);
  41580. args: ["anIRSend"],
  41581. source: "shouldInlineSend: anIRSend\x0a\x09^ anIRSend isInlined not and: [\x0a\x09\x09IRSendInliner shouldInline: anIRSend ]",
  41582. referencedClasses: ["IRSendInliner"],
  41583. //>>excludeEnd("ide");
  41584. messageSends: ["and:", "not", "isInlined", "shouldInline:"]
  41585. }),
  41586. $globals.IRInliner);
  41587. $core.addMethod(
  41588. $core.method({
  41589. selector: "transformNonLocalReturn:",
  41590. protocol: 'visiting',
  41591. fn: function (anIRNonLocalReturn){
  41592. var self=this;
  41593. var localReturn;
  41594. function $IRReturn(){return $globals.IRReturn||(typeof IRReturn=="undefined"?nil:IRReturn)}
  41595. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41596. return $core.withContext(function($ctx1) {
  41597. //>>excludeEnd("ctx");
  41598. var $2,$1,$4,$3,$5,$6,$7,$8,$9;
  41599. $2=$recv(anIRNonLocalReturn)._scope();
  41600. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41601. $ctx1.sendIdx["scope"]=1;
  41602. //>>excludeEnd("ctx");
  41603. $1=$recv($2)._canInlineNonLocalReturns();
  41604. if($core.assert($1)){
  41605. $4=$recv(anIRNonLocalReturn)._scope();
  41606. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41607. $ctx1.sendIdx["scope"]=2;
  41608. //>>excludeEnd("ctx");
  41609. $3=$recv($4)._methodScope();
  41610. $5=$recv(anIRNonLocalReturn)._scope();
  41611. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41612. $ctx1.sendIdx["scope"]=3;
  41613. //>>excludeEnd("ctx");
  41614. $recv($3)._removeNonLocalReturn_($5);
  41615. $6=$recv($IRReturn())._new();
  41616. $recv($6)._scope_($recv(anIRNonLocalReturn)._scope());
  41617. $7=$recv($6)._yourself();
  41618. localReturn=$7;
  41619. localReturn;
  41620. $recv($recv(anIRNonLocalReturn)._instructions())._do_((function(each){
  41621. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41622. return $core.withContext(function($ctx2) {
  41623. //>>excludeEnd("ctx");
  41624. return $recv(localReturn)._add_(each);
  41625. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41626. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,2)});
  41627. //>>excludeEnd("ctx");
  41628. }));
  41629. $recv(anIRNonLocalReturn)._replaceWith_(localReturn);
  41630. $8=localReturn;
  41631. return $8;
  41632. };
  41633. $9=(
  41634. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41635. $ctx1.supercall = true,
  41636. //>>excludeEnd("ctx");
  41637. $globals.IRInliner.superclass.fn.prototype._visitIRNonLocalReturn_.apply($recv(self), [anIRNonLocalReturn]));
  41638. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41639. $ctx1.supercall = false;
  41640. //>>excludeEnd("ctx");;
  41641. return $9;
  41642. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41643. }, function($ctx1) {$ctx1.fill(self,"transformNonLocalReturn:",{anIRNonLocalReturn:anIRNonLocalReturn,localReturn:localReturn},$globals.IRInliner)});
  41644. //>>excludeEnd("ctx");
  41645. },
  41646. //>>excludeStart("ide", pragmas.excludeIdeData);
  41647. args: ["anIRNonLocalReturn"],
  41648. source: "transformNonLocalReturn: anIRNonLocalReturn\x0a\x09\x22Replace a non local return into a local return\x22\x0a\x0a\x09| localReturn |\x0a\x09anIRNonLocalReturn scope canInlineNonLocalReturns ifTrue: [\x0a\x09\x09anIRNonLocalReturn scope methodScope removeNonLocalReturn: anIRNonLocalReturn scope.\x0a\x09\x09localReturn := IRReturn new\x0a\x09\x09\x09scope: anIRNonLocalReturn scope;\x0a\x09\x09\x09yourself.\x0a\x09\x09anIRNonLocalReturn instructions do: [ :each |\x0a\x09\x09\x09localReturn add: each ].\x0a\x09\x09anIRNonLocalReturn replaceWith: localReturn.\x0a\x09\x09^ localReturn ].\x0a\x09^ super visitIRNonLocalReturn: anIRNonLocalReturn",
  41649. referencedClasses: ["IRReturn"],
  41650. //>>excludeEnd("ide");
  41651. messageSends: ["ifTrue:", "canInlineNonLocalReturns", "scope", "removeNonLocalReturn:", "methodScope", "scope:", "new", "yourself", "do:", "instructions", "add:", "replaceWith:", "visitIRNonLocalReturn:"]
  41652. }),
  41653. $globals.IRInliner);
  41654. $core.addMethod(
  41655. $core.method({
  41656. selector: "visitIRAssignment:",
  41657. protocol: 'visiting',
  41658. fn: function (anIRAssignment){
  41659. var self=this;
  41660. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41661. return $core.withContext(function($ctx1) {
  41662. //>>excludeEnd("ctx");
  41663. var $2,$1;
  41664. $2=self._shouldInlineAssignment_(anIRAssignment);
  41665. if($core.assert($2)){
  41666. $1=$recv(self._assignmentInliner())._inlineAssignment_(anIRAssignment);
  41667. } else {
  41668. $1=(
  41669. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41670. $ctx1.supercall = true,
  41671. //>>excludeEnd("ctx");
  41672. $globals.IRInliner.superclass.fn.prototype._visitIRAssignment_.apply($recv(self), [anIRAssignment]));
  41673. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41674. $ctx1.supercall = false;
  41675. //>>excludeEnd("ctx");;
  41676. };
  41677. return $1;
  41678. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41679. }, function($ctx1) {$ctx1.fill(self,"visitIRAssignment:",{anIRAssignment:anIRAssignment},$globals.IRInliner)});
  41680. //>>excludeEnd("ctx");
  41681. },
  41682. //>>excludeStart("ide", pragmas.excludeIdeData);
  41683. args: ["anIRAssignment"],
  41684. source: "visitIRAssignment: anIRAssignment\x0a\x09^ (self shouldInlineAssignment: anIRAssignment)\x0a\x09\x09ifTrue: [ self assignmentInliner inlineAssignment: anIRAssignment ]\x0a\x09\x09ifFalse: [ super visitIRAssignment: anIRAssignment ]",
  41685. referencedClasses: [],
  41686. //>>excludeEnd("ide");
  41687. messageSends: ["ifTrue:ifFalse:", "shouldInlineAssignment:", "inlineAssignment:", "assignmentInliner", "visitIRAssignment:"]
  41688. }),
  41689. $globals.IRInliner);
  41690. $core.addMethod(
  41691. $core.method({
  41692. selector: "visitIRNonLocalReturn:",
  41693. protocol: 'visiting',
  41694. fn: function (anIRNonLocalReturn){
  41695. var self=this;
  41696. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41697. return $core.withContext(function($ctx1) {
  41698. //>>excludeEnd("ctx");
  41699. var $1;
  41700. $1=self._transformNonLocalReturn_(anIRNonLocalReturn);
  41701. return $1;
  41702. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41703. }, function($ctx1) {$ctx1.fill(self,"visitIRNonLocalReturn:",{anIRNonLocalReturn:anIRNonLocalReturn},$globals.IRInliner)});
  41704. //>>excludeEnd("ctx");
  41705. },
  41706. //>>excludeStart("ide", pragmas.excludeIdeData);
  41707. args: ["anIRNonLocalReturn"],
  41708. source: "visitIRNonLocalReturn: anIRNonLocalReturn\x0a\x09^ self transformNonLocalReturn: anIRNonLocalReturn",
  41709. referencedClasses: [],
  41710. //>>excludeEnd("ide");
  41711. messageSends: ["transformNonLocalReturn:"]
  41712. }),
  41713. $globals.IRInliner);
  41714. $core.addMethod(
  41715. $core.method({
  41716. selector: "visitIRReturn:",
  41717. protocol: 'visiting',
  41718. fn: function (anIRReturn){
  41719. var self=this;
  41720. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41721. return $core.withContext(function($ctx1) {
  41722. //>>excludeEnd("ctx");
  41723. var $2,$1;
  41724. $2=self._shouldInlineReturn_(anIRReturn);
  41725. if($core.assert($2)){
  41726. $1=$recv(self._returnInliner())._inlineReturn_(anIRReturn);
  41727. } else {
  41728. $1=(
  41729. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41730. $ctx1.supercall = true,
  41731. //>>excludeEnd("ctx");
  41732. $globals.IRInliner.superclass.fn.prototype._visitIRReturn_.apply($recv(self), [anIRReturn]));
  41733. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41734. $ctx1.supercall = false;
  41735. //>>excludeEnd("ctx");;
  41736. };
  41737. return $1;
  41738. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41739. }, function($ctx1) {$ctx1.fill(self,"visitIRReturn:",{anIRReturn:anIRReturn},$globals.IRInliner)});
  41740. //>>excludeEnd("ctx");
  41741. },
  41742. //>>excludeStart("ide", pragmas.excludeIdeData);
  41743. args: ["anIRReturn"],
  41744. source: "visitIRReturn: anIRReturn\x0a\x09^ (self shouldInlineReturn: anIRReturn)\x0a\x09\x09ifTrue: [ self returnInliner inlineReturn: anIRReturn ]\x0a\x09\x09ifFalse: [ super visitIRReturn: anIRReturn ]",
  41745. referencedClasses: [],
  41746. //>>excludeEnd("ide");
  41747. messageSends: ["ifTrue:ifFalse:", "shouldInlineReturn:", "inlineReturn:", "returnInliner", "visitIRReturn:"]
  41748. }),
  41749. $globals.IRInliner);
  41750. $core.addMethod(
  41751. $core.method({
  41752. selector: "visitIRSend:",
  41753. protocol: 'visiting',
  41754. fn: function (anIRSend){
  41755. var self=this;
  41756. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41757. return $core.withContext(function($ctx1) {
  41758. //>>excludeEnd("ctx");
  41759. var $2,$1;
  41760. $2=self._shouldInlineSend_(anIRSend);
  41761. if($core.assert($2)){
  41762. $1=$recv(self._sendInliner())._inlineSend_(anIRSend);
  41763. } else {
  41764. $1=(
  41765. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41766. $ctx1.supercall = true,
  41767. //>>excludeEnd("ctx");
  41768. $globals.IRInliner.superclass.fn.prototype._visitIRSend_.apply($recv(self), [anIRSend]));
  41769. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41770. $ctx1.supercall = false;
  41771. //>>excludeEnd("ctx");;
  41772. };
  41773. return $1;
  41774. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41775. }, function($ctx1) {$ctx1.fill(self,"visitIRSend:",{anIRSend:anIRSend},$globals.IRInliner)});
  41776. //>>excludeEnd("ctx");
  41777. },
  41778. //>>excludeStart("ide", pragmas.excludeIdeData);
  41779. args: ["anIRSend"],
  41780. source: "visitIRSend: anIRSend\x0a\x09^ (self shouldInlineSend: anIRSend)\x0a\x09\x09ifTrue: [ self sendInliner inlineSend: anIRSend ]\x0a\x09\x09ifFalse: [ super visitIRSend: anIRSend ]",
  41781. referencedClasses: [],
  41782. //>>excludeEnd("ide");
  41783. messageSends: ["ifTrue:ifFalse:", "shouldInlineSend:", "inlineSend:", "sendInliner", "visitIRSend:"]
  41784. }),
  41785. $globals.IRInliner);
  41786. $core.addClass('IRInliningJSTranslator', $globals.IRJSTranslator, [], 'Compiler-Inlining');
  41787. //>>excludeStart("ide", pragmas.excludeIdeData);
  41788. $globals.IRInliningJSTranslator.comment="I am a specialized JavaScript translator able to write inlined IR instructions to JavaScript stream (`JSStream` instance).";
  41789. //>>excludeEnd("ide");
  41790. $core.addMethod(
  41791. $core.method({
  41792. selector: "visitIRInlinedAssignment:",
  41793. protocol: 'visiting',
  41794. fn: function (anIRInlinedAssignment){
  41795. var self=this;
  41796. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41797. return $core.withContext(function($ctx1) {
  41798. //>>excludeEnd("ctx");
  41799. self._visit_($recv($recv(anIRInlinedAssignment)._instructions())._last());
  41800. return self;
  41801. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41802. }, function($ctx1) {$ctx1.fill(self,"visitIRInlinedAssignment:",{anIRInlinedAssignment:anIRInlinedAssignment},$globals.IRInliningJSTranslator)});
  41803. //>>excludeEnd("ctx");
  41804. },
  41805. //>>excludeStart("ide", pragmas.excludeIdeData);
  41806. args: ["anIRInlinedAssignment"],
  41807. source: "visitIRInlinedAssignment: anIRInlinedAssignment\x0a\x09self visit: anIRInlinedAssignment instructions last",
  41808. referencedClasses: [],
  41809. //>>excludeEnd("ide");
  41810. messageSends: ["visit:", "last", "instructions"]
  41811. }),
  41812. $globals.IRInliningJSTranslator);
  41813. $core.addMethod(
  41814. $core.method({
  41815. selector: "visitIRInlinedClosure:",
  41816. protocol: 'visiting',
  41817. fn: function (anIRInlinedClosure){
  41818. var self=this;
  41819. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41820. return $core.withContext(function($ctx1) {
  41821. //>>excludeEnd("ctx");
  41822. $recv(self._stream())._nextPutVars_($recv($recv(anIRInlinedClosure)._tempDeclarations())._collect_((function(each){
  41823. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41824. return $core.withContext(function($ctx2) {
  41825. //>>excludeEnd("ctx");
  41826. return $recv($recv(each)._name())._asVariableName();
  41827. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41828. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  41829. //>>excludeEnd("ctx");
  41830. })));
  41831. $recv($recv(anIRInlinedClosure)._instructions())._do_((function(each){
  41832. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41833. return $core.withContext(function($ctx2) {
  41834. //>>excludeEnd("ctx");
  41835. return self._visit_(each);
  41836. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41837. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,2)});
  41838. //>>excludeEnd("ctx");
  41839. }));
  41840. return self;
  41841. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41842. }, function($ctx1) {$ctx1.fill(self,"visitIRInlinedClosure:",{anIRInlinedClosure:anIRInlinedClosure},$globals.IRInliningJSTranslator)});
  41843. //>>excludeEnd("ctx");
  41844. },
  41845. //>>excludeStart("ide", pragmas.excludeIdeData);
  41846. args: ["anIRInlinedClosure"],
  41847. source: "visitIRInlinedClosure: anIRInlinedClosure\x0a\x09self stream nextPutVars: (anIRInlinedClosure tempDeclarations collect: [ :each |\x0a\x09\x09each name asVariableName ]).\x0a\x09anIRInlinedClosure instructions do: [ :each |\x0a\x09\x09self visit: each ]",
  41848. referencedClasses: [],
  41849. //>>excludeEnd("ide");
  41850. messageSends: ["nextPutVars:", "stream", "collect:", "tempDeclarations", "asVariableName", "name", "do:", "instructions", "visit:"]
  41851. }),
  41852. $globals.IRInliningJSTranslator);
  41853. $core.addMethod(
  41854. $core.method({
  41855. selector: "visitIRInlinedIfFalse:",
  41856. protocol: 'visiting',
  41857. fn: function (anIRInlinedIfFalse){
  41858. var self=this;
  41859. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41860. return $core.withContext(function($ctx1) {
  41861. //>>excludeEnd("ctx");
  41862. var $1,$2,$4,$3;
  41863. $1=self._stream();
  41864. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41865. $ctx1.sendIdx["stream"]=1;
  41866. //>>excludeEnd("ctx");
  41867. $recv($1)._nextPutIf_with_((function(){
  41868. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41869. return $core.withContext(function($ctx2) {
  41870. //>>excludeEnd("ctx");
  41871. $2=self._stream();
  41872. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41873. $ctx2.sendIdx["stream"]=2;
  41874. //>>excludeEnd("ctx");
  41875. $recv($2)._nextPutAll_("!$core.assert(");
  41876. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41877. $ctx2.sendIdx["nextPutAll:"]=1;
  41878. //>>excludeEnd("ctx");
  41879. $4=$recv(anIRInlinedIfFalse)._instructions();
  41880. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41881. $ctx2.sendIdx["instructions"]=1;
  41882. //>>excludeEnd("ctx");
  41883. $3=$recv($4)._first();
  41884. self._visit_($3);
  41885. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41886. $ctx2.sendIdx["visit:"]=1;
  41887. //>>excludeEnd("ctx");
  41888. return $recv(self._stream())._nextPutAll_(")");
  41889. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41890. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  41891. //>>excludeEnd("ctx");
  41892. }),(function(){
  41893. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41894. return $core.withContext(function($ctx2) {
  41895. //>>excludeEnd("ctx");
  41896. return self._visit_($recv($recv(anIRInlinedIfFalse)._instructions())._last());
  41897. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41898. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
  41899. //>>excludeEnd("ctx");
  41900. }));
  41901. return self;
  41902. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41903. }, function($ctx1) {$ctx1.fill(self,"visitIRInlinedIfFalse:",{anIRInlinedIfFalse:anIRInlinedIfFalse},$globals.IRInliningJSTranslator)});
  41904. //>>excludeEnd("ctx");
  41905. },
  41906. //>>excludeStart("ide", pragmas.excludeIdeData);
  41907. args: ["anIRInlinedIfFalse"],
  41908. source: "visitIRInlinedIfFalse: anIRInlinedIfFalse\x0a\x09self stream nextPutIf: [\x0a\x09\x09self stream nextPutAll: '!$core.assert('.\x0a\x09\x09self visit: anIRInlinedIfFalse instructions first.\x0a\x09\x09self stream nextPutAll: ')' ]\x0a\x09\x09with: [ self visit: anIRInlinedIfFalse instructions last ]",
  41909. referencedClasses: [],
  41910. //>>excludeEnd("ide");
  41911. messageSends: ["nextPutIf:with:", "stream", "nextPutAll:", "visit:", "first", "instructions", "last"]
  41912. }),
  41913. $globals.IRInliningJSTranslator);
  41914. $core.addMethod(
  41915. $core.method({
  41916. selector: "visitIRInlinedIfNilIfNotNil:",
  41917. protocol: 'visiting',
  41918. fn: function (anIRInlinedIfNilIfNotNil){
  41919. var self=this;
  41920. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41921. return $core.withContext(function($ctx1) {
  41922. //>>excludeEnd("ctx");
  41923. var $1,$2,$3,$5,$4,$7,$6;
  41924. $1=self._stream();
  41925. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41926. $ctx1.sendIdx["stream"]=1;
  41927. //>>excludeEnd("ctx");
  41928. $recv($1)._nextPutIfElse_with_with_((function(){
  41929. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41930. return $core.withContext(function($ctx2) {
  41931. //>>excludeEnd("ctx");
  41932. $2=self._stream();
  41933. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41934. $ctx2.sendIdx["stream"]=2;
  41935. //>>excludeEnd("ctx");
  41936. $3=$recv("(".__comma($recv(anIRInlinedIfNilIfNotNil)._receiverInternalVariableName())).__comma(" = ");
  41937. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41938. $ctx2.sendIdx[","]=1;
  41939. //>>excludeEnd("ctx");
  41940. $recv($2)._nextPutAll_($3);
  41941. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41942. $ctx2.sendIdx["nextPutAll:"]=1;
  41943. //>>excludeEnd("ctx");
  41944. $5=$recv(anIRInlinedIfNilIfNotNil)._instructions();
  41945. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41946. $ctx2.sendIdx["instructions"]=1;
  41947. //>>excludeEnd("ctx");
  41948. $4=$recv($5)._first();
  41949. self._visit_($4);
  41950. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41951. $ctx2.sendIdx["visit:"]=1;
  41952. //>>excludeEnd("ctx");
  41953. return $recv(self._stream())._nextPutAll_(") == null || $receiver.isNil");
  41954. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41955. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  41956. //>>excludeEnd("ctx");
  41957. }),(function(){
  41958. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41959. return $core.withContext(function($ctx2) {
  41960. //>>excludeEnd("ctx");
  41961. $7=$recv(anIRInlinedIfNilIfNotNil)._instructions();
  41962. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41963. $ctx2.sendIdx["instructions"]=2;
  41964. //>>excludeEnd("ctx");
  41965. $6=$recv($7)._second();
  41966. return self._visit_($6);
  41967. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41968. $ctx2.sendIdx["visit:"]=2;
  41969. //>>excludeEnd("ctx");
  41970. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41971. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
  41972. //>>excludeEnd("ctx");
  41973. }),(function(){
  41974. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41975. return $core.withContext(function($ctx2) {
  41976. //>>excludeEnd("ctx");
  41977. return self._visit_($recv($recv(anIRInlinedIfNilIfNotNil)._instructions())._third());
  41978. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41979. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,3)});
  41980. //>>excludeEnd("ctx");
  41981. }));
  41982. return self;
  41983. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  41984. }, function($ctx1) {$ctx1.fill(self,"visitIRInlinedIfNilIfNotNil:",{anIRInlinedIfNilIfNotNil:anIRInlinedIfNilIfNotNil},$globals.IRInliningJSTranslator)});
  41985. //>>excludeEnd("ctx");
  41986. },
  41987. //>>excludeStart("ide", pragmas.excludeIdeData);
  41988. args: ["anIRInlinedIfNilIfNotNil"],
  41989. source: "visitIRInlinedIfNilIfNotNil: anIRInlinedIfNilIfNotNil\x0a\x09self stream\x0a\x09\x09nextPutIfElse: [\x0a\x09\x09\x09self stream nextPutAll: '(', anIRInlinedIfNilIfNotNil receiverInternalVariableName, ' = '.\x0a\x09\x09\x09self visit: anIRInlinedIfNilIfNotNil instructions first.\x0a\x09\x09\x09self stream nextPutAll: ') == null || $receiver.isNil' ]\x0a\x09\x09with: [ self visit: anIRInlinedIfNilIfNotNil instructions second ]\x0a\x09\x09with: [ self visit: anIRInlinedIfNilIfNotNil instructions third ]",
  41990. referencedClasses: [],
  41991. //>>excludeEnd("ide");
  41992. messageSends: ["nextPutIfElse:with:with:", "stream", "nextPutAll:", ",", "receiverInternalVariableName", "visit:", "first", "instructions", "second", "third"]
  41993. }),
  41994. $globals.IRInliningJSTranslator);
  41995. $core.addMethod(
  41996. $core.method({
  41997. selector: "visitIRInlinedIfTrue:",
  41998. protocol: 'visiting',
  41999. fn: function (anIRInlinedIfTrue){
  42000. var self=this;
  42001. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42002. return $core.withContext(function($ctx1) {
  42003. //>>excludeEnd("ctx");
  42004. var $1,$2,$4,$3;
  42005. $1=self._stream();
  42006. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42007. $ctx1.sendIdx["stream"]=1;
  42008. //>>excludeEnd("ctx");
  42009. $recv($1)._nextPutIf_with_((function(){
  42010. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42011. return $core.withContext(function($ctx2) {
  42012. //>>excludeEnd("ctx");
  42013. $2=self._stream();
  42014. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42015. $ctx2.sendIdx["stream"]=2;
  42016. //>>excludeEnd("ctx");
  42017. $recv($2)._nextPutAll_("$core.assert(");
  42018. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42019. $ctx2.sendIdx["nextPutAll:"]=1;
  42020. //>>excludeEnd("ctx");
  42021. $4=$recv(anIRInlinedIfTrue)._instructions();
  42022. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42023. $ctx2.sendIdx["instructions"]=1;
  42024. //>>excludeEnd("ctx");
  42025. $3=$recv($4)._first();
  42026. self._visit_($3);
  42027. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42028. $ctx2.sendIdx["visit:"]=1;
  42029. //>>excludeEnd("ctx");
  42030. return $recv(self._stream())._nextPutAll_(")");
  42031. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42032. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  42033. //>>excludeEnd("ctx");
  42034. }),(function(){
  42035. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42036. return $core.withContext(function($ctx2) {
  42037. //>>excludeEnd("ctx");
  42038. return self._visit_($recv($recv(anIRInlinedIfTrue)._instructions())._last());
  42039. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42040. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
  42041. //>>excludeEnd("ctx");
  42042. }));
  42043. return self;
  42044. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42045. }, function($ctx1) {$ctx1.fill(self,"visitIRInlinedIfTrue:",{anIRInlinedIfTrue:anIRInlinedIfTrue},$globals.IRInliningJSTranslator)});
  42046. //>>excludeEnd("ctx");
  42047. },
  42048. //>>excludeStart("ide", pragmas.excludeIdeData);
  42049. args: ["anIRInlinedIfTrue"],
  42050. source: "visitIRInlinedIfTrue: anIRInlinedIfTrue\x0a\x09self stream nextPutIf: [\x0a\x09\x09self stream nextPutAll: '$core.assert('.\x0a\x09\x09self visit: anIRInlinedIfTrue instructions first.\x0a\x09\x09self stream nextPutAll: ')' ]\x0a\x09\x09with: [ self visit: anIRInlinedIfTrue instructions last ]",
  42051. referencedClasses: [],
  42052. //>>excludeEnd("ide");
  42053. messageSends: ["nextPutIf:with:", "stream", "nextPutAll:", "visit:", "first", "instructions", "last"]
  42054. }),
  42055. $globals.IRInliningJSTranslator);
  42056. $core.addMethod(
  42057. $core.method({
  42058. selector: "visitIRInlinedIfTrueIfFalse:",
  42059. protocol: 'visiting',
  42060. fn: function (anIRInlinedIfTrueIfFalse){
  42061. var self=this;
  42062. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42063. return $core.withContext(function($ctx1) {
  42064. //>>excludeEnd("ctx");
  42065. var $1,$2,$4,$3,$6,$5;
  42066. $1=self._stream();
  42067. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42068. $ctx1.sendIdx["stream"]=1;
  42069. //>>excludeEnd("ctx");
  42070. $recv($1)._nextPutIfElse_with_with_((function(){
  42071. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42072. return $core.withContext(function($ctx2) {
  42073. //>>excludeEnd("ctx");
  42074. $2=self._stream();
  42075. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42076. $ctx2.sendIdx["stream"]=2;
  42077. //>>excludeEnd("ctx");
  42078. $recv($2)._nextPutAll_("$core.assert(");
  42079. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42080. $ctx2.sendIdx["nextPutAll:"]=1;
  42081. //>>excludeEnd("ctx");
  42082. $4=$recv(anIRInlinedIfTrueIfFalse)._instructions();
  42083. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42084. $ctx2.sendIdx["instructions"]=1;
  42085. //>>excludeEnd("ctx");
  42086. $3=$recv($4)._first();
  42087. self._visit_($3);
  42088. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42089. $ctx2.sendIdx["visit:"]=1;
  42090. //>>excludeEnd("ctx");
  42091. return $recv(self._stream())._nextPutAll_(")");
  42092. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42093. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  42094. //>>excludeEnd("ctx");
  42095. }),(function(){
  42096. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42097. return $core.withContext(function($ctx2) {
  42098. //>>excludeEnd("ctx");
  42099. $6=$recv(anIRInlinedIfTrueIfFalse)._instructions();
  42100. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42101. $ctx2.sendIdx["instructions"]=2;
  42102. //>>excludeEnd("ctx");
  42103. $5=$recv($6)._second();
  42104. return self._visit_($5);
  42105. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42106. $ctx2.sendIdx["visit:"]=2;
  42107. //>>excludeEnd("ctx");
  42108. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42109. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
  42110. //>>excludeEnd("ctx");
  42111. }),(function(){
  42112. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42113. return $core.withContext(function($ctx2) {
  42114. //>>excludeEnd("ctx");
  42115. return self._visit_($recv($recv(anIRInlinedIfTrueIfFalse)._instructions())._third());
  42116. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42117. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,3)});
  42118. //>>excludeEnd("ctx");
  42119. }));
  42120. return self;
  42121. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42122. }, function($ctx1) {$ctx1.fill(self,"visitIRInlinedIfTrueIfFalse:",{anIRInlinedIfTrueIfFalse:anIRInlinedIfTrueIfFalse},$globals.IRInliningJSTranslator)});
  42123. //>>excludeEnd("ctx");
  42124. },
  42125. //>>excludeStart("ide", pragmas.excludeIdeData);
  42126. args: ["anIRInlinedIfTrueIfFalse"],
  42127. source: "visitIRInlinedIfTrueIfFalse: anIRInlinedIfTrueIfFalse\x0a\x09self stream\x0a\x09\x09nextPutIfElse: [\x0a\x09\x09\x09self stream nextPutAll: '$core.assert('.\x0a\x09\x09\x09self visit: anIRInlinedIfTrueIfFalse instructions first.\x0a\x09\x09\x09self stream nextPutAll: ')' ]\x0a\x09\x09with: [ self visit: anIRInlinedIfTrueIfFalse instructions second ]\x0a\x09\x09with: [ self visit: anIRInlinedIfTrueIfFalse instructions third ]",
  42128. referencedClasses: [],
  42129. //>>excludeEnd("ide");
  42130. messageSends: ["nextPutIfElse:with:with:", "stream", "nextPutAll:", "visit:", "first", "instructions", "second", "third"]
  42131. }),
  42132. $globals.IRInliningJSTranslator);
  42133. $core.addMethod(
  42134. $core.method({
  42135. selector: "visitIRInlinedNonLocalReturn:",
  42136. protocol: 'visiting',
  42137. fn: function (anIRInlinedReturn){
  42138. var self=this;
  42139. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42140. return $core.withContext(function($ctx1) {
  42141. //>>excludeEnd("ctx");
  42142. var $1;
  42143. $1=self._stream();
  42144. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42145. $ctx1.sendIdx["stream"]=1;
  42146. //>>excludeEnd("ctx");
  42147. $recv($1)._nextPutStatementWith_((function(){
  42148. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42149. return $core.withContext(function($ctx2) {
  42150. //>>excludeEnd("ctx");
  42151. return self._visit_($recv($recv(anIRInlinedReturn)._instructions())._last());
  42152. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42153. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  42154. //>>excludeEnd("ctx");
  42155. }));
  42156. $recv(self._stream())._nextPutNonLocalReturnWith_((function(){
  42157. }));
  42158. return self;
  42159. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42160. }, function($ctx1) {$ctx1.fill(self,"visitIRInlinedNonLocalReturn:",{anIRInlinedReturn:anIRInlinedReturn},$globals.IRInliningJSTranslator)});
  42161. //>>excludeEnd("ctx");
  42162. },
  42163. //>>excludeStart("ide", pragmas.excludeIdeData);
  42164. args: ["anIRInlinedReturn"],
  42165. source: "visitIRInlinedNonLocalReturn: anIRInlinedReturn\x0a\x09self stream nextPutStatementWith: [\x0a\x09\x09self visit: anIRInlinedReturn instructions last ].\x0a\x09self stream nextPutNonLocalReturnWith: [ ]",
  42166. referencedClasses: [],
  42167. //>>excludeEnd("ide");
  42168. messageSends: ["nextPutStatementWith:", "stream", "visit:", "last", "instructions", "nextPutNonLocalReturnWith:"]
  42169. }),
  42170. $globals.IRInliningJSTranslator);
  42171. $core.addMethod(
  42172. $core.method({
  42173. selector: "visitIRInlinedReturn:",
  42174. protocol: 'visiting',
  42175. fn: function (anIRInlinedReturn){
  42176. var self=this;
  42177. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42178. return $core.withContext(function($ctx1) {
  42179. //>>excludeEnd("ctx");
  42180. self._visit_($recv($recv(anIRInlinedReturn)._instructions())._last());
  42181. return self;
  42182. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42183. }, function($ctx1) {$ctx1.fill(self,"visitIRInlinedReturn:",{anIRInlinedReturn:anIRInlinedReturn},$globals.IRInliningJSTranslator)});
  42184. //>>excludeEnd("ctx");
  42185. },
  42186. //>>excludeStart("ide", pragmas.excludeIdeData);
  42187. args: ["anIRInlinedReturn"],
  42188. source: "visitIRInlinedReturn: anIRInlinedReturn\x0a\x09self visit: anIRInlinedReturn instructions last",
  42189. referencedClasses: [],
  42190. //>>excludeEnd("ide");
  42191. messageSends: ["visit:", "last", "instructions"]
  42192. }),
  42193. $globals.IRInliningJSTranslator);
  42194. $core.addMethod(
  42195. $core.method({
  42196. selector: "visitIRInlinedSequence:",
  42197. protocol: 'visiting',
  42198. fn: function (anIRInlinedSequence){
  42199. var self=this;
  42200. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42201. return $core.withContext(function($ctx1) {
  42202. //>>excludeEnd("ctx");
  42203. $recv($recv(anIRInlinedSequence)._instructions())._do_((function(each){
  42204. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42205. return $core.withContext(function($ctx2) {
  42206. //>>excludeEnd("ctx");
  42207. return $recv(self._stream())._nextPutStatementWith_((function(){
  42208. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42209. return $core.withContext(function($ctx3) {
  42210. //>>excludeEnd("ctx");
  42211. return self._visit_(each);
  42212. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42213. }, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)});
  42214. //>>excludeEnd("ctx");
  42215. }));
  42216. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42217. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  42218. //>>excludeEnd("ctx");
  42219. }));
  42220. return self;
  42221. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42222. }, function($ctx1) {$ctx1.fill(self,"visitIRInlinedSequence:",{anIRInlinedSequence:anIRInlinedSequence},$globals.IRInliningJSTranslator)});
  42223. //>>excludeEnd("ctx");
  42224. },
  42225. //>>excludeStart("ide", pragmas.excludeIdeData);
  42226. args: ["anIRInlinedSequence"],
  42227. source: "visitIRInlinedSequence: anIRInlinedSequence\x0a\x09anIRInlinedSequence instructions do: [ :each |\x0a\x09\x09self stream nextPutStatementWith: [ self visit: each ]]",
  42228. referencedClasses: [],
  42229. //>>excludeEnd("ide");
  42230. messageSends: ["do:", "instructions", "nextPutStatementWith:", "stream", "visit:"]
  42231. }),
  42232. $globals.IRInliningJSTranslator);
  42233. $core.addClass('IRSendInliner', $globals.Object, ['send', 'translator'], 'Compiler-Inlining');
  42234. //>>excludeStart("ide", pragmas.excludeIdeData);
  42235. $globals.IRSendInliner.comment="I inline some message sends and block closure arguments. I heavily rely on #perform: to dispatch inlining methods.";
  42236. //>>excludeEnd("ide");
  42237. $core.addMethod(
  42238. $core.method({
  42239. selector: "ifFalse:",
  42240. protocol: 'inlining',
  42241. fn: function (anIRInstruction){
  42242. var self=this;
  42243. function $IRInlinedIfFalse(){return $globals.IRInlinedIfFalse||(typeof IRInlinedIfFalse=="undefined"?nil:IRInlinedIfFalse)}
  42244. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42245. return $core.withContext(function($ctx1) {
  42246. //>>excludeEnd("ctx");
  42247. var $1;
  42248. $1=self._inlinedSend_with_($recv($IRInlinedIfFalse())._new(),anIRInstruction);
  42249. return $1;
  42250. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42251. }, function($ctx1) {$ctx1.fill(self,"ifFalse:",{anIRInstruction:anIRInstruction},$globals.IRSendInliner)});
  42252. //>>excludeEnd("ctx");
  42253. },
  42254. //>>excludeStart("ide", pragmas.excludeIdeData);
  42255. args: ["anIRInstruction"],
  42256. source: "ifFalse: anIRInstruction\x0a\x09^ self inlinedSend: IRInlinedIfFalse new with: anIRInstruction",
  42257. referencedClasses: ["IRInlinedIfFalse"],
  42258. //>>excludeEnd("ide");
  42259. messageSends: ["inlinedSend:with:", "new"]
  42260. }),
  42261. $globals.IRSendInliner);
  42262. $core.addMethod(
  42263. $core.method({
  42264. selector: "ifFalse:ifTrue:",
  42265. protocol: 'inlining',
  42266. fn: function (anIRInstruction,anotherIRInstruction){
  42267. var self=this;
  42268. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42269. return $core.withContext(function($ctx1) {
  42270. //>>excludeEnd("ctx");
  42271. var $1;
  42272. $1=self._perform_withArguments_("ifTrue:ifFalse:",[anotherIRInstruction,anIRInstruction]);
  42273. return $1;
  42274. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42275. }, function($ctx1) {$ctx1.fill(self,"ifFalse:ifTrue:",{anIRInstruction:anIRInstruction,anotherIRInstruction:anotherIRInstruction},$globals.IRSendInliner)});
  42276. //>>excludeEnd("ctx");
  42277. },
  42278. //>>excludeStart("ide", pragmas.excludeIdeData);
  42279. args: ["anIRInstruction", "anotherIRInstruction"],
  42280. source: "ifFalse: anIRInstruction ifTrue: anotherIRInstruction\x0a\x09^ self perform: #ifTrue:ifFalse: withArguments: { anotherIRInstruction. anIRInstruction }",
  42281. referencedClasses: [],
  42282. //>>excludeEnd("ide");
  42283. messageSends: ["perform:withArguments:"]
  42284. }),
  42285. $globals.IRSendInliner);
  42286. $core.addMethod(
  42287. $core.method({
  42288. selector: "ifNil:",
  42289. protocol: 'inlining',
  42290. fn: function (anIRInstruction){
  42291. var self=this;
  42292. function $IRInlinedIfNilIfNotNil(){return $globals.IRInlinedIfNilIfNotNil||(typeof IRInlinedIfNilIfNotNil=="undefined"?nil:IRInlinedIfNilIfNotNil)}
  42293. function $IRClosure(){return $globals.IRClosure||(typeof IRClosure=="undefined"?nil:IRClosure)}
  42294. function $IRBlockSequence(){return $globals.IRBlockSequence||(typeof IRBlockSequence=="undefined"?nil:IRBlockSequence)}
  42295. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42296. return $core.withContext(function($ctx1) {
  42297. //>>excludeEnd("ctx");
  42298. var $2,$4,$5,$7,$8,$6,$9,$3,$1;
  42299. $2=$recv($IRInlinedIfNilIfNotNil())._new();
  42300. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42301. $ctx1.sendIdx["new"]=1;
  42302. //>>excludeEnd("ctx");
  42303. $4=$recv($IRClosure())._new();
  42304. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42305. $ctx1.sendIdx["new"]=2;
  42306. //>>excludeEnd("ctx");
  42307. $recv($4)._scope_($recv($recv(anIRInstruction)._scope())._copy());
  42308. $5=$4;
  42309. $7=$recv($IRBlockSequence())._new();
  42310. $recv($7)._add_($recv($recv(self._send())._instructions())._first());
  42311. $8=$recv($7)._yourself();
  42312. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42313. $ctx1.sendIdx["yourself"]=1;
  42314. //>>excludeEnd("ctx");
  42315. $6=$8;
  42316. $recv($5)._add_($6);
  42317. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42318. $ctx1.sendIdx["add:"]=1;
  42319. //>>excludeEnd("ctx");
  42320. $9=$recv($4)._yourself();
  42321. $3=$9;
  42322. $1=self._inlinedSend_with_with_($2,anIRInstruction,$3);
  42323. return $1;
  42324. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42325. }, function($ctx1) {$ctx1.fill(self,"ifNil:",{anIRInstruction:anIRInstruction},$globals.IRSendInliner)});
  42326. //>>excludeEnd("ctx");
  42327. },
  42328. //>>excludeStart("ide", pragmas.excludeIdeData);
  42329. args: ["anIRInstruction"],
  42330. source: "ifNil: anIRInstruction\x0a\x09^ self\x0a\x09\x09inlinedSend: IRInlinedIfNilIfNotNil new\x0a\x09\x09with: anIRInstruction\x0a\x09\x09with: (IRClosure new\x0a\x09\x09\x09scope: anIRInstruction scope copy;\x0a\x09\x09\x09add: (IRBlockSequence new\x0a\x09\x09\x09\x09add: self send instructions first;\x0a\x09\x09\x09\x09yourself);\x0a\x09\x09\x09yourself)",
  42331. referencedClasses: ["IRInlinedIfNilIfNotNil", "IRClosure", "IRBlockSequence"],
  42332. //>>excludeEnd("ide");
  42333. messageSends: ["inlinedSend:with:with:", "new", "scope:", "copy", "scope", "add:", "first", "instructions", "send", "yourself"]
  42334. }),
  42335. $globals.IRSendInliner);
  42336. $core.addMethod(
  42337. $core.method({
  42338. selector: "ifNil:ifNotNil:",
  42339. protocol: 'inlining',
  42340. fn: function (anIRInstruction,anotherIRInstruction){
  42341. var self=this;
  42342. function $IRInlinedIfNilIfNotNil(){return $globals.IRInlinedIfNilIfNotNil||(typeof IRInlinedIfNilIfNotNil=="undefined"?nil:IRInlinedIfNilIfNotNil)}
  42343. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42344. return $core.withContext(function($ctx1) {
  42345. //>>excludeEnd("ctx");
  42346. var $1;
  42347. $1=self._inlinedSend_with_with_($recv($IRInlinedIfNilIfNotNil())._new(),anIRInstruction,anotherIRInstruction);
  42348. return $1;
  42349. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42350. }, function($ctx1) {$ctx1.fill(self,"ifNil:ifNotNil:",{anIRInstruction:anIRInstruction,anotherIRInstruction:anotherIRInstruction},$globals.IRSendInliner)});
  42351. //>>excludeEnd("ctx");
  42352. },
  42353. //>>excludeStart("ide", pragmas.excludeIdeData);
  42354. args: ["anIRInstruction", "anotherIRInstruction"],
  42355. source: "ifNil: anIRInstruction ifNotNil: anotherIRInstruction\x0a\x09^ self inlinedSend: IRInlinedIfNilIfNotNil new with: anIRInstruction with: anotherIRInstruction",
  42356. referencedClasses: ["IRInlinedIfNilIfNotNil"],
  42357. //>>excludeEnd("ide");
  42358. messageSends: ["inlinedSend:with:with:", "new"]
  42359. }),
  42360. $globals.IRSendInliner);
  42361. $core.addMethod(
  42362. $core.method({
  42363. selector: "ifNotNil:",
  42364. protocol: 'inlining',
  42365. fn: function (anIRInstruction){
  42366. var self=this;
  42367. function $IRInlinedIfNilIfNotNil(){return $globals.IRInlinedIfNilIfNotNil||(typeof IRInlinedIfNilIfNotNil=="undefined"?nil:IRInlinedIfNilIfNotNil)}
  42368. function $IRClosure(){return $globals.IRClosure||(typeof IRClosure=="undefined"?nil:IRClosure)}
  42369. function $IRBlockSequence(){return $globals.IRBlockSequence||(typeof IRBlockSequence=="undefined"?nil:IRBlockSequence)}
  42370. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42371. return $core.withContext(function($ctx1) {
  42372. //>>excludeEnd("ctx");
  42373. var $2,$4,$5,$7,$8,$6,$9,$3,$1;
  42374. $2=$recv($IRInlinedIfNilIfNotNil())._new();
  42375. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42376. $ctx1.sendIdx["new"]=1;
  42377. //>>excludeEnd("ctx");
  42378. $4=$recv($IRClosure())._new();
  42379. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42380. $ctx1.sendIdx["new"]=2;
  42381. //>>excludeEnd("ctx");
  42382. $recv($4)._scope_($recv($recv(anIRInstruction)._scope())._copy());
  42383. $5=$4;
  42384. $7=$recv($IRBlockSequence())._new();
  42385. $recv($7)._add_($recv($recv(self._send())._instructions())._first());
  42386. $8=$recv($7)._yourself();
  42387. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42388. $ctx1.sendIdx["yourself"]=1;
  42389. //>>excludeEnd("ctx");
  42390. $6=$8;
  42391. $recv($5)._add_($6);
  42392. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42393. $ctx1.sendIdx["add:"]=1;
  42394. //>>excludeEnd("ctx");
  42395. $9=$recv($4)._yourself();
  42396. $3=$9;
  42397. $1=self._inlinedSend_with_with_($2,$3,anIRInstruction);
  42398. return $1;
  42399. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42400. }, function($ctx1) {$ctx1.fill(self,"ifNotNil:",{anIRInstruction:anIRInstruction},$globals.IRSendInliner)});
  42401. //>>excludeEnd("ctx");
  42402. },
  42403. //>>excludeStart("ide", pragmas.excludeIdeData);
  42404. args: ["anIRInstruction"],
  42405. source: "ifNotNil: anIRInstruction\x0a\x09^ self\x0a\x09\x09inlinedSend: IRInlinedIfNilIfNotNil new\x0a\x09\x09with: (IRClosure new\x0a\x09\x09\x09scope: anIRInstruction scope copy;\x0a\x09\x09\x09add: (IRBlockSequence new\x0a\x09\x09\x09\x09add: self send instructions first;\x0a\x09\x09\x09\x09yourself);\x0a\x09\x09\x09yourself)\x0a\x09\x09with: anIRInstruction",
  42406. referencedClasses: ["IRInlinedIfNilIfNotNil", "IRClosure", "IRBlockSequence"],
  42407. //>>excludeEnd("ide");
  42408. messageSends: ["inlinedSend:with:with:", "new", "scope:", "copy", "scope", "add:", "first", "instructions", "send", "yourself"]
  42409. }),
  42410. $globals.IRSendInliner);
  42411. $core.addMethod(
  42412. $core.method({
  42413. selector: "ifNotNil:ifNil:",
  42414. protocol: 'inlining',
  42415. fn: function (anIRInstruction,anotherIRInstruction){
  42416. var self=this;
  42417. function $IRInlinedIfNilIfNotNil(){return $globals.IRInlinedIfNilIfNotNil||(typeof IRInlinedIfNilIfNotNil=="undefined"?nil:IRInlinedIfNilIfNotNil)}
  42418. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42419. return $core.withContext(function($ctx1) {
  42420. //>>excludeEnd("ctx");
  42421. var $1;
  42422. $1=self._inlinedSend_with_with_($recv($IRInlinedIfNilIfNotNil())._new(),anotherIRInstruction,anIRInstruction);
  42423. return $1;
  42424. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42425. }, function($ctx1) {$ctx1.fill(self,"ifNotNil:ifNil:",{anIRInstruction:anIRInstruction,anotherIRInstruction:anotherIRInstruction},$globals.IRSendInliner)});
  42426. //>>excludeEnd("ctx");
  42427. },
  42428. //>>excludeStart("ide", pragmas.excludeIdeData);
  42429. args: ["anIRInstruction", "anotherIRInstruction"],
  42430. source: "ifNotNil: anIRInstruction ifNil: anotherIRInstruction\x0a\x09^ self inlinedSend: IRInlinedIfNilIfNotNil new with: anotherIRInstruction with: anIRInstruction",
  42431. referencedClasses: ["IRInlinedIfNilIfNotNil"],
  42432. //>>excludeEnd("ide");
  42433. messageSends: ["inlinedSend:with:with:", "new"]
  42434. }),
  42435. $globals.IRSendInliner);
  42436. $core.addMethod(
  42437. $core.method({
  42438. selector: "ifTrue:",
  42439. protocol: 'inlining',
  42440. fn: function (anIRInstruction){
  42441. var self=this;
  42442. function $IRInlinedIfTrue(){return $globals.IRInlinedIfTrue||(typeof IRInlinedIfTrue=="undefined"?nil:IRInlinedIfTrue)}
  42443. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42444. return $core.withContext(function($ctx1) {
  42445. //>>excludeEnd("ctx");
  42446. var $1;
  42447. $1=self._inlinedSend_with_($recv($IRInlinedIfTrue())._new(),anIRInstruction);
  42448. return $1;
  42449. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42450. }, function($ctx1) {$ctx1.fill(self,"ifTrue:",{anIRInstruction:anIRInstruction},$globals.IRSendInliner)});
  42451. //>>excludeEnd("ctx");
  42452. },
  42453. //>>excludeStart("ide", pragmas.excludeIdeData);
  42454. args: ["anIRInstruction"],
  42455. source: "ifTrue: anIRInstruction\x0a\x09^ self inlinedSend: IRInlinedIfTrue new with: anIRInstruction",
  42456. referencedClasses: ["IRInlinedIfTrue"],
  42457. //>>excludeEnd("ide");
  42458. messageSends: ["inlinedSend:with:", "new"]
  42459. }),
  42460. $globals.IRSendInliner);
  42461. $core.addMethod(
  42462. $core.method({
  42463. selector: "ifTrue:ifFalse:",
  42464. protocol: 'inlining',
  42465. fn: function (anIRInstruction,anotherIRInstruction){
  42466. var self=this;
  42467. function $IRInlinedIfTrueIfFalse(){return $globals.IRInlinedIfTrueIfFalse||(typeof IRInlinedIfTrueIfFalse=="undefined"?nil:IRInlinedIfTrueIfFalse)}
  42468. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42469. return $core.withContext(function($ctx1) {
  42470. //>>excludeEnd("ctx");
  42471. var $1;
  42472. $1=self._inlinedSend_with_with_($recv($IRInlinedIfTrueIfFalse())._new(),anIRInstruction,anotherIRInstruction);
  42473. return $1;
  42474. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42475. }, function($ctx1) {$ctx1.fill(self,"ifTrue:ifFalse:",{anIRInstruction:anIRInstruction,anotherIRInstruction:anotherIRInstruction},$globals.IRSendInliner)});
  42476. //>>excludeEnd("ctx");
  42477. },
  42478. //>>excludeStart("ide", pragmas.excludeIdeData);
  42479. args: ["anIRInstruction", "anotherIRInstruction"],
  42480. source: "ifTrue: anIRInstruction ifFalse: anotherIRInstruction\x0a\x09^ self inlinedSend: IRInlinedIfTrueIfFalse new with: anIRInstruction with: anotherIRInstruction",
  42481. referencedClasses: ["IRInlinedIfTrueIfFalse"],
  42482. //>>excludeEnd("ide");
  42483. messageSends: ["inlinedSend:with:with:", "new"]
  42484. }),
  42485. $globals.IRSendInliner);
  42486. $core.addMethod(
  42487. $core.method({
  42488. selector: "inlineClosure:",
  42489. protocol: 'inlining',
  42490. fn: function (anIRClosure){
  42491. var self=this;
  42492. var inlinedClosure,sequence,statements;
  42493. function $IRTempDeclaration(){return $globals.IRTempDeclaration||(typeof IRTempDeclaration=="undefined"?nil:IRTempDeclaration)}
  42494. function $IRAssignment(){return $globals.IRAssignment||(typeof IRAssignment=="undefined"?nil:IRAssignment)}
  42495. function $IRVariable(){return $globals.IRVariable||(typeof IRVariable=="undefined"?nil:IRVariable)}
  42496. function $AliasVar(){return $globals.AliasVar||(typeof AliasVar=="undefined"?nil:AliasVar)}
  42497. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42498. return $core.withContext(function($ctx1) {
  42499. //>>excludeEnd("ctx");
  42500. var $1,$2,$3,$4,$5,$7,$8,$6,$9,$11,$12,$14,$16,$17,$18,$19,$15,$13,$20,$22,$24,$25,$23,$21,$26,$10,$28,$27,$31,$30,$32,$29,$33,$36,$35,$34,$37;
  42501. inlinedClosure=self._inlinedClosure();
  42502. $1=inlinedClosure;
  42503. $2=$1;
  42504. $3=$recv(anIRClosure)._scope();
  42505. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42506. $ctx1.sendIdx["scope"]=1;
  42507. //>>excludeEnd("ctx");
  42508. $recv($2)._scope_($3);
  42509. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42510. $ctx1.sendIdx["scope:"]=1;
  42511. //>>excludeEnd("ctx");
  42512. $4=$recv($1)._parent_($recv(anIRClosure)._parent());
  42513. $recv($recv(anIRClosure)._tempDeclarations())._do_((function(each){
  42514. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42515. return $core.withContext(function($ctx2) {
  42516. //>>excludeEnd("ctx");
  42517. return $recv(inlinedClosure)._add_(each);
  42518. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42519. $ctx2.sendIdx["add:"]=1;
  42520. //>>excludeEnd("ctx");
  42521. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42522. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  42523. //>>excludeEnd("ctx");
  42524. }));
  42525. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42526. $ctx1.sendIdx["do:"]=1;
  42527. //>>excludeEnd("ctx");
  42528. sequence=self._inlinedSequence();
  42529. $recv($recv(anIRClosure)._arguments())._do_((function(each){
  42530. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42531. return $core.withContext(function($ctx2) {
  42532. //>>excludeEnd("ctx");
  42533. $5=inlinedClosure;
  42534. $7=$recv($IRTempDeclaration())._new();
  42535. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42536. $ctx2.sendIdx["new"]=1;
  42537. //>>excludeEnd("ctx");
  42538. $recv($7)._name_(each);
  42539. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42540. $ctx2.sendIdx["name:"]=1;
  42541. //>>excludeEnd("ctx");
  42542. $8=$recv($7)._yourself();
  42543. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42544. $ctx2.sendIdx["yourself"]=1;
  42545. //>>excludeEnd("ctx");
  42546. $6=$8;
  42547. $recv($5)._add_($6);
  42548. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42549. $ctx2.sendIdx["add:"]=2;
  42550. //>>excludeEnd("ctx");
  42551. $9=sequence;
  42552. $11=$recv($IRAssignment())._new();
  42553. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42554. $ctx2.sendIdx["new"]=2;
  42555. //>>excludeEnd("ctx");
  42556. $12=$11;
  42557. $14=$recv($IRVariable())._new();
  42558. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42559. $ctx2.sendIdx["new"]=3;
  42560. //>>excludeEnd("ctx");
  42561. $16=$recv($AliasVar())._new();
  42562. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42563. $ctx2.sendIdx["new"]=4;
  42564. //>>excludeEnd("ctx");
  42565. $17=$16;
  42566. $18=$recv(inlinedClosure)._scope();
  42567. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42568. $ctx2.sendIdx["scope"]=2;
  42569. //>>excludeEnd("ctx");
  42570. $recv($17)._scope_($18);
  42571. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42572. $ctx2.sendIdx["scope:"]=2;
  42573. //>>excludeEnd("ctx");
  42574. $recv($16)._name_(each);
  42575. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42576. $ctx2.sendIdx["name:"]=2;
  42577. //>>excludeEnd("ctx");
  42578. $19=$recv($16)._yourself();
  42579. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42580. $ctx2.sendIdx["yourself"]=2;
  42581. //>>excludeEnd("ctx");
  42582. $15=$19;
  42583. $13=$recv($14)._variable_($15);
  42584. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42585. $ctx2.sendIdx["variable:"]=1;
  42586. //>>excludeEnd("ctx");
  42587. $recv($12)._add_($13);
  42588. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42589. $ctx2.sendIdx["add:"]=4;
  42590. //>>excludeEnd("ctx");
  42591. $20=$11;
  42592. $22=$recv($IRVariable())._new();
  42593. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42594. $ctx2.sendIdx["new"]=5;
  42595. //>>excludeEnd("ctx");
  42596. $24=$recv($AliasVar())._new();
  42597. $recv($24)._scope_($recv(inlinedClosure)._scope());
  42598. $recv($24)._name_("$receiver");
  42599. $25=$recv($24)._yourself();
  42600. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42601. $ctx2.sendIdx["yourself"]=3;
  42602. //>>excludeEnd("ctx");
  42603. $23=$25;
  42604. $21=$recv($22)._variable_($23);
  42605. $recv($20)._add_($21);
  42606. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42607. $ctx2.sendIdx["add:"]=5;
  42608. //>>excludeEnd("ctx");
  42609. $26=$recv($11)._yourself();
  42610. $10=$26;
  42611. return $recv($9)._add_($10);
  42612. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42613. $ctx2.sendIdx["add:"]=3;
  42614. //>>excludeEnd("ctx");
  42615. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42616. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,2)});
  42617. //>>excludeEnd("ctx");
  42618. }));
  42619. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42620. $ctx1.sendIdx["do:"]=2;
  42621. //>>excludeEnd("ctx");
  42622. $recv(inlinedClosure)._add_(sequence);
  42623. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42624. $ctx1.sendIdx["add:"]=6;
  42625. //>>excludeEnd("ctx");
  42626. $28=$recv(anIRClosure)._instructions();
  42627. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42628. $ctx1.sendIdx["instructions"]=2;
  42629. //>>excludeEnd("ctx");
  42630. $27=$recv($28)._last();
  42631. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42632. $ctx1.sendIdx["last"]=1;
  42633. //>>excludeEnd("ctx");
  42634. statements=$recv($27)._instructions();
  42635. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42636. $ctx1.sendIdx["instructions"]=1;
  42637. //>>excludeEnd("ctx");
  42638. $recv(statements)._ifNotEmpty_((function(){
  42639. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42640. return $core.withContext(function($ctx2) {
  42641. //>>excludeEnd("ctx");
  42642. $recv($recv(statements)._allButLast())._do_((function(each){
  42643. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42644. return $core.withContext(function($ctx3) {
  42645. //>>excludeEnd("ctx");
  42646. return $recv(sequence)._add_(each);
  42647. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42648. $ctx3.sendIdx["add:"]=7;
  42649. //>>excludeEnd("ctx");
  42650. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42651. }, function($ctx3) {$ctx3.fillBlock({each:each},$ctx2,4)});
  42652. //>>excludeEnd("ctx");
  42653. }));
  42654. $31=$recv(statements)._last();
  42655. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42656. $ctx2.sendIdx["last"]=2;
  42657. //>>excludeEnd("ctx");
  42658. $30=$recv($31)._isReturn();
  42659. $29=$recv($30)._and_((function(){
  42660. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42661. return $core.withContext(function($ctx3) {
  42662. //>>excludeEnd("ctx");
  42663. $32=$recv(statements)._last();
  42664. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42665. $ctx3.sendIdx["last"]=3;
  42666. //>>excludeEnd("ctx");
  42667. return $recv($32)._isBlockReturn();
  42668. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42669. }, function($ctx3) {$ctx3.fillBlock({},$ctx2,5)});
  42670. //>>excludeEnd("ctx");
  42671. }));
  42672. if($core.assert($29)){
  42673. $33=sequence;
  42674. $36=$recv(statements)._last();
  42675. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42676. $ctx2.sendIdx["last"]=4;
  42677. //>>excludeEnd("ctx");
  42678. $35=$recv($36)._instructions();
  42679. $34=$recv($35)._first();
  42680. return $recv($33)._add_($34);
  42681. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42682. $ctx2.sendIdx["add:"]=8;
  42683. //>>excludeEnd("ctx");
  42684. } else {
  42685. return $recv(sequence)._add_($recv(statements)._last());
  42686. };
  42687. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42688. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,3)});
  42689. //>>excludeEnd("ctx");
  42690. }));
  42691. $37=inlinedClosure;
  42692. return $37;
  42693. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42694. }, function($ctx1) {$ctx1.fill(self,"inlineClosure:",{anIRClosure:anIRClosure,inlinedClosure:inlinedClosure,sequence:sequence,statements:statements},$globals.IRSendInliner)});
  42695. //>>excludeEnd("ctx");
  42696. },
  42697. //>>excludeStart("ide", pragmas.excludeIdeData);
  42698. args: ["anIRClosure"],
  42699. 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: (AliasVar new scope: inlinedClosure scope; name: each; yourself));\x0a\x09\x09\x09add: (IRVariable new variable: (AliasVar new scope: inlinedClosure scope; name: '$receiver'; yourself));\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 instructions last instructions.\x0a\x09\x0a\x09statements ifNotEmpty: [\x0a\x09\x09statements allButLast do: [ :each | sequence add: each ].\x0a\x0a\x09\x09\x22Inlined closures don't have implicit local returns\x22\x0a\x09\x09(statements last isReturn and: [ statements last isBlockReturn ])\x0a\x09\x09\x09ifTrue: [ sequence add: statements last instructions first ]\x0a\x09\x09\x09ifFalse: [ sequence add: statements last ] ].\x0a\x0a\x09^ inlinedClosure",
  42700. referencedClasses: ["IRTempDeclaration", "IRAssignment", "IRVariable", "AliasVar"],
  42701. //>>excludeEnd("ide");
  42702. messageSends: ["inlinedClosure", "scope:", "scope", "parent:", "parent", "do:", "tempDeclarations", "add:", "inlinedSequence", "arguments", "name:", "new", "yourself", "variable:", "instructions", "last", "ifNotEmpty:", "allButLast", "ifTrue:ifFalse:", "and:", "isReturn", "isBlockReturn", "first"]
  42703. }),
  42704. $globals.IRSendInliner);
  42705. $core.addMethod(
  42706. $core.method({
  42707. selector: "inlineSend:",
  42708. protocol: 'inlining',
  42709. fn: function (anIRSend){
  42710. var self=this;
  42711. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42712. return $core.withContext(function($ctx1) {
  42713. //>>excludeEnd("ctx");
  42714. var $3,$2,$1;
  42715. self._send_(anIRSend);
  42716. $3=self._send();
  42717. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42718. $ctx1.sendIdx["send"]=1;
  42719. //>>excludeEnd("ctx");
  42720. $2=$recv($3)._selector();
  42721. $1=self._perform_withArguments_($2,$recv($recv(self._send())._instructions())._allButFirst());
  42722. return $1;
  42723. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42724. }, function($ctx1) {$ctx1.fill(self,"inlineSend:",{anIRSend:anIRSend},$globals.IRSendInliner)});
  42725. //>>excludeEnd("ctx");
  42726. },
  42727. //>>excludeStart("ide", pragmas.excludeIdeData);
  42728. args: ["anIRSend"],
  42729. source: "inlineSend: anIRSend\x0a\x09self send: anIRSend.\x0a\x09^ self\x0a\x09\x09perform: self send selector\x0a\x09\x09withArguments: self send instructions allButFirst",
  42730. referencedClasses: [],
  42731. //>>excludeEnd("ide");
  42732. messageSends: ["send:", "perform:withArguments:", "selector", "send", "allButFirst", "instructions"]
  42733. }),
  42734. $globals.IRSendInliner);
  42735. $core.addMethod(
  42736. $core.method({
  42737. selector: "inlinedClosure",
  42738. protocol: 'factory',
  42739. fn: function (){
  42740. var self=this;
  42741. function $IRInlinedClosure(){return $globals.IRInlinedClosure||(typeof IRInlinedClosure=="undefined"?nil:IRInlinedClosure)}
  42742. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42743. return $core.withContext(function($ctx1) {
  42744. //>>excludeEnd("ctx");
  42745. var $1;
  42746. $1=$recv($IRInlinedClosure())._new();
  42747. return $1;
  42748. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42749. }, function($ctx1) {$ctx1.fill(self,"inlinedClosure",{},$globals.IRSendInliner)});
  42750. //>>excludeEnd("ctx");
  42751. },
  42752. //>>excludeStart("ide", pragmas.excludeIdeData);
  42753. args: [],
  42754. source: "inlinedClosure\x0a\x09^ IRInlinedClosure new",
  42755. referencedClasses: ["IRInlinedClosure"],
  42756. //>>excludeEnd("ide");
  42757. messageSends: ["new"]
  42758. }),
  42759. $globals.IRSendInliner);
  42760. $core.addMethod(
  42761. $core.method({
  42762. selector: "inlinedSend:with:",
  42763. protocol: 'inlining',
  42764. fn: function (inlinedSend,anIRInstruction){
  42765. var self=this;
  42766. var inlinedClosure;
  42767. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42768. return $core.withContext(function($ctx1) {
  42769. //>>excludeEnd("ctx");
  42770. var $1,$2,$5,$4,$3,$6,$7;
  42771. $1=$recv(anIRInstruction)._isClosure();
  42772. if(!$core.assert($1)){
  42773. self._inliningError_("Message argument should be a block");
  42774. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42775. $ctx1.sendIdx["inliningError:"]=1;
  42776. //>>excludeEnd("ctx");
  42777. };
  42778. $2=$recv($recv($recv(anIRInstruction)._arguments())._size()).__eq((0));
  42779. if(!$core.assert($2)){
  42780. self._inliningError_("Inlined block should have zero argument");
  42781. };
  42782. inlinedClosure=$recv(self._translator())._visit_(self._inlineClosure_(anIRInstruction));
  42783. $5=self._send();
  42784. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42785. $ctx1.sendIdx["send"]=1;
  42786. //>>excludeEnd("ctx");
  42787. $4=$recv($5)._instructions();
  42788. $3=$recv($4)._first();
  42789. $recv(inlinedSend)._add_($3);
  42790. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42791. $ctx1.sendIdx["add:"]=1;
  42792. //>>excludeEnd("ctx");
  42793. $6=$recv(inlinedSend)._add_(inlinedClosure);
  42794. $recv(self._send())._replaceWith_(inlinedSend);
  42795. $7=$recv($recv(inlinedSend)._method())._internalVariables();
  42796. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42797. $ctx1.sendIdx["internalVariables"]=1;
  42798. //>>excludeEnd("ctx");
  42799. $recv($7)._addAll_($recv(inlinedSend)._internalVariables());
  42800. return inlinedSend;
  42801. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42802. }, function($ctx1) {$ctx1.fill(self,"inlinedSend:with:",{inlinedSend:inlinedSend,anIRInstruction:anIRInstruction,inlinedClosure:inlinedClosure},$globals.IRSendInliner)});
  42803. //>>excludeEnd("ctx");
  42804. },
  42805. //>>excludeStart("ide", pragmas.excludeIdeData);
  42806. args: ["inlinedSend", "anIRInstruction"],
  42807. source: "inlinedSend: inlinedSend with: anIRInstruction\x0a\x09| inlinedClosure |\x0a\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' ].\x0a\x0a\x09inlinedClosure := self translator visit: (self inlineClosure: anIRInstruction).\x0a\x0a\x09inlinedSend\x0a\x09\x09add: self send instructions first;\x0a\x09\x09add: inlinedClosure.\x0a\x0a\x09self send replaceWith: inlinedSend.\x0a\x09inlinedSend method internalVariables \x0a\x09\x09addAll: inlinedSend internalVariables.\x0a\x0a\x09^ inlinedSend",
  42808. referencedClasses: [],
  42809. //>>excludeEnd("ide");
  42810. messageSends: ["ifFalse:", "isClosure", "inliningError:", "=", "size", "arguments", "visit:", "translator", "inlineClosure:", "add:", "first", "instructions", "send", "replaceWith:", "addAll:", "internalVariables", "method"]
  42811. }),
  42812. $globals.IRSendInliner);
  42813. $core.addMethod(
  42814. $core.method({
  42815. selector: "inlinedSend:with:with:",
  42816. protocol: 'inlining',
  42817. fn: function (inlinedSend,anIRInstruction,anotherIRInstruction){
  42818. var self=this;
  42819. var inlinedClosure1,inlinedClosure2;
  42820. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42821. return $core.withContext(function($ctx1) {
  42822. //>>excludeEnd("ctx");
  42823. var $1,$2,$3,$4,$7,$6,$5,$8,$9;
  42824. $1=$recv(anIRInstruction)._isClosure();
  42825. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42826. $ctx1.sendIdx["isClosure"]=1;
  42827. //>>excludeEnd("ctx");
  42828. if(!$core.assert($1)){
  42829. self._inliningError_("Message argument should be a block");
  42830. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42831. $ctx1.sendIdx["inliningError:"]=1;
  42832. //>>excludeEnd("ctx");
  42833. };
  42834. $2=$recv(anotherIRInstruction)._isClosure();
  42835. if(!$core.assert($2)){
  42836. self._inliningError_("Message argument should be a block");
  42837. };
  42838. $3=self._translator();
  42839. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42840. $ctx1.sendIdx["translator"]=1;
  42841. //>>excludeEnd("ctx");
  42842. $4=self._inlineClosure_(anIRInstruction);
  42843. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42844. $ctx1.sendIdx["inlineClosure:"]=1;
  42845. //>>excludeEnd("ctx");
  42846. inlinedClosure1=$recv($3)._visit_($4);
  42847. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42848. $ctx1.sendIdx["visit:"]=1;
  42849. //>>excludeEnd("ctx");
  42850. inlinedClosure2=$recv(self._translator())._visit_(self._inlineClosure_(anotherIRInstruction));
  42851. $7=self._send();
  42852. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42853. $ctx1.sendIdx["send"]=1;
  42854. //>>excludeEnd("ctx");
  42855. $6=$recv($7)._instructions();
  42856. $5=$recv($6)._first();
  42857. $recv(inlinedSend)._add_($5);
  42858. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42859. $ctx1.sendIdx["add:"]=1;
  42860. //>>excludeEnd("ctx");
  42861. $recv(inlinedSend)._add_(inlinedClosure1);
  42862. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42863. $ctx1.sendIdx["add:"]=2;
  42864. //>>excludeEnd("ctx");
  42865. $8=$recv(inlinedSend)._add_(inlinedClosure2);
  42866. $recv(self._send())._replaceWith_(inlinedSend);
  42867. $9=$recv($recv(inlinedSend)._method())._internalVariables();
  42868. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42869. $ctx1.sendIdx["internalVariables"]=1;
  42870. //>>excludeEnd("ctx");
  42871. $recv($9)._addAll_($recv(inlinedSend)._internalVariables());
  42872. return inlinedSend;
  42873. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42874. }, function($ctx1) {$ctx1.fill(self,"inlinedSend:with:with:",{inlinedSend:inlinedSend,anIRInstruction:anIRInstruction,anotherIRInstruction:anotherIRInstruction,inlinedClosure1:inlinedClosure1,inlinedClosure2:inlinedClosure2},$globals.IRSendInliner)});
  42875. //>>excludeEnd("ctx");
  42876. },
  42877. //>>excludeStart("ide", pragmas.excludeIdeData);
  42878. args: ["inlinedSend", "anIRInstruction", "anotherIRInstruction"],
  42879. source: "inlinedSend: inlinedSend with: anIRInstruction with: anotherIRInstruction\x0a\x09| inlinedClosure1 inlinedClosure2 |\x0a\x0a\x09anIRInstruction isClosure ifFalse: [ self inliningError: 'Message argument should be a block' ].\x0a\x09anotherIRInstruction isClosure ifFalse: [ self inliningError: 'Message argument should be a block' ].\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 instructions first;\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",
  42880. referencedClasses: [],
  42881. //>>excludeEnd("ide");
  42882. messageSends: ["ifFalse:", "isClosure", "inliningError:", "visit:", "translator", "inlineClosure:", "add:", "first", "instructions", "send", "replaceWith:", "addAll:", "internalVariables", "method"]
  42883. }),
  42884. $globals.IRSendInliner);
  42885. $core.addMethod(
  42886. $core.method({
  42887. selector: "inlinedSequence",
  42888. protocol: 'factory',
  42889. fn: function (){
  42890. var self=this;
  42891. function $IRInlinedSequence(){return $globals.IRInlinedSequence||(typeof IRInlinedSequence=="undefined"?nil:IRInlinedSequence)}
  42892. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42893. return $core.withContext(function($ctx1) {
  42894. //>>excludeEnd("ctx");
  42895. var $1;
  42896. $1=$recv($IRInlinedSequence())._new();
  42897. return $1;
  42898. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42899. }, function($ctx1) {$ctx1.fill(self,"inlinedSequence",{},$globals.IRSendInliner)});
  42900. //>>excludeEnd("ctx");
  42901. },
  42902. //>>excludeStart("ide", pragmas.excludeIdeData);
  42903. args: [],
  42904. source: "inlinedSequence\x0a\x09^ IRInlinedSequence new",
  42905. referencedClasses: ["IRInlinedSequence"],
  42906. //>>excludeEnd("ide");
  42907. messageSends: ["new"]
  42908. }),
  42909. $globals.IRSendInliner);
  42910. $core.addMethod(
  42911. $core.method({
  42912. selector: "inliningError:",
  42913. protocol: 'error handling',
  42914. fn: function (aString){
  42915. var self=this;
  42916. function $InliningError(){return $globals.InliningError||(typeof InliningError=="undefined"?nil:InliningError)}
  42917. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42918. return $core.withContext(function($ctx1) {
  42919. //>>excludeEnd("ctx");
  42920. $recv($InliningError())._signal_(aString);
  42921. return self;
  42922. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  42923. }, function($ctx1) {$ctx1.fill(self,"inliningError:",{aString:aString},$globals.IRSendInliner)});
  42924. //>>excludeEnd("ctx");
  42925. },
  42926. //>>excludeStart("ide", pragmas.excludeIdeData);
  42927. args: ["aString"],
  42928. source: "inliningError: aString\x0a\x09InliningError signal: aString",
  42929. referencedClasses: ["InliningError"],
  42930. //>>excludeEnd("ide");
  42931. messageSends: ["signal:"]
  42932. }),
  42933. $globals.IRSendInliner);
  42934. $core.addMethod(
  42935. $core.method({
  42936. selector: "send",
  42937. protocol: 'accessing',
  42938. fn: function (){
  42939. var self=this;
  42940. var $1;
  42941. $1=self["@send"];
  42942. return $1;
  42943. },
  42944. //>>excludeStart("ide", pragmas.excludeIdeData);
  42945. args: [],
  42946. source: "send\x0a\x09^ send",
  42947. referencedClasses: [],
  42948. //>>excludeEnd("ide");
  42949. messageSends: []
  42950. }),
  42951. $globals.IRSendInliner);
  42952. $core.addMethod(
  42953. $core.method({
  42954. selector: "send:",
  42955. protocol: 'accessing',
  42956. fn: function (anIRSend){
  42957. var self=this;
  42958. self["@send"]=anIRSend;
  42959. return self;
  42960. },
  42961. //>>excludeStart("ide", pragmas.excludeIdeData);
  42962. args: ["anIRSend"],
  42963. source: "send: anIRSend\x0a\x09send := anIRSend",
  42964. referencedClasses: [],
  42965. //>>excludeEnd("ide");
  42966. messageSends: []
  42967. }),
  42968. $globals.IRSendInliner);
  42969. $core.addMethod(
  42970. $core.method({
  42971. selector: "translator",
  42972. protocol: 'accessing',
  42973. fn: function (){
  42974. var self=this;
  42975. var $1;
  42976. $1=self["@translator"];
  42977. return $1;
  42978. },
  42979. //>>excludeStart("ide", pragmas.excludeIdeData);
  42980. args: [],
  42981. source: "translator\x0a\x09^ translator",
  42982. referencedClasses: [],
  42983. //>>excludeEnd("ide");
  42984. messageSends: []
  42985. }),
  42986. $globals.IRSendInliner);
  42987. $core.addMethod(
  42988. $core.method({
  42989. selector: "translator:",
  42990. protocol: 'accessing',
  42991. fn: function (anASTTranslator){
  42992. var self=this;
  42993. self["@translator"]=anASTTranslator;
  42994. return self;
  42995. },
  42996. //>>excludeStart("ide", pragmas.excludeIdeData);
  42997. args: ["anASTTranslator"],
  42998. source: "translator: anASTTranslator\x0a\x09translator := anASTTranslator",
  42999. referencedClasses: [],
  43000. //>>excludeEnd("ide");
  43001. messageSends: []
  43002. }),
  43003. $globals.IRSendInliner);
  43004. $core.addMethod(
  43005. $core.method({
  43006. selector: "inlinedSelectors",
  43007. protocol: 'accessing',
  43008. fn: function (){
  43009. var self=this;
  43010. var $1;
  43011. $1=["ifTrue:", "ifFalse:", "ifTrue:ifFalse:", "ifFalse:ifTrue:", "ifNil:", "ifNotNil:", "ifNil:ifNotNil:", "ifNotNil:ifNil:"];
  43012. return $1;
  43013. },
  43014. //>>excludeStart("ide", pragmas.excludeIdeData);
  43015. args: [],
  43016. source: "inlinedSelectors\x0a\x09^ #('ifTrue:' 'ifFalse:' 'ifTrue:ifFalse:' 'ifFalse:ifTrue:' 'ifNil:' 'ifNotNil:' 'ifNil:ifNotNil:' 'ifNotNil:ifNil:')",
  43017. referencedClasses: [],
  43018. //>>excludeEnd("ide");
  43019. messageSends: []
  43020. }),
  43021. $globals.IRSendInliner.klass);
  43022. $core.addMethod(
  43023. $core.method({
  43024. selector: "shouldInline:",
  43025. protocol: 'accessing',
  43026. fn: function (anIRInstruction){
  43027. var self=this;
  43028. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43029. return $core.withContext(function($ctx1) {
  43030. //>>excludeEnd("ctx");
  43031. var $1,$2;
  43032. var $early={};
  43033. try {
  43034. $1=$recv(self._inlinedSelectors())._includes_($recv(anIRInstruction)._selector());
  43035. if(!$core.assert($1)){
  43036. return false;
  43037. };
  43038. $recv($recv($recv(anIRInstruction)._instructions())._allButFirst())._do_((function(each){
  43039. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43040. return $core.withContext(function($ctx2) {
  43041. //>>excludeEnd("ctx");
  43042. $2=$recv(each)._isClosure();
  43043. if(!$core.assert($2)){
  43044. throw $early=[false];
  43045. };
  43046. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43047. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,2)});
  43048. //>>excludeEnd("ctx");
  43049. }));
  43050. return true;
  43051. }
  43052. catch(e) {if(e===$early)return e[0]; throw e}
  43053. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43054. }, function($ctx1) {$ctx1.fill(self,"shouldInline:",{anIRInstruction:anIRInstruction},$globals.IRSendInliner.klass)});
  43055. //>>excludeEnd("ctx");
  43056. },
  43057. //>>excludeStart("ide", pragmas.excludeIdeData);
  43058. args: ["anIRInstruction"],
  43059. source: "shouldInline: anIRInstruction\x0a\x09(self inlinedSelectors includes: anIRInstruction selector) ifFalse: [ ^ false ].\x0a\x09anIRInstruction instructions allButFirst do: [ :each |\x0a\x09\x09each isClosure ifFalse: [ ^ false ]].\x0a\x09^ true",
  43060. referencedClasses: [],
  43061. //>>excludeEnd("ide");
  43062. messageSends: ["ifFalse:", "includes:", "inlinedSelectors", "selector", "do:", "allButFirst", "instructions", "isClosure"]
  43063. }),
  43064. $globals.IRSendInliner.klass);
  43065. $core.addClass('IRAssignmentInliner', $globals.IRSendInliner, ['assignment'], 'Compiler-Inlining');
  43066. //>>excludeStart("ide", pragmas.excludeIdeData);
  43067. $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};";
  43068. //>>excludeEnd("ide");
  43069. $core.addMethod(
  43070. $core.method({
  43071. selector: "assignment",
  43072. protocol: 'accessing',
  43073. fn: function (){
  43074. var self=this;
  43075. var $1;
  43076. $1=self["@assignment"];
  43077. return $1;
  43078. },
  43079. //>>excludeStart("ide", pragmas.excludeIdeData);
  43080. args: [],
  43081. source: "assignment\x0a\x09^ assignment",
  43082. referencedClasses: [],
  43083. //>>excludeEnd("ide");
  43084. messageSends: []
  43085. }),
  43086. $globals.IRAssignmentInliner);
  43087. $core.addMethod(
  43088. $core.method({
  43089. selector: "assignment:",
  43090. protocol: 'accessing',
  43091. fn: function (aNode){
  43092. var self=this;
  43093. self["@assignment"]=aNode;
  43094. return self;
  43095. },
  43096. //>>excludeStart("ide", pragmas.excludeIdeData);
  43097. args: ["aNode"],
  43098. source: "assignment: aNode\x0a\x09assignment := aNode",
  43099. referencedClasses: [],
  43100. //>>excludeEnd("ide");
  43101. messageSends: []
  43102. }),
  43103. $globals.IRAssignmentInliner);
  43104. $core.addMethod(
  43105. $core.method({
  43106. selector: "inlineAssignment:",
  43107. protocol: 'inlining',
  43108. fn: function (anIRAssignment){
  43109. var self=this;
  43110. var inlinedAssignment;
  43111. function $IRInlinedAssignment(){return $globals.IRInlinedAssignment||(typeof IRInlinedAssignment=="undefined"?nil:IRInlinedAssignment)}
  43112. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43113. return $core.withContext(function($ctx1) {
  43114. //>>excludeEnd("ctx");
  43115. var $1,$2;
  43116. self._assignment_(anIRAssignment);
  43117. inlinedAssignment=$recv($IRInlinedAssignment())._new();
  43118. $1=$recv(anIRAssignment)._instructions();
  43119. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43120. $ctx1.sendIdx["instructions"]=1;
  43121. //>>excludeEnd("ctx");
  43122. $recv($1)._do_((function(each){
  43123. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43124. return $core.withContext(function($ctx2) {
  43125. //>>excludeEnd("ctx");
  43126. return $recv(inlinedAssignment)._add_(each);
  43127. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43128. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  43129. //>>excludeEnd("ctx");
  43130. }));
  43131. $recv(anIRAssignment)._replaceWith_(inlinedAssignment);
  43132. self._inlineSend_($recv($recv(inlinedAssignment)._instructions())._last());
  43133. $2=inlinedAssignment;
  43134. return $2;
  43135. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43136. }, function($ctx1) {$ctx1.fill(self,"inlineAssignment:",{anIRAssignment:anIRAssignment,inlinedAssignment:inlinedAssignment},$globals.IRAssignmentInliner)});
  43137. //>>excludeEnd("ctx");
  43138. },
  43139. //>>excludeStart("ide", pragmas.excludeIdeData);
  43140. args: ["anIRAssignment"],
  43141. source: "inlineAssignment: anIRAssignment\x0a\x09| inlinedAssignment |\x0a\x09self assignment: anIRAssignment.\x0a\x09inlinedAssignment := IRInlinedAssignment new.\x0a\x09anIRAssignment instructions do: [ :each |\x0a\x09\x09inlinedAssignment add: each ].\x0a\x09anIRAssignment replaceWith: inlinedAssignment.\x0a\x09self inlineSend: inlinedAssignment instructions last.\x0a\x09^ inlinedAssignment",
  43142. referencedClasses: ["IRInlinedAssignment"],
  43143. //>>excludeEnd("ide");
  43144. messageSends: ["assignment:", "new", "do:", "instructions", "add:", "replaceWith:", "inlineSend:", "last"]
  43145. }),
  43146. $globals.IRAssignmentInliner);
  43147. $core.addMethod(
  43148. $core.method({
  43149. selector: "inlineClosure:",
  43150. protocol: 'inlining',
  43151. fn: function (anIRClosure){
  43152. var self=this;
  43153. var inlinedClosure,statements;
  43154. function $IRAssignment(){return $globals.IRAssignment||(typeof IRAssignment=="undefined"?nil:IRAssignment)}
  43155. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43156. return $core.withContext(function($ctx1) {
  43157. //>>excludeEnd("ctx");
  43158. var $2,$1,$4,$3,$5,$7,$8,$6,$9;
  43159. inlinedClosure=(
  43160. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43161. $ctx1.supercall = true,
  43162. //>>excludeEnd("ctx");
  43163. $globals.IRAssignmentInliner.superclass.fn.prototype._inlineClosure_.apply($recv(self), [anIRClosure]));
  43164. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43165. $ctx1.supercall = false;
  43166. //>>excludeEnd("ctx");;
  43167. $2=$recv(inlinedClosure)._instructions();
  43168. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43169. $ctx1.sendIdx["instructions"]=2;
  43170. //>>excludeEnd("ctx");
  43171. $1=$recv($2)._last();
  43172. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43173. $ctx1.sendIdx["last"]=1;
  43174. //>>excludeEnd("ctx");
  43175. statements=$recv($1)._instructions();
  43176. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43177. $ctx1.sendIdx["instructions"]=1;
  43178. //>>excludeEnd("ctx");
  43179. $recv(statements)._ifNotEmpty_((function(){
  43180. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43181. return $core.withContext(function($ctx2) {
  43182. //>>excludeEnd("ctx");
  43183. $4=$recv(statements)._last();
  43184. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43185. $ctx2.sendIdx["last"]=2;
  43186. //>>excludeEnd("ctx");
  43187. $3=$recv($4)._canBeAssigned();
  43188. if($core.assert($3)){
  43189. $5=$recv(statements)._last();
  43190. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43191. $ctx2.sendIdx["last"]=3;
  43192. //>>excludeEnd("ctx");
  43193. $7=$recv($IRAssignment())._new();
  43194. $recv($7)._add_($recv($recv(self._assignment())._instructions())._first());
  43195. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43196. $ctx2.sendIdx["add:"]=1;
  43197. //>>excludeEnd("ctx");
  43198. $recv($7)._add_($recv($recv(statements)._last())._copy());
  43199. $8=$recv($7)._yourself();
  43200. $6=$8;
  43201. return $recv($5)._replaceWith_($6);
  43202. };
  43203. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43204. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  43205. //>>excludeEnd("ctx");
  43206. }));
  43207. $9=inlinedClosure;
  43208. return $9;
  43209. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43210. }, function($ctx1) {$ctx1.fill(self,"inlineClosure:",{anIRClosure:anIRClosure,inlinedClosure:inlinedClosure,statements:statements},$globals.IRAssignmentInliner)});
  43211. //>>excludeEnd("ctx");
  43212. },
  43213. //>>excludeStart("ide", pragmas.excludeIdeData);
  43214. args: ["anIRClosure"],
  43215. source: "inlineClosure: anIRClosure\x0a\x09| inlinedClosure statements |\x0a\x0a\x09inlinedClosure := super inlineClosure: anIRClosure.\x0a\x09statements := inlinedClosure instructions last instructions.\x0a\x09\x0a\x09statements ifNotEmpty: [\x0a\x09\x09statements last canBeAssigned ifTrue: [\x0a\x09\x09\x09statements last replaceWith: (IRAssignment new\x0a\x09\x09\x09\x09add: self assignment instructions first;\x0a\x09\x09\x09\x09add: statements last copy;\x0a\x09\x09\x09\x09yourself) ] ].\x0a\x0a\x09^ inlinedClosure",
  43216. referencedClasses: ["IRAssignment"],
  43217. //>>excludeEnd("ide");
  43218. messageSends: ["inlineClosure:", "instructions", "last", "ifNotEmpty:", "ifTrue:", "canBeAssigned", "replaceWith:", "add:", "new", "first", "assignment", "copy", "yourself"]
  43219. }),
  43220. $globals.IRAssignmentInliner);
  43221. $core.addClass('IRReturnInliner', $globals.IRSendInliner, [], 'Compiler-Inlining');
  43222. //>>excludeStart("ide", pragmas.excludeIdeData);
  43223. $globals.IRReturnInliner.comment="I inline message sends with inlined closure together with a return instruction.";
  43224. //>>excludeEnd("ide");
  43225. $core.addMethod(
  43226. $core.method({
  43227. selector: "inlineClosure:",
  43228. protocol: 'inlining',
  43229. fn: function (anIRClosure){
  43230. var self=this;
  43231. var closure,statements;
  43232. function $IRReturn(){return $globals.IRReturn||(typeof IRReturn=="undefined"?nil:IRReturn)}
  43233. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43234. return $core.withContext(function($ctx1) {
  43235. //>>excludeEnd("ctx");
  43236. var $1,$3,$2,$4,$5,$6,$7;
  43237. closure=(
  43238. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43239. $ctx1.supercall = true,
  43240. //>>excludeEnd("ctx");
  43241. $globals.IRReturnInliner.superclass.fn.prototype._inlineClosure_.apply($recv(self), [anIRClosure]));
  43242. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43243. $ctx1.supercall = false;
  43244. //>>excludeEnd("ctx");;
  43245. $1=$recv($recv(closure)._instructions())._last();
  43246. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43247. $ctx1.sendIdx["last"]=1;
  43248. //>>excludeEnd("ctx");
  43249. statements=$recv($1)._instructions();
  43250. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43251. $ctx1.sendIdx["instructions"]=1;
  43252. //>>excludeEnd("ctx");
  43253. $recv(statements)._ifNotEmpty_((function(){
  43254. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43255. return $core.withContext(function($ctx2) {
  43256. //>>excludeEnd("ctx");
  43257. $3=$recv(statements)._last();
  43258. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43259. $ctx2.sendIdx["last"]=2;
  43260. //>>excludeEnd("ctx");
  43261. $2=$recv($3)._isReturn();
  43262. if(!$core.assert($2)){
  43263. $4=$recv(statements)._last();
  43264. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43265. $ctx2.sendIdx["last"]=3;
  43266. //>>excludeEnd("ctx");
  43267. $5=$recv($IRReturn())._new();
  43268. $recv($5)._add_($recv($recv(statements)._last())._copy());
  43269. $6=$recv($5)._yourself();
  43270. return $recv($4)._replaceWith_($6);
  43271. };
  43272. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43273. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  43274. //>>excludeEnd("ctx");
  43275. }));
  43276. $7=closure;
  43277. return $7;
  43278. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43279. }, function($ctx1) {$ctx1.fill(self,"inlineClosure:",{anIRClosure:anIRClosure,closure:closure,statements:statements},$globals.IRReturnInliner)});
  43280. //>>excludeEnd("ctx");
  43281. },
  43282. //>>excludeStart("ide", pragmas.excludeIdeData);
  43283. args: ["anIRClosure"],
  43284. source: "inlineClosure: anIRClosure\x0a\x09| closure statements |\x0a\x0a\x09closure := super inlineClosure: anIRClosure.\x0a\x09statements := closure instructions last instructions.\x0a\x09\x0a\x09statements ifNotEmpty: [\x0a\x09\x09statements last isReturn\x0a\x09\x09\x09ifFalse: [ statements last replaceWith: (IRReturn new\x0a\x09\x09\x09\x09add: statements last copy;\x0a\x09\x09\x09\x09yourself)] ].\x0a\x0a\x09^ closure",
  43285. referencedClasses: ["IRReturn"],
  43286. //>>excludeEnd("ide");
  43287. messageSends: ["inlineClosure:", "instructions", "last", "ifNotEmpty:", "ifFalse:", "isReturn", "replaceWith:", "add:", "new", "copy", "yourself"]
  43288. }),
  43289. $globals.IRReturnInliner);
  43290. $core.addMethod(
  43291. $core.method({
  43292. selector: "inlineReturn:",
  43293. protocol: 'inlining',
  43294. fn: function (anIRReturn){
  43295. var self=this;
  43296. var return_;
  43297. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43298. return $core.withContext(function($ctx1) {
  43299. //>>excludeEnd("ctx");
  43300. var $1,$2;
  43301. return_=self._inlinedReturn();
  43302. $1=$recv(anIRReturn)._instructions();
  43303. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43304. $ctx1.sendIdx["instructions"]=1;
  43305. //>>excludeEnd("ctx");
  43306. $recv($1)._do_((function(each){
  43307. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43308. return $core.withContext(function($ctx2) {
  43309. //>>excludeEnd("ctx");
  43310. return $recv(return_)._add_(each);
  43311. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43312. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  43313. //>>excludeEnd("ctx");
  43314. }));
  43315. $recv(anIRReturn)._replaceWith_(return_);
  43316. self._inlineSend_($recv($recv(return_)._instructions())._last());
  43317. $2=return_;
  43318. return $2;
  43319. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43320. }, function($ctx1) {$ctx1.fill(self,"inlineReturn:",{anIRReturn:anIRReturn,return_:return_},$globals.IRReturnInliner)});
  43321. //>>excludeEnd("ctx");
  43322. },
  43323. //>>excludeStart("ide", pragmas.excludeIdeData);
  43324. args: ["anIRReturn"],
  43325. source: "inlineReturn: anIRReturn\x0a\x09| return |\x0a\x09return := self inlinedReturn.\x0a\x09anIRReturn instructions do: [ :each |\x0a\x09\x09return add: each ].\x0a\x09anIRReturn replaceWith: return.\x0a\x09self inlineSend: return instructions last.\x0a\x09^ return",
  43326. referencedClasses: [],
  43327. //>>excludeEnd("ide");
  43328. messageSends: ["inlinedReturn", "do:", "instructions", "add:", "replaceWith:", "inlineSend:", "last"]
  43329. }),
  43330. $globals.IRReturnInliner);
  43331. $core.addMethod(
  43332. $core.method({
  43333. selector: "inlinedReturn",
  43334. protocol: 'factory',
  43335. fn: function (){
  43336. var self=this;
  43337. function $IRInlinedReturn(){return $globals.IRInlinedReturn||(typeof IRInlinedReturn=="undefined"?nil:IRInlinedReturn)}
  43338. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43339. return $core.withContext(function($ctx1) {
  43340. //>>excludeEnd("ctx");
  43341. var $1;
  43342. $1=$recv($IRInlinedReturn())._new();
  43343. return $1;
  43344. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43345. }, function($ctx1) {$ctx1.fill(self,"inlinedReturn",{},$globals.IRReturnInliner)});
  43346. //>>excludeEnd("ctx");
  43347. },
  43348. //>>excludeStart("ide", pragmas.excludeIdeData);
  43349. args: [],
  43350. source: "inlinedReturn\x0a\x09^ IRInlinedReturn new",
  43351. referencedClasses: ["IRInlinedReturn"],
  43352. //>>excludeEnd("ide");
  43353. messageSends: ["new"]
  43354. }),
  43355. $globals.IRReturnInliner);
  43356. $core.addClass('InliningCodeGenerator', $globals.CodeGenerator, [], 'Compiler-Inlining');
  43357. //>>excludeStart("ide", pragmas.excludeIdeData);
  43358. $globals.InliningCodeGenerator.comment="I am a specialized code generator that uses inlining to produce more optimized JavaScript output";
  43359. //>>excludeEnd("ide");
  43360. $core.addMethod(
  43361. $core.method({
  43362. selector: "compileNode:",
  43363. protocol: 'compiling',
  43364. fn: function (aNode){
  43365. var self=this;
  43366. var ir,stream;
  43367. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43368. return $core.withContext(function($ctx1) {
  43369. //>>excludeEnd("ctx");
  43370. var $2,$3,$1;
  43371. $recv(self._semanticAnalyzer())._visit_(aNode);
  43372. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43373. $ctx1.sendIdx["visit:"]=1;
  43374. //>>excludeEnd("ctx");
  43375. ir=$recv(self._translator())._visit_(aNode);
  43376. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43377. $ctx1.sendIdx["visit:"]=2;
  43378. //>>excludeEnd("ctx");
  43379. $recv(self._inliner())._visit_(ir);
  43380. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43381. $ctx1.sendIdx["visit:"]=3;
  43382. //>>excludeEnd("ctx");
  43383. $2=self._irTranslator();
  43384. $recv($2)._currentClass_(self._currentClass());
  43385. $recv($2)._visit_(ir);
  43386. $3=$recv($2)._contents();
  43387. $1=$3;
  43388. return $1;
  43389. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43390. }, function($ctx1) {$ctx1.fill(self,"compileNode:",{aNode:aNode,ir:ir,stream:stream},$globals.InliningCodeGenerator)});
  43391. //>>excludeEnd("ctx");
  43392. },
  43393. //>>excludeStart("ide", pragmas.excludeIdeData);
  43394. args: ["aNode"],
  43395. source: "compileNode: aNode\x0a\x09| ir stream |\x0a\x0a\x09self semanticAnalyzer visit: aNode.\x0a\x09ir := self translator visit: aNode.\x0a\x09self inliner visit: ir.\x0a\x0a\x09^ self irTranslator\x0a\x09\x09currentClass: self currentClass;\x0a\x09\x09visit: ir;\x0a\x09\x09contents",
  43396. referencedClasses: [],
  43397. //>>excludeEnd("ide");
  43398. messageSends: ["visit:", "semanticAnalyzer", "translator", "inliner", "currentClass:", "irTranslator", "currentClass", "contents"]
  43399. }),
  43400. $globals.InliningCodeGenerator);
  43401. $core.addMethod(
  43402. $core.method({
  43403. selector: "inliner",
  43404. protocol: 'compiling',
  43405. fn: function (){
  43406. var self=this;
  43407. function $IRInliner(){return $globals.IRInliner||(typeof IRInliner=="undefined"?nil:IRInliner)}
  43408. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43409. return $core.withContext(function($ctx1) {
  43410. //>>excludeEnd("ctx");
  43411. var $1;
  43412. $1=$recv($IRInliner())._new();
  43413. return $1;
  43414. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43415. }, function($ctx1) {$ctx1.fill(self,"inliner",{},$globals.InliningCodeGenerator)});
  43416. //>>excludeEnd("ctx");
  43417. },
  43418. //>>excludeStart("ide", pragmas.excludeIdeData);
  43419. args: [],
  43420. source: "inliner\x0a\x09^ IRInliner new",
  43421. referencedClasses: ["IRInliner"],
  43422. //>>excludeEnd("ide");
  43423. messageSends: ["new"]
  43424. }),
  43425. $globals.InliningCodeGenerator);
  43426. $core.addMethod(
  43427. $core.method({
  43428. selector: "irTranslator",
  43429. protocol: 'compiling',
  43430. fn: function (){
  43431. var self=this;
  43432. function $IRInliningJSTranslator(){return $globals.IRInliningJSTranslator||(typeof IRInliningJSTranslator=="undefined"?nil:IRInliningJSTranslator)}
  43433. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43434. return $core.withContext(function($ctx1) {
  43435. //>>excludeEnd("ctx");
  43436. var $1;
  43437. $1=$recv($IRInliningJSTranslator())._new();
  43438. return $1;
  43439. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43440. }, function($ctx1) {$ctx1.fill(self,"irTranslator",{},$globals.InliningCodeGenerator)});
  43441. //>>excludeEnd("ctx");
  43442. },
  43443. //>>excludeStart("ide", pragmas.excludeIdeData);
  43444. args: [],
  43445. source: "irTranslator\x0a\x09^ IRInliningJSTranslator new",
  43446. referencedClasses: ["IRInliningJSTranslator"],
  43447. //>>excludeEnd("ide");
  43448. messageSends: ["new"]
  43449. }),
  43450. $globals.InliningCodeGenerator);
  43451. });
  43452. define("amber_core/Compiler-Semantic", ["amber/boot", "amber_core/Kernel-Objects", "amber_core/Compiler-Core"], function($boot){
  43453. var $core=$boot.api,nil=$boot.nil,$recv=$boot.asReceiver,$globals=$boot.globals;
  43454. var smalltalk=$core,_st=$recv,globals=$globals;
  43455. $core.addPackage('Compiler-Semantic');
  43456. $core.packages["Compiler-Semantic"].transport = {"type":"amd","amdNamespace":"amber_core"};
  43457. $core.addClass('LexicalScope', $globals.Object, ['node', 'instruction', 'temps', 'args', 'outerScope', 'blockIndex'], 'Compiler-Semantic');
  43458. //>>excludeStart("ide", pragmas.excludeIdeData);
  43459. $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.";
  43460. //>>excludeEnd("ide");
  43461. $core.addMethod(
  43462. $core.method({
  43463. selector: "addArg:",
  43464. protocol: 'adding',
  43465. fn: function (aString){
  43466. var self=this;
  43467. function $ArgVar(){return $globals.ArgVar||(typeof ArgVar=="undefined"?nil:ArgVar)}
  43468. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43469. return $core.withContext(function($ctx1) {
  43470. //>>excludeEnd("ctx");
  43471. var $1;
  43472. $1=self._args();
  43473. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43474. $ctx1.sendIdx["args"]=1;
  43475. //>>excludeEnd("ctx");
  43476. $recv($1)._at_put_(aString,$recv($ArgVar())._on_(aString));
  43477. $recv($recv(self._args())._at_(aString))._scope_(self);
  43478. return self;
  43479. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43480. }, function($ctx1) {$ctx1.fill(self,"addArg:",{aString:aString},$globals.LexicalScope)});
  43481. //>>excludeEnd("ctx");
  43482. },
  43483. //>>excludeStart("ide", pragmas.excludeIdeData);
  43484. args: ["aString"],
  43485. source: "addArg: aString\x0a\x09self args at: aString put: (ArgVar on: aString).\x0a\x09(self args at: aString) scope: self",
  43486. referencedClasses: ["ArgVar"],
  43487. //>>excludeEnd("ide");
  43488. messageSends: ["at:put:", "args", "on:", "scope:", "at:"]
  43489. }),
  43490. $globals.LexicalScope);
  43491. $core.addMethod(
  43492. $core.method({
  43493. selector: "addTemp:",
  43494. protocol: 'adding',
  43495. fn: function (aString){
  43496. var self=this;
  43497. function $TempVar(){return $globals.TempVar||(typeof TempVar=="undefined"?nil:TempVar)}
  43498. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43499. return $core.withContext(function($ctx1) {
  43500. //>>excludeEnd("ctx");
  43501. var $1;
  43502. $1=self._temps();
  43503. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43504. $ctx1.sendIdx["temps"]=1;
  43505. //>>excludeEnd("ctx");
  43506. $recv($1)._at_put_(aString,$recv($TempVar())._on_(aString));
  43507. $recv($recv(self._temps())._at_(aString))._scope_(self);
  43508. return self;
  43509. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43510. }, function($ctx1) {$ctx1.fill(self,"addTemp:",{aString:aString},$globals.LexicalScope)});
  43511. //>>excludeEnd("ctx");
  43512. },
  43513. //>>excludeStart("ide", pragmas.excludeIdeData);
  43514. args: ["aString"],
  43515. source: "addTemp: aString\x0a\x09self temps at: aString put: (TempVar on: aString).\x0a\x09(self temps at: aString) scope: self",
  43516. referencedClasses: ["TempVar"],
  43517. //>>excludeEnd("ide");
  43518. messageSends: ["at:put:", "temps", "on:", "scope:", "at:"]
  43519. }),
  43520. $globals.LexicalScope);
  43521. $core.addMethod(
  43522. $core.method({
  43523. selector: "alias",
  43524. protocol: 'accessing',
  43525. fn: function (){
  43526. var self=this;
  43527. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43528. return $core.withContext(function($ctx1) {
  43529. //>>excludeEnd("ctx");
  43530. var $1;
  43531. $1="$ctx".__comma($recv(self._scopeLevel())._asString());
  43532. return $1;
  43533. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43534. }, function($ctx1) {$ctx1.fill(self,"alias",{},$globals.LexicalScope)});
  43535. //>>excludeEnd("ctx");
  43536. },
  43537. //>>excludeStart("ide", pragmas.excludeIdeData);
  43538. args: [],
  43539. source: "alias\x0a\x09^ '$ctx', self scopeLevel asString",
  43540. referencedClasses: [],
  43541. //>>excludeEnd("ide");
  43542. messageSends: [",", "asString", "scopeLevel"]
  43543. }),
  43544. $globals.LexicalScope);
  43545. $core.addMethod(
  43546. $core.method({
  43547. selector: "allVariableNames",
  43548. protocol: 'accessing',
  43549. fn: function (){
  43550. var self=this;
  43551. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43552. return $core.withContext(function($ctx1) {
  43553. //>>excludeEnd("ctx");
  43554. var $2,$1;
  43555. $2=$recv(self._args())._keys();
  43556. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43557. $ctx1.sendIdx["keys"]=1;
  43558. //>>excludeEnd("ctx");
  43559. $1=$recv($2).__comma($recv(self._temps())._keys());
  43560. return $1;
  43561. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43562. }, function($ctx1) {$ctx1.fill(self,"allVariableNames",{},$globals.LexicalScope)});
  43563. //>>excludeEnd("ctx");
  43564. },
  43565. //>>excludeStart("ide", pragmas.excludeIdeData);
  43566. args: [],
  43567. source: "allVariableNames\x0a\x09^ self args keys, self temps keys",
  43568. referencedClasses: [],
  43569. //>>excludeEnd("ide");
  43570. messageSends: [",", "keys", "args", "temps"]
  43571. }),
  43572. $globals.LexicalScope);
  43573. $core.addMethod(
  43574. $core.method({
  43575. selector: "args",
  43576. protocol: 'accessing',
  43577. fn: function (){
  43578. var self=this;
  43579. function $Dictionary(){return $globals.Dictionary||(typeof Dictionary=="undefined"?nil:Dictionary)}
  43580. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43581. return $core.withContext(function($ctx1) {
  43582. //>>excludeEnd("ctx");
  43583. var $2,$1,$receiver;
  43584. $2=self["@args"];
  43585. if(($receiver = $2) == null || $receiver.isNil){
  43586. self["@args"]=$recv($Dictionary())._new();
  43587. $1=self["@args"];
  43588. } else {
  43589. $1=$2;
  43590. };
  43591. return $1;
  43592. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43593. }, function($ctx1) {$ctx1.fill(self,"args",{},$globals.LexicalScope)});
  43594. //>>excludeEnd("ctx");
  43595. },
  43596. //>>excludeStart("ide", pragmas.excludeIdeData);
  43597. args: [],
  43598. source: "args\x0a\x09^ args ifNil: [ args := Dictionary new ]",
  43599. referencedClasses: ["Dictionary"],
  43600. //>>excludeEnd("ide");
  43601. messageSends: ["ifNil:", "new"]
  43602. }),
  43603. $globals.LexicalScope);
  43604. $core.addMethod(
  43605. $core.method({
  43606. selector: "bindingFor:",
  43607. protocol: 'accessing',
  43608. fn: function (aStringOrNode){
  43609. var self=this;
  43610. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43611. return $core.withContext(function($ctx1) {
  43612. //>>excludeEnd("ctx");
  43613. var $2,$3,$4,$5,$1;
  43614. $2=self._pseudoVars();
  43615. $3=$recv(aStringOrNode)._value();
  43616. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43617. $ctx1.sendIdx["value"]=1;
  43618. //>>excludeEnd("ctx");
  43619. $1=$recv($2)._at_ifAbsent_($3,(function(){
  43620. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43621. return $core.withContext(function($ctx2) {
  43622. //>>excludeEnd("ctx");
  43623. $4=self._args();
  43624. $5=$recv(aStringOrNode)._value();
  43625. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43626. $ctx2.sendIdx["value"]=2;
  43627. //>>excludeEnd("ctx");
  43628. return $recv($4)._at_ifAbsent_($5,(function(){
  43629. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43630. return $core.withContext(function($ctx3) {
  43631. //>>excludeEnd("ctx");
  43632. return $recv(self._temps())._at_ifAbsent_($recv(aStringOrNode)._value(),(function(){
  43633. return nil;
  43634. }));
  43635. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43636. }, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)});
  43637. //>>excludeEnd("ctx");
  43638. }));
  43639. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43640. $ctx2.sendIdx["at:ifAbsent:"]=2;
  43641. //>>excludeEnd("ctx");
  43642. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43643. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  43644. //>>excludeEnd("ctx");
  43645. }));
  43646. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43647. $ctx1.sendIdx["at:ifAbsent:"]=1;
  43648. //>>excludeEnd("ctx");
  43649. return $1;
  43650. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43651. }, function($ctx1) {$ctx1.fill(self,"bindingFor:",{aStringOrNode:aStringOrNode},$globals.LexicalScope)});
  43652. //>>excludeEnd("ctx");
  43653. },
  43654. //>>excludeStart("ide", pragmas.excludeIdeData);
  43655. args: ["aStringOrNode"],
  43656. source: "bindingFor: aStringOrNode\x0a\x09^ self pseudoVars at: aStringOrNode value ifAbsent: [\x0a\x09\x09self args at: aStringOrNode value ifAbsent: [\x0a\x09\x09\x09self temps at: aStringOrNode value ifAbsent: [ nil ]]]",
  43657. referencedClasses: [],
  43658. //>>excludeEnd("ide");
  43659. messageSends: ["at:ifAbsent:", "pseudoVars", "value", "args", "temps"]
  43660. }),
  43661. $globals.LexicalScope);
  43662. $core.addMethod(
  43663. $core.method({
  43664. selector: "blockIndex",
  43665. protocol: 'accessing',
  43666. fn: function (){
  43667. var self=this;
  43668. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43669. return $core.withContext(function($ctx1) {
  43670. //>>excludeEnd("ctx");
  43671. var $2,$1,$receiver;
  43672. $2=self["@blockIndex"];
  43673. if(($receiver = $2) == null || $receiver.isNil){
  43674. $1=(0);
  43675. } else {
  43676. $1=$2;
  43677. };
  43678. return $1;
  43679. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43680. }, function($ctx1) {$ctx1.fill(self,"blockIndex",{},$globals.LexicalScope)});
  43681. //>>excludeEnd("ctx");
  43682. },
  43683. //>>excludeStart("ide", pragmas.excludeIdeData);
  43684. args: [],
  43685. source: "blockIndex\x0a\x09^ blockIndex ifNil: [ 0 ]",
  43686. referencedClasses: [],
  43687. //>>excludeEnd("ide");
  43688. messageSends: ["ifNil:"]
  43689. }),
  43690. $globals.LexicalScope);
  43691. $core.addMethod(
  43692. $core.method({
  43693. selector: "blockIndex:",
  43694. protocol: 'accessing',
  43695. fn: function (anInteger){
  43696. var self=this;
  43697. self["@blockIndex"]=anInteger;
  43698. return self;
  43699. },
  43700. //>>excludeStart("ide", pragmas.excludeIdeData);
  43701. args: ["anInteger"],
  43702. source: "blockIndex: anInteger \x0a\x09blockIndex := anInteger",
  43703. referencedClasses: [],
  43704. //>>excludeEnd("ide");
  43705. messageSends: []
  43706. }),
  43707. $globals.LexicalScope);
  43708. $core.addMethod(
  43709. $core.method({
  43710. selector: "canInlineNonLocalReturns",
  43711. protocol: 'testing',
  43712. fn: function (){
  43713. var self=this;
  43714. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43715. return $core.withContext(function($ctx1) {
  43716. //>>excludeEnd("ctx");
  43717. var $1;
  43718. $1=$recv(self._isInlined())._and_((function(){
  43719. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43720. return $core.withContext(function($ctx2) {
  43721. //>>excludeEnd("ctx");
  43722. return $recv(self._outerScope())._canInlineNonLocalReturns();
  43723. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43724. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  43725. //>>excludeEnd("ctx");
  43726. }));
  43727. return $1;
  43728. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43729. }, function($ctx1) {$ctx1.fill(self,"canInlineNonLocalReturns",{},$globals.LexicalScope)});
  43730. //>>excludeEnd("ctx");
  43731. },
  43732. //>>excludeStart("ide", pragmas.excludeIdeData);
  43733. args: [],
  43734. source: "canInlineNonLocalReturns\x0a\x09^ self isInlined and: [ self outerScope canInlineNonLocalReturns ]",
  43735. referencedClasses: [],
  43736. //>>excludeEnd("ide");
  43737. messageSends: ["and:", "isInlined", "canInlineNonLocalReturns", "outerScope"]
  43738. }),
  43739. $globals.LexicalScope);
  43740. $core.addMethod(
  43741. $core.method({
  43742. selector: "instruction",
  43743. protocol: 'accessing',
  43744. fn: function (){
  43745. var self=this;
  43746. var $1;
  43747. $1=self["@instruction"];
  43748. return $1;
  43749. },
  43750. //>>excludeStart("ide", pragmas.excludeIdeData);
  43751. args: [],
  43752. source: "instruction\x0a\x09^ instruction",
  43753. referencedClasses: [],
  43754. //>>excludeEnd("ide");
  43755. messageSends: []
  43756. }),
  43757. $globals.LexicalScope);
  43758. $core.addMethod(
  43759. $core.method({
  43760. selector: "instruction:",
  43761. protocol: 'accessing',
  43762. fn: function (anIRInstruction){
  43763. var self=this;
  43764. self["@instruction"]=anIRInstruction;
  43765. return self;
  43766. },
  43767. //>>excludeStart("ide", pragmas.excludeIdeData);
  43768. args: ["anIRInstruction"],
  43769. source: "instruction: anIRInstruction\x0a\x09instruction := anIRInstruction",
  43770. referencedClasses: [],
  43771. //>>excludeEnd("ide");
  43772. messageSends: []
  43773. }),
  43774. $globals.LexicalScope);
  43775. $core.addMethod(
  43776. $core.method({
  43777. selector: "isBlockScope",
  43778. protocol: 'testing',
  43779. fn: function (){
  43780. var self=this;
  43781. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43782. return $core.withContext(function($ctx1) {
  43783. //>>excludeEnd("ctx");
  43784. var $1;
  43785. $1=$recv(self._isMethodScope())._not();
  43786. return $1;
  43787. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43788. }, function($ctx1) {$ctx1.fill(self,"isBlockScope",{},$globals.LexicalScope)});
  43789. //>>excludeEnd("ctx");
  43790. },
  43791. //>>excludeStart("ide", pragmas.excludeIdeData);
  43792. args: [],
  43793. source: "isBlockScope\x0a\x09^ self isMethodScope not",
  43794. referencedClasses: [],
  43795. //>>excludeEnd("ide");
  43796. messageSends: ["not", "isMethodScope"]
  43797. }),
  43798. $globals.LexicalScope);
  43799. $core.addMethod(
  43800. $core.method({
  43801. selector: "isInlined",
  43802. protocol: 'testing',
  43803. fn: function (){
  43804. var self=this;
  43805. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43806. return $core.withContext(function($ctx1) {
  43807. //>>excludeEnd("ctx");
  43808. var $3,$2,$1;
  43809. $3=self._instruction();
  43810. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43811. $ctx1.sendIdx["instruction"]=1;
  43812. //>>excludeEnd("ctx");
  43813. $2=$recv($3)._notNil();
  43814. $1=$recv($2)._and_((function(){
  43815. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43816. return $core.withContext(function($ctx2) {
  43817. //>>excludeEnd("ctx");
  43818. return $recv(self._instruction())._isInlined();
  43819. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43820. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  43821. //>>excludeEnd("ctx");
  43822. }));
  43823. return $1;
  43824. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43825. }, function($ctx1) {$ctx1.fill(self,"isInlined",{},$globals.LexicalScope)});
  43826. //>>excludeEnd("ctx");
  43827. },
  43828. //>>excludeStart("ide", pragmas.excludeIdeData);
  43829. args: [],
  43830. source: "isInlined\x0a\x09^ self instruction notNil and: [\x0a\x09\x09self instruction isInlined ]",
  43831. referencedClasses: [],
  43832. //>>excludeEnd("ide");
  43833. messageSends: ["and:", "notNil", "instruction", "isInlined"]
  43834. }),
  43835. $globals.LexicalScope);
  43836. $core.addMethod(
  43837. $core.method({
  43838. selector: "isMethodScope",
  43839. protocol: 'testing',
  43840. fn: function (){
  43841. var self=this;
  43842. return false;
  43843. },
  43844. //>>excludeStart("ide", pragmas.excludeIdeData);
  43845. args: [],
  43846. source: "isMethodScope\x0a\x09^ false",
  43847. referencedClasses: [],
  43848. //>>excludeEnd("ide");
  43849. messageSends: []
  43850. }),
  43851. $globals.LexicalScope);
  43852. $core.addMethod(
  43853. $core.method({
  43854. selector: "lookupVariable:",
  43855. protocol: 'accessing',
  43856. fn: function (aNode){
  43857. var self=this;
  43858. var lookup;
  43859. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43860. return $core.withContext(function($ctx1) {
  43861. //>>excludeEnd("ctx");
  43862. var $1,$2,$3,$receiver;
  43863. lookup=self._bindingFor_(aNode);
  43864. $1=lookup;
  43865. if(($receiver = $1) == null || $receiver.isNil){
  43866. $2=self._outerScope();
  43867. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43868. $ctx1.sendIdx["outerScope"]=1;
  43869. //>>excludeEnd("ctx");
  43870. if(($receiver = $2) == null || $receiver.isNil){
  43871. lookup=$2;
  43872. } else {
  43873. lookup=$recv(self._outerScope())._lookupVariable_(aNode);
  43874. };
  43875. lookup;
  43876. } else {
  43877. $1;
  43878. };
  43879. $3=lookup;
  43880. return $3;
  43881. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43882. }, function($ctx1) {$ctx1.fill(self,"lookupVariable:",{aNode:aNode,lookup:lookup},$globals.LexicalScope)});
  43883. //>>excludeEnd("ctx");
  43884. },
  43885. //>>excludeStart("ide", pragmas.excludeIdeData);
  43886. args: ["aNode"],
  43887. source: "lookupVariable: aNode\x0a\x09| lookup |\x0a\x09lookup := (self bindingFor: aNode).\x0a\x09lookup ifNil: [\x0a\x09\x09lookup := self outerScope ifNotNil: [\x0a\x09\x09\x09(self outerScope lookupVariable: aNode) ]].\x0a\x09^ lookup",
  43888. referencedClasses: [],
  43889. //>>excludeEnd("ide");
  43890. messageSends: ["bindingFor:", "ifNil:", "ifNotNil:", "outerScope", "lookupVariable:"]
  43891. }),
  43892. $globals.LexicalScope);
  43893. $core.addMethod(
  43894. $core.method({
  43895. selector: "methodScope",
  43896. protocol: 'accessing',
  43897. fn: function (){
  43898. var self=this;
  43899. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43900. return $core.withContext(function($ctx1) {
  43901. //>>excludeEnd("ctx");
  43902. var $2,$1,$receiver;
  43903. $2=self._outerScope();
  43904. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43905. $ctx1.sendIdx["outerScope"]=1;
  43906. //>>excludeEnd("ctx");
  43907. if(($receiver = $2) == null || $receiver.isNil){
  43908. $1=$2;
  43909. } else {
  43910. $1=$recv(self._outerScope())._methodScope();
  43911. };
  43912. return $1;
  43913. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43914. }, function($ctx1) {$ctx1.fill(self,"methodScope",{},$globals.LexicalScope)});
  43915. //>>excludeEnd("ctx");
  43916. },
  43917. //>>excludeStart("ide", pragmas.excludeIdeData);
  43918. args: [],
  43919. source: "methodScope\x0a\x09^ self outerScope ifNotNil: [\x0a\x09\x09self outerScope methodScope ]",
  43920. referencedClasses: [],
  43921. //>>excludeEnd("ide");
  43922. messageSends: ["ifNotNil:", "outerScope", "methodScope"]
  43923. }),
  43924. $globals.LexicalScope);
  43925. $core.addMethod(
  43926. $core.method({
  43927. selector: "node",
  43928. protocol: 'accessing',
  43929. fn: function (){
  43930. var self=this;
  43931. var $1;
  43932. $1=self["@node"];
  43933. return $1;
  43934. },
  43935. //>>excludeStart("ide", pragmas.excludeIdeData);
  43936. args: [],
  43937. source: "node\x0a\x09\x22Answer the node in which I am defined\x22\x0a\x09\x0a\x09^ node",
  43938. referencedClasses: [],
  43939. //>>excludeEnd("ide");
  43940. messageSends: []
  43941. }),
  43942. $globals.LexicalScope);
  43943. $core.addMethod(
  43944. $core.method({
  43945. selector: "node:",
  43946. protocol: 'accessing',
  43947. fn: function (aNode){
  43948. var self=this;
  43949. self["@node"]=aNode;
  43950. return self;
  43951. },
  43952. //>>excludeStart("ide", pragmas.excludeIdeData);
  43953. args: ["aNode"],
  43954. source: "node: aNode\x0a\x09node := aNode",
  43955. referencedClasses: [],
  43956. //>>excludeEnd("ide");
  43957. messageSends: []
  43958. }),
  43959. $globals.LexicalScope);
  43960. $core.addMethod(
  43961. $core.method({
  43962. selector: "outerScope",
  43963. protocol: 'accessing',
  43964. fn: function (){
  43965. var self=this;
  43966. var $1;
  43967. $1=self["@outerScope"];
  43968. return $1;
  43969. },
  43970. //>>excludeStart("ide", pragmas.excludeIdeData);
  43971. args: [],
  43972. source: "outerScope\x0a\x09^ outerScope",
  43973. referencedClasses: [],
  43974. //>>excludeEnd("ide");
  43975. messageSends: []
  43976. }),
  43977. $globals.LexicalScope);
  43978. $core.addMethod(
  43979. $core.method({
  43980. selector: "outerScope:",
  43981. protocol: 'accessing',
  43982. fn: function (aLexicalScope){
  43983. var self=this;
  43984. self["@outerScope"]=aLexicalScope;
  43985. return self;
  43986. },
  43987. //>>excludeStart("ide", pragmas.excludeIdeData);
  43988. args: ["aLexicalScope"],
  43989. source: "outerScope: aLexicalScope\x0a\x09outerScope := aLexicalScope",
  43990. referencedClasses: [],
  43991. //>>excludeEnd("ide");
  43992. messageSends: []
  43993. }),
  43994. $globals.LexicalScope);
  43995. $core.addMethod(
  43996. $core.method({
  43997. selector: "pseudoVars",
  43998. protocol: 'accessing',
  43999. fn: function (){
  44000. var self=this;
  44001. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  44002. return $core.withContext(function($ctx1) {
  44003. //>>excludeEnd("ctx");
  44004. var $1;
  44005. $1=$recv(self._methodScope())._pseudoVars();
  44006. return $1;
  44007. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  44008. }, function($ctx1) {$ctx1.fill(self,"pseudoVars",{},$globals.LexicalScope)});
  44009. //>>excludeEnd("ctx");
  44010. },
  44011. //>>excludeStart("ide", pragmas.excludeIdeData);
  44012. args: [],
  44013. source: "pseudoVars\x0a\x09^ self methodScope pseudoVars",
  44014. referencedClasses: [],
  44015. //>>excludeEnd("ide");
  44016. messageSends: ["pseudoVars", "methodScope"]
  44017. }),
  44018. $globals.LexicalScope);
  44019. $core.addMethod(
  44020. $core.method({
  44021. selector: "scopeLevel",
  44022. protocol: 'accessing',
  44023. fn: function (){
  44024. var self=this;
  44025. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  44026. return $core.withContext(function($ctx1) {
  44027. //>>excludeEnd("ctx");
  44028. var $1,$2,$4,$3,$5,$receiver;
  44029. $1=self._outerScope();
  44030. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  44031. $ctx1.sendIdx["outerScope"]=1;
  44032. //>>excludeEnd("ctx");
  44033. if(($receiver = $1) == null || $receiver.isNil){
  44034. return (1);
  44035. } else {
  44036. $1;
  44037. };
  44038. $2=self._isInlined();
  44039. if($core.assert($2)){
  44040. $4=self._outerScope();
  44041. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  44042. $ctx1.sendIdx["outerScope"]=2;
  44043. //>>excludeEnd("ctx");
  44044. $3=$recv($4)._scopeLevel();
  44045. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  44046. $ctx1.sendIdx["scopeLevel"]=1;
  44047. //>>excludeEnd("ctx");
  44048. return $3;
  44049. };
  44050. $5=$recv($recv(self._outerScope())._scopeLevel()).__plus((1));
  44051. return $5;
  44052. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  44053. }, function($ctx1) {$ctx1.fill(self,"scopeLevel",{},$globals.LexicalScope)});
  44054. //>>excludeEnd("ctx");
  44055. },
  44056. //>>excludeStart("ide", pragmas.excludeIdeData);
  44057. args: [],
  44058. source: "scopeLevel\x0a\x09self outerScope ifNil: [ ^ 1 ].\x0a\x09self isInlined ifTrue: [ ^ self outerScope scopeLevel ].\x0a\x09\x0a\x09^ self outerScope scopeLevel + 1",
  44059. referencedClasses: [],
  44060. //>>excludeEnd("ide");
  44061. messageSends: ["ifNil:", "outerScope", "ifTrue:", "isInlined", "scopeLevel", "+"]
  44062. }),
  44063. $globals.LexicalScope);
  44064. $core.addMethod(
  44065. $core.method({
  44066. selector: "temps",
  44067. protocol: 'accessing',
  44068. fn: function (){
  44069. var self=this;
  44070. function $Dictionary(){return $globals.Dictionary||(typeof Dictionary=="undefined"?nil:Dictionary)}
  44071. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  44072. return $core.withContext(function($ctx1) {
  44073. //>>excludeEnd("ctx");
  44074. var $2,$1,$receiver;
  44075. $2=self["@temps"];
  44076. if(($receiver = $2) == null || $receiver.isNil){
  44077. self["@temps"]=$recv($Dictionary())._new();
  44078. $1=self["@temps"];
  44079. } else {
  44080. $1=$2;
  44081. };
  44082. return $1;
  44083. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  44084. }, function($ctx1) {$ctx1.fill(self,"temps",{},$globals.LexicalScope)});
  44085. //>>excludeEnd("ctx");
  44086. },
  44087. //>>excludeStart("ide", pragmas.excludeIdeData);
  44088. args: [],
  44089. source: "temps\x0a\x09^ temps ifNil: [ temps := Dictionary new ]",
  44090. referencedClasses: ["Dictionary"],
  44091. //>>excludeEnd("ide");
  44092. messageSends: ["ifNil:", "new"]
  44093. }),
  44094. $globals.LexicalScope);
  44095. $core.addClass('MethodLexicalScope', $globals.LexicalScope, ['iVars', 'pseudoVars', 'unknownVariables', 'localReturn', 'nonLocalReturns'], 'Compiler-Semantic');
  44096. //>>excludeStart("ide", pragmas.excludeIdeData);
  44097. $globals.MethodLexicalScope.comment="I represent a method scope.";
  44098. //>>excludeEnd("ide");
  44099. $core.addMethod(
  44100. $core.method({
  44101. selector: "addIVar:",
  44102. protocol: 'adding',
  44103. fn: function (aString){
  44104. var self=this;
  44105. function $InstanceVar(){return $globals.InstanceVar||(typeof InstanceVar=="undefined"?nil:InstanceVar)}
  44106. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  44107. return $core.withContext(function($ctx1) {
  44108. //>>excludeEnd("ctx");
  44109. var $1;
  44110. $1=self._iVars();
  44111. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  44112. $ctx1.sendIdx["iVars"]=1;
  44113. //>>excludeEnd("ctx");
  44114. $recv($1)._at_put_(aString,$recv($InstanceVar())._on_(aString));
  44115. $recv($recv(self._iVars())._at_(aString))._scope_(self);
  44116. return self;
  44117. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  44118. }, function($ctx1) {$ctx1.fill(self,"addIVar:",{aString:aString},$globals.MethodLexicalScope)});
  44119. //>>excludeEnd("ctx");
  44120. },
  44121. //>>excludeStart("ide", pragmas.excludeIdeData);
  44122. args: ["aString"],
  44123. source: "addIVar: aString\x0a\x09self iVars at: aString put: (InstanceVar on: aString).\x0a\x09(self iVars at: aString) scope: self",
  44124. referencedClasses: ["InstanceVar"],
  44125. //>>excludeEnd("ide");
  44126. messageSends: ["at:put:", "iVars", "on:", "scope:", "at:"]
  44127. }),
  44128. $globals.MethodLexicalScope);
  44129. $core.addMethod(
  44130. $core.method({
  44131. selector: "addNonLocalReturn:",
  44132. protocol: 'adding',
  44133. fn: function (aScope){
  44134. var self=this;
  44135. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  44136. return $core.withContext(function($ctx1) {
  44137. //>>excludeEnd("ctx");
  44138. $recv(self._nonLocalReturns())._add_(aScope);
  44139. return self;
  44140. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  44141. }, function($ctx1) {$ctx1.fill(self,"addNonLocalReturn:",{aScope:aScope},$globals.MethodLexicalScope)});
  44142. //>>excludeEnd("ctx");
  44143. },
  44144. //>>excludeStart("ide", pragmas.excludeIdeData);
  44145. args: ["aScope"],
  44146. source: "addNonLocalReturn: aScope\x0a\x09self nonLocalReturns add: aScope",
  44147. referencedClasses: [],
  44148. //>>excludeEnd("ide");
  44149. messageSends: ["add:", "nonLocalReturns"]
  44150. }),
  44151. $globals.MethodLexicalScope);
  44152. $core.addMethod(
  44153. $core.method({
  44154. selector: "allVariableNames",
  44155. protocol: 'accessing',
  44156. fn: function (){
  44157. var self=this;
  44158. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  44159. return $core.withContext(function($ctx1) {
  44160. //>>excludeEnd("ctx");
  44161. var $2,$1;
  44162. $2=(
  44163. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  44164. $ctx1.supercall = true,
  44165. //>>excludeEnd("ctx");
  44166. $globals.MethodLexicalScope.superclass.fn.prototype._allVariableNames.apply($recv(self), []));
  44167. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  44168. $ctx1.supercall = false;
  44169. //>>excludeEnd("ctx");;
  44170. $1=$recv($2).__comma($recv(self._iVars())._keys());
  44171. return $1;
  44172. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  44173. }, function($ctx1) {$ctx1.fill(self,"allVariableNames",{},$globals.MethodLexicalScope)});
  44174. //>>excludeEnd("ctx");
  44175. },
  44176. //>>excludeStart("ide", pragmas.excludeIdeData);
  44177. args: [],
  44178. source: "allVariableNames\x0a\x09^ super allVariableNames, self iVars keys",
  44179. referencedClasses: [],
  44180. //>>excludeEnd("ide");
  44181. messageSends: [",", "allVariableNames", "keys", "iVars"]
  44182. }),
  44183. $globals.MethodLexicalScope);
  44184. $core.addMethod(
  44185. $core.method({
  44186. selector: "bindingFor:",
  44187. protocol: 'accessing',
  44188. fn: function (aNode){
  44189. var self=this;
  44190. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  44191. return $core.withContext(function($ctx1) {
  44192. //>>excludeEnd("ctx");
  44193. var $2,$1,$receiver;
  44194. $2=(
  44195. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  44196. $ctx1.supercall = true,
  44197. //>>excludeEnd("ctx");
  44198. $globals.MethodLexicalScope.superclass.fn.prototype._bindingFor_.apply($recv(self), [aNode]));
  44199. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  44200. $ctx1.supercall = false;
  44201. //>>excludeEnd("ctx");;
  44202. if(($receiver = $2) == null || $receiver.isNil){
  44203. $1=$recv(self._iVars())._at_ifAbsent_($recv(aNode)._value(),(function(){
  44204. return nil;
  44205. }));
  44206. } else {
  44207. $1=$2;
  44208. };
  44209. return $1;
  44210. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  44211. }, function($ctx1) {$ctx1.fill(self,"bindingFor:",{aNode:aNode},$globals.MethodLexicalScope)});
  44212. //>>excludeEnd("ctx");
  44213. },
  44214. //>>excludeStart("ide", pragmas.excludeIdeData);
  44215. args: ["aNode"],
  44216. source: "bindingFor: aNode\x0a\x09^ (super bindingFor: aNode) ifNil: [\x0a\x09\x09self iVars at: aNode value ifAbsent: [ nil ]]",
  44217. referencedClasses: [],
  44218. //>>excludeEnd("ide");
  44219. messageSends: ["ifNil:", "bindingFor:", "at:ifAbsent:", "iVars", "value"]
  44220. }),
  44221. $globals.MethodLexicalScope);
  44222. $core.addMethod(
  44223. $core.method({
  44224. selector: "canInlineNonLocalReturns",
  44225. protocol: 'testing',
  44226. fn: function (){
  44227. var self=this;
  44228. return true;
  44229. },
  44230. //>>excludeStart("ide", pragmas.excludeIdeData);
  44231. args: [],
  44232. source: "canInlineNonLocalReturns\x0a\x09^ true",
  44233. referencedClasses: [],
  44234. //>>excludeEnd("ide");
  44235. messageSends: []
  44236. }),
  44237. $globals.MethodLexicalScope);
  44238. $core.addMethod(
  44239. $core.method({
  44240. selector: "hasLocalReturn",
  44241. protocol: 'testing',
  44242. fn: function (){
  44243. var self=this;
  44244. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  44245. return $core.withContext(function($ctx1) {
  44246. //>>excludeEnd("ctx");
  44247. var $1;
  44248. $1=self._localReturn();
  44249. return $1;
  44250. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  44251. }, function($ctx1) {$ctx1.fill(self,"hasLocalReturn",{},$globals.MethodLexicalScope)});
  44252. //>>excludeEnd("ctx");
  44253. },
  44254. //>>excludeStart("ide", pragmas.excludeIdeData);
  44255. args: [],
  44256. source: "hasLocalReturn\x0a\x09^ self localReturn",
  44257. referencedClasses: [],
  44258. //>>excludeEnd("ide");
  44259. messageSends: ["localReturn"]
  44260. }),
  44261. $globals.MethodLexicalScope);
  44262. $core.addMethod(
  44263. $core.method({
  44264. selector: "hasNonLocalReturn",
  44265. protocol: 'testing',
  44266. fn: function (){
  44267. var self=this;
  44268. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  44269. return $core.withContext(function($ctx1) {
  44270. //>>excludeEnd("ctx");
  44271. var $1;
  44272. $1=$recv(self._nonLocalReturns())._notEmpty();
  44273. return $1;
  44274. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  44275. }, function($ctx1) {$ctx1.fill(self,"hasNonLocalReturn",{},$globals.MethodLexicalScope)});
  44276. //>>excludeEnd("ctx");
  44277. },
  44278. //>>excludeStart("ide", pragmas.excludeIdeData);
  44279. args: [],
  44280. source: "hasNonLocalReturn\x0a\x09^ self nonLocalReturns notEmpty",
  44281. referencedClasses: [],
  44282. //>>excludeEnd("ide");
  44283. messageSends: ["notEmpty", "nonLocalReturns"]
  44284. }),
  44285. $globals.MethodLexicalScope);
  44286. $core.addMethod(
  44287. $core.method({
  44288. selector: "iVars",
  44289. protocol: 'accessing',
  44290. fn: function (){
  44291. var self=this;
  44292. function $Dictionary(){return $globals.Dictionary||(typeof Dictionary=="undefined"?nil:Dictionary)}
  44293. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  44294. return $core.withContext(function($ctx1) {
  44295. //>>excludeEnd("ctx");
  44296. var $2,$1,$receiver;
  44297. $2=self["@iVars"];
  44298. if(($receiver = $2) == null || $receiver.isNil){
  44299. self["@iVars"]=$recv($Dictionary())._new();
  44300. $1=self["@iVars"];
  44301. } else {
  44302. $1=$2;
  44303. };
  44304. return $1;
  44305. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  44306. }, function($ctx1) {$ctx1.fill(self,"iVars",{},$globals.MethodLexicalScope)});
  44307. //>>excludeEnd("ctx");
  44308. },
  44309. //>>excludeStart("ide", pragmas.excludeIdeData);
  44310. args: [],
  44311. source: "iVars\x0a\x09^ iVars ifNil: [ iVars := Dictionary new ]",
  44312. referencedClasses: ["Dictionary"],
  44313. //>>excludeEnd("ide");
  44314. messageSends: ["ifNil:", "new"]
  44315. }),
  44316. $globals.MethodLexicalScope);
  44317. $core.addMethod(
  44318. $core.method({
  44319. selector: "isMethodScope",
  44320. protocol: 'testing',
  44321. fn: function (){
  44322. var self=this;
  44323. return true;
  44324. },
  44325. //>>excludeStart("ide", pragmas.excludeIdeData);
  44326. args: [],
  44327. source: "isMethodScope\x0a\x09^ true",
  44328. referencedClasses: [],
  44329. //>>excludeEnd("ide");
  44330. messageSends: []
  44331. }),
  44332. $globals.MethodLexicalScope);
  44333. $core.addMethod(
  44334. $core.method({
  44335. selector: "localReturn",
  44336. protocol: 'accessing',
  44337. fn: function (){
  44338. var self=this;
  44339. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  44340. return $core.withContext(function($ctx1) {
  44341. //>>excludeEnd("ctx");
  44342. var $2,$1,$receiver;
  44343. $2=self["@localReturn"];
  44344. if(($receiver = $2) == null || $receiver.isNil){
  44345. $1=false;
  44346. } else {
  44347. $1=$2;
  44348. };
  44349. return $1;
  44350. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  44351. }, function($ctx1) {$ctx1.fill(self,"localReturn",{},$globals.MethodLexicalScope)});
  44352. //>>excludeEnd("ctx");
  44353. },
  44354. //>>excludeStart("ide", pragmas.excludeIdeData);
  44355. args: [],
  44356. source: "localReturn\x0a\x09^ localReturn ifNil: [ false ]",
  44357. referencedClasses: [],
  44358. //>>excludeEnd("ide");
  44359. messageSends: ["ifNil:"]
  44360. }),
  44361. $globals.MethodLexicalScope);
  44362. $core.addMethod(
  44363. $core.method({
  44364. selector: "localReturn:",
  44365. protocol: 'accessing',
  44366. fn: function (aBoolean){
  44367. var self=this;
  44368. self["@localReturn"]=aBoolean;
  44369. return self;
  44370. },
  44371. //>>excludeStart("ide", pragmas.excludeIdeData);
  44372. args: ["aBoolean"],
  44373. source: "localReturn: aBoolean\x0a\x09localReturn := aBoolean",
  44374. referencedClasses: [],
  44375. //>>excludeEnd("ide");
  44376. messageSends: []
  44377. }),
  44378. $globals.MethodLexicalScope);
  44379. $core.addMethod(
  44380. $core.method({
  44381. selector: "methodScope",
  44382. protocol: 'accessing',
  44383. fn: function (){
  44384. var self=this;
  44385. return self;
  44386. },
  44387. //>>excludeStart("ide", pragmas.excludeIdeData);
  44388. args: [],
  44389. source: "methodScope\x0a\x09^ self",
  44390. referencedClasses: [],
  44391. //>>excludeEnd("ide");
  44392. messageSends: []
  44393. }),
  44394. $globals.MethodLexicalScope);
  44395. $core.addMethod(
  44396. $core.method({
  44397. selector: "nonLocalReturns",
  44398. protocol: 'accessing',
  44399. fn: function (){
  44400. var self=this;
  44401. function $OrderedCollection(){return $globals.OrderedCollection||(typeof OrderedCollection=="undefined"?nil:OrderedCollection)}
  44402. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  44403. return $core.withContext(function($ctx1) {
  44404. //>>excludeEnd("ctx");
  44405. var $2,$1,$receiver;
  44406. $2=self["@nonLocalReturns"];
  44407. if(($receiver = $2) == null || $receiver.isNil){
  44408. self["@nonLocalReturns"]=$recv($OrderedCollection())._new();
  44409. $1=self["@nonLocalReturns"];
  44410. } else {
  44411. $1=$2;
  44412. };
  44413. return $1;
  44414. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  44415. }, function($ctx1) {$ctx1.fill(self,"nonLocalReturns",{},$globals.MethodLexicalScope)});
  44416. //>>excludeEnd("ctx");
  44417. },
  44418. //>>excludeStart("ide", pragmas.excludeIdeData);
  44419. args: [],
  44420. source: "nonLocalReturns\x0a\x09^ nonLocalReturns ifNil: [ nonLocalReturns := OrderedCollection new ]",
  44421. referencedClasses: ["OrderedCollection"],
  44422. //>>excludeEnd("ide");
  44423. messageSends: ["ifNil:", "new"]
  44424. }),
  44425. $globals.MethodLexicalScope);
  44426. $core.addMethod(
  44427. $core.method({
  44428. selector: "pseudoVars",
  44429. protocol: 'accessing',
  44430. fn: function (){
  44431. var self=this;
  44432. function $Dictionary(){return $globals.Dictionary||(typeof Dictionary=="undefined"?nil:Dictionary)}
  44433. function $Smalltalk(){return $globals.Smalltalk||(typeof Smalltalk=="undefined"?nil:Smalltalk)}
  44434. function $PseudoVar(){return $globals.PseudoVar||(typeof PseudoVar=="undefined"?nil:PseudoVar)}
  44435. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  44436. return $core.withContext(function($ctx1) {
  44437. //>>excludeEnd("ctx");
  44438. var $1,$2,$3,$4,$receiver;
  44439. $1=self["@pseudoVars"];
  44440. if(($receiver = $1) == null || $receiver.isNil){
  44441. self["@pseudoVars"]=$recv($Dictionary())._new();
  44442. self["@pseudoVars"];
  44443. $recv($recv($Smalltalk())._pseudoVariableNames())._do_((function(each){
  44444. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  44445. return $core.withContext(function($ctx2) {
  44446. //>>excludeEnd("ctx");
  44447. $2=$recv($PseudoVar())._on_(each);
  44448. $recv($2)._scope_(self._methodScope());
  44449. $3=$recv($2)._yourself();
  44450. return $recv(self["@pseudoVars"])._at_put_(each,$3);
  44451. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  44452. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,2)});
  44453. //>>excludeEnd("ctx");
  44454. }));
  44455. } else {
  44456. $1;
  44457. };
  44458. $4=self["@pseudoVars"];
  44459. return $4;
  44460. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  44461. }, function($ctx1) {$ctx1.fill(self,"pseudoVars",{},$globals.MethodLexicalScope)});
  44462. //>>excludeEnd("ctx");
  44463. },
  44464. //>>excludeStart("ide", pragmas.excludeIdeData);
  44465. args: [],
  44466. source: "pseudoVars\x0a\x09pseudoVars ifNil: [\x0a\x09\x09pseudoVars := Dictionary new.\x0a\x09\x09Smalltalk pseudoVariableNames do: [ :each |\x0a\x09\x09\x09pseudoVars at: each put: ((PseudoVar on: each)\x0a\x09\x09\x09\x09scope: self methodScope;\x0a\x09\x09\x09\x09yourself) ]].\x0a\x09^ pseudoVars",
  44467. referencedClasses: ["Dictionary", "Smalltalk", "PseudoVar"],
  44468. //>>excludeEnd("ide");
  44469. messageSends: ["ifNil:", "new", "do:", "pseudoVariableNames", "at:put:", "scope:", "on:", "methodScope", "yourself"]
  44470. }),
  44471. $globals.MethodLexicalScope);
  44472. $core.addMethod(
  44473. $core.method({
  44474. selector: "removeNonLocalReturn:",
  44475. protocol: 'adding',
  44476. fn: function (aScope){
  44477. var self=this;
  44478. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  44479. return $core.withContext(function($ctx1) {
  44480. //>>excludeEnd("ctx");
  44481. $recv(self._nonLocalReturns())._remove_ifAbsent_(aScope,(function(){
  44482. }));
  44483. return self;
  44484. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  44485. }, function($ctx1) {$ctx1.fill(self,"removeNonLocalReturn:",{aScope:aScope},$globals.MethodLexicalScope)});
  44486. //>>excludeEnd("ctx");
  44487. },
  44488. //>>excludeStart("ide", pragmas.excludeIdeData);
  44489. args: ["aScope"],
  44490. source: "removeNonLocalReturn: aScope\x0a\x09self nonLocalReturns remove: aScope ifAbsent: []",
  44491. referencedClasses: [],
  44492. //>>excludeEnd("ide");
  44493. messageSends: ["remove:ifAbsent:", "nonLocalReturns"]
  44494. }),
  44495. $globals.MethodLexicalScope);
  44496. $core.addMethod(
  44497. $core.method({
  44498. selector: "unknownVariables",
  44499. protocol: 'accessing',
  44500. fn: function (){
  44501. var self=this;
  44502. function $OrderedCollection(){return $globals.OrderedCollection||(typeof OrderedCollection=="undefined"?nil:OrderedCollection)}
  44503. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  44504. return $core.withContext(function($ctx1) {
  44505. //>>excludeEnd("ctx");
  44506. var $2,$1,$receiver;
  44507. $2=self["@unknownVariables"];
  44508. if(($receiver = $2) == null || $receiver.isNil){
  44509. self["@unknownVariables"]=$recv($OrderedCollection())._new();
  44510. $1=self["@unknownVariables"];
  44511. } else {
  44512. $1=$2;
  44513. };
  44514. return $1;
  44515. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  44516. }, function($ctx1) {$ctx1.fill(self,"unknownVariables",{},$globals.MethodLexicalScope)});
  44517. //>>excludeEnd("ctx");
  44518. },
  44519. //>>excludeStart("ide", pragmas.excludeIdeData);
  44520. args: [],
  44521. source: "unknownVariables\x0a\x09^ unknownVariables ifNil: [ unknownVariables := OrderedCollection new ]",
  44522. referencedClasses: ["OrderedCollection"],
  44523. //>>excludeEnd("ide");
  44524. messageSends: ["ifNil:", "new"]
  44525. }),
  44526. $globals.MethodLexicalScope);
  44527. $core.addClass('ScopeVar', $globals.Object, ['scope', 'name'], 'Compiler-Semantic');
  44528. //>>excludeStart("ide", pragmas.excludeIdeData);
  44529. $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.";
  44530. //>>excludeEnd("ide");
  44531. $core.addMethod(
  44532. $core.method({
  44533. selector: "alias",
  44534. protocol: 'accessing',
  44535. fn: function (){
  44536. var self=this;
  44537. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  44538. return $core.withContext(function($ctx1) {
  44539. //>>excludeEnd("ctx");
  44540. var $1;
  44541. $1=$recv(self._name())._asVariableName();
  44542. return $1;
  44543. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  44544. }, function($ctx1) {$ctx1.fill(self,"alias",{},$globals.ScopeVar)});
  44545. //>>excludeEnd("ctx");
  44546. },
  44547. //>>excludeStart("ide", pragmas.excludeIdeData);
  44548. args: [],
  44549. source: "alias\x0a\x09^ self name asVariableName",
  44550. referencedClasses: [],
  44551. //>>excludeEnd("ide");
  44552. messageSends: ["asVariableName", "name"]
  44553. }),
  44554. $globals.ScopeVar);
  44555. $core.addMethod(
  44556. $core.method({
  44557. selector: "isArgVar",
  44558. protocol: 'testing',
  44559. fn: function (){
  44560. var self=this;
  44561. return false;
  44562. },
  44563. //>>excludeStart("ide", pragmas.excludeIdeData);
  44564. args: [],
  44565. source: "isArgVar\x0a\x09^ false",
  44566. referencedClasses: [],
  44567. //>>excludeEnd("ide");
  44568. messageSends: []
  44569. }),
  44570. $globals.ScopeVar);
  44571. $core.addMethod(
  44572. $core.method({
  44573. selector: "isClassRefVar",
  44574. protocol: 'testing',
  44575. fn: function (){
  44576. var self=this;
  44577. return false;
  44578. },
  44579. //>>excludeStart("ide", pragmas.excludeIdeData);
  44580. args: [],
  44581. source: "isClassRefVar\x0a\x09^ false",
  44582. referencedClasses: [],
  44583. //>>excludeEnd("ide");
  44584. messageSends: []
  44585. }),
  44586. $globals.ScopeVar);
  44587. $core.addMethod(
  44588. $core.method({
  44589. selector: "isImmutable",
  44590. protocol: 'testing',
  44591. fn: function (){
  44592. var self=this;
  44593. return false;
  44594. },
  44595. //>>excludeStart("ide", pragmas.excludeIdeData);
  44596. args: [],
  44597. source: "isImmutable\x0a\x09^ false",
  44598. referencedClasses: [],
  44599. //>>excludeEnd("ide");
  44600. messageSends: []
  44601. }),
  44602. $globals.ScopeVar);
  44603. $core.addMethod(
  44604. $core.method({
  44605. selector: "isInstanceVar",
  44606. protocol: 'testing',
  44607. fn: function (){
  44608. var self=this;
  44609. return false;
  44610. },
  44611. //>>excludeStart("ide", pragmas.excludeIdeData);
  44612. args: [],
  44613. source: "isInstanceVar\x0a\x09^ false",
  44614. referencedClasses: [],
  44615. //>>excludeEnd("ide");
  44616. messageSends: []
  44617. }),
  44618. $globals.ScopeVar);
  44619. $core.addMethod(
  44620. $core.method({
  44621. selector: "isPseudoVar",
  44622. protocol: 'testing',
  44623. fn: function (){
  44624. var self=this;
  44625. return false;
  44626. },
  44627. //>>excludeStart("ide", pragmas.excludeIdeData);
  44628. args: [],
  44629. source: "isPseudoVar\x0a\x09^ false",
  44630. referencedClasses: [],
  44631. //>>excludeEnd("ide");
  44632. messageSends: []
  44633. }),
  44634. $globals.ScopeVar);
  44635. $core.addMethod(
  44636. $core.method({
  44637. selector: "isTempVar",
  44638. protocol: 'testing',
  44639. fn: function (){
  44640. var self=this;
  44641. return false;
  44642. },
  44643. //>>excludeStart("ide", pragmas.excludeIdeData);
  44644. args: [],
  44645. source: "isTempVar\x0a\x09^ false",
  44646. referencedClasses: [],
  44647. //>>excludeEnd("ide");
  44648. messageSends: []
  44649. }),
  44650. $globals.ScopeVar);
  44651. $core.addMethod(
  44652. $core.method({
  44653. selector: "isUnknownVar",
  44654. protocol: 'testing',
  44655. fn: function (){
  44656. var self=this;
  44657. return false;
  44658. },
  44659. //>>excludeStart("ide", pragmas.excludeIdeData);
  44660. args: [],
  44661. source: "isUnknownVar\x0a\x09^ false",
  44662. referencedClasses: [],
  44663. //>>excludeEnd("ide");
  44664. messageSends: []
  44665. }),
  44666. $globals.ScopeVar);
  44667. $core.addMethod(
  44668. $core.method({
  44669. selector: "name",
  44670. protocol: 'accessing',
  44671. fn: function (){
  44672. var self=this;
  44673. var $1;
  44674. $1=self["@name"];
  44675. return $1;
  44676. },
  44677. //>>excludeStart("ide", pragmas.excludeIdeData);
  44678. args: [],
  44679. source: "name\x0a\x09^ name",
  44680. referencedClasses: [],
  44681. //>>excludeEnd("ide");
  44682. messageSends: []
  44683. }),
  44684. $globals.ScopeVar);
  44685. $core.addMethod(
  44686. $core.method({
  44687. selector: "name:",
  44688. protocol: 'accessing',
  44689. fn: function (aString){
  44690. var self=this;
  44691. self["@name"]=aString;
  44692. return self;
  44693. },
  44694. //>>excludeStart("ide", pragmas.excludeIdeData);
  44695. args: ["aString"],
  44696. source: "name: aString\x0a\x09name := aString",
  44697. referencedClasses: [],
  44698. //>>excludeEnd("ide");
  44699. messageSends: []
  44700. }),
  44701. $globals.ScopeVar);
  44702. $core.addMethod(
  44703. $core.method({
  44704. selector: "scope",
  44705. protocol: 'accessing',
  44706. fn: function (){
  44707. var self=this;
  44708. var $1;
  44709. $1=self["@scope"];
  44710. return $1;
  44711. },
  44712. //>>excludeStart("ide", pragmas.excludeIdeData);
  44713. args: [],
  44714. source: "scope\x0a\x09^ scope",
  44715. referencedClasses: [],
  44716. //>>excludeEnd("ide");
  44717. messageSends: []
  44718. }),
  44719. $globals.ScopeVar);
  44720. $core.addMethod(
  44721. $core.method({
  44722. selector: "scope:",
  44723. protocol: 'accessing',
  44724. fn: function (aScope){
  44725. var self=this;
  44726. self["@scope"]=aScope;
  44727. return self;
  44728. },
  44729. //>>excludeStart("ide", pragmas.excludeIdeData);
  44730. args: ["aScope"],
  44731. source: "scope: aScope\x0a\x09scope := aScope",
  44732. referencedClasses: [],
  44733. //>>excludeEnd("ide");
  44734. messageSends: []
  44735. }),
  44736. $globals.ScopeVar);
  44737. $core.addMethod(
  44738. $core.method({
  44739. selector: "validateAssignment",
  44740. protocol: 'testing',
  44741. fn: function (){
  44742. var self=this;
  44743. function $InvalidAssignmentError(){return $globals.InvalidAssignmentError||(typeof InvalidAssignmentError=="undefined"?nil:InvalidAssignmentError)}
  44744. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  44745. return $core.withContext(function($ctx1) {
  44746. //>>excludeEnd("ctx");
  44747. var $1,$2,$3;
  44748. $1=$recv(self._isArgVar())._or_((function(){
  44749. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  44750. return $core.withContext(function($ctx2) {
  44751. //>>excludeEnd("ctx");
  44752. return self._isPseudoVar();
  44753. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  44754. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  44755. //>>excludeEnd("ctx");
  44756. }));
  44757. if($core.assert($1)){
  44758. $2=$recv($InvalidAssignmentError())._new();
  44759. $recv($2)._variableName_(self._name());
  44760. $3=$recv($2)._signal();
  44761. $3;
  44762. };
  44763. return self;
  44764. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  44765. }, function($ctx1) {$ctx1.fill(self,"validateAssignment",{},$globals.ScopeVar)});
  44766. //>>excludeEnd("ctx");
  44767. },
  44768. //>>excludeStart("ide", pragmas.excludeIdeData);
  44769. args: [],
  44770. source: "validateAssignment\x0a\x09(self isArgVar or: [ self isPseudoVar ]) ifTrue: [\x0a\x09\x09InvalidAssignmentError new\x0a\x09\x09\x09variableName: self name;\x0a\x09\x09\x09signal]",
  44771. referencedClasses: ["InvalidAssignmentError"],
  44772. //>>excludeEnd("ide");
  44773. messageSends: ["ifTrue:", "or:", "isArgVar", "isPseudoVar", "variableName:", "new", "name", "signal"]
  44774. }),
  44775. $globals.ScopeVar);
  44776. $core.addMethod(
  44777. $core.method({
  44778. selector: "on:",
  44779. protocol: 'instance creation',
  44780. fn: function (aString){
  44781. var self=this;
  44782. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  44783. return $core.withContext(function($ctx1) {
  44784. //>>excludeEnd("ctx");
  44785. var $2,$3,$1;
  44786. $2=self._new();
  44787. $recv($2)._name_(aString);
  44788. $3=$recv($2)._yourself();
  44789. $1=$3;
  44790. return $1;
  44791. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  44792. }, function($ctx1) {$ctx1.fill(self,"on:",{aString:aString},$globals.ScopeVar.klass)});
  44793. //>>excludeEnd("ctx");
  44794. },
  44795. //>>excludeStart("ide", pragmas.excludeIdeData);
  44796. args: ["aString"],
  44797. source: "on: aString\x0a\x09^ self new\x0a\x09\x09name: aString;\x0a\x09\x09yourself",
  44798. referencedClasses: [],
  44799. //>>excludeEnd("ide");
  44800. messageSends: ["name:", "new", "yourself"]
  44801. }),
  44802. $globals.ScopeVar.klass);
  44803. $core.addClass('AliasVar', $globals.ScopeVar, ['node'], 'Compiler-Semantic');
  44804. //>>excludeStart("ide", pragmas.excludeIdeData);
  44805. $globals.AliasVar.comment="I am an internally defined variable by the compiler";
  44806. //>>excludeEnd("ide");
  44807. $core.addMethod(
  44808. $core.method({
  44809. selector: "node",
  44810. protocol: 'accessing',
  44811. fn: function (){
  44812. var self=this;
  44813. var $1;
  44814. $1=self["@node"];
  44815. return $1;
  44816. },
  44817. //>>excludeStart("ide", pragmas.excludeIdeData);
  44818. args: [],
  44819. source: "node\x0a\x09^ node",
  44820. referencedClasses: [],
  44821. //>>excludeEnd("ide");
  44822. messageSends: []
  44823. }),
  44824. $globals.AliasVar);
  44825. $core.addMethod(
  44826. $core.method({
  44827. selector: "node:",
  44828. protocol: 'accessing',
  44829. fn: function (aNode){
  44830. var self=this;
  44831. self["@node"]=aNode;
  44832. return self;
  44833. },
  44834. //>>excludeStart("ide", pragmas.excludeIdeData);
  44835. args: ["aNode"],
  44836. source: "node: aNode\x0a\x09node := aNode",
  44837. referencedClasses: [],
  44838. //>>excludeEnd("ide");
  44839. messageSends: []
  44840. }),
  44841. $globals.AliasVar);
  44842. $core.addClass('ArgVar', $globals.ScopeVar, [], 'Compiler-Semantic');
  44843. //>>excludeStart("ide", pragmas.excludeIdeData);
  44844. $globals.ArgVar.comment="I am an argument of a method or block.";
  44845. //>>excludeEnd("ide");
  44846. $core.addMethod(
  44847. $core.method({
  44848. selector: "isArgVar",
  44849. protocol: 'testing',
  44850. fn: function (){
  44851. var self=this;
  44852. return true;
  44853. },
  44854. //>>excludeStart("ide", pragmas.excludeIdeData);
  44855. args: [],
  44856. source: "isArgVar\x0a\x09^ true",
  44857. referencedClasses: [],
  44858. //>>excludeEnd("ide");
  44859. messageSends: []
  44860. }),
  44861. $globals.ArgVar);
  44862. $core.addMethod(
  44863. $core.method({
  44864. selector: "isImmutable",
  44865. protocol: 'testing',
  44866. fn: function (){
  44867. var self=this;
  44868. return true;
  44869. },
  44870. //>>excludeStart("ide", pragmas.excludeIdeData);
  44871. args: [],
  44872. source: "isImmutable\x0a\x09^ true",
  44873. referencedClasses: [],
  44874. //>>excludeEnd("ide");
  44875. messageSends: []
  44876. }),
  44877. $globals.ArgVar);
  44878. $core.addClass('ClassRefVar', $globals.ScopeVar, [], 'Compiler-Semantic');
  44879. //>>excludeStart("ide", pragmas.excludeIdeData);
  44880. $globals.ClassRefVar.comment="I am an class reference variable";
  44881. //>>excludeEnd("ide");
  44882. $core.addMethod(
  44883. $core.method({
  44884. selector: "alias",
  44885. protocol: 'accessing',
  44886. fn: function (){
  44887. var self=this;
  44888. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  44889. return $core.withContext(function($ctx1) {
  44890. //>>excludeEnd("ctx");
  44891. var $1;
  44892. $1=$recv("$".__comma(self._name())).__comma("()");
  44893. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  44894. $ctx1.sendIdx[","]=1;
  44895. //>>excludeEnd("ctx");
  44896. return $1;
  44897. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  44898. }, function($ctx1) {$ctx1.fill(self,"alias",{},$globals.ClassRefVar)});
  44899. //>>excludeEnd("ctx");
  44900. },
  44901. //>>excludeStart("ide", pragmas.excludeIdeData);
  44902. args: [],
  44903. source: "alias\x0a\x09\x22Fixes issue #190.\x0a\x09A function is created in the method definition, answering the class or nil.\x0a\x09See JSStream >> #nextPutClassRefFunction:\x22\x0a\x09\x0a\x09^ '$', self name, '()'",
  44904. referencedClasses: [],
  44905. //>>excludeEnd("ide");
  44906. messageSends: [",", "name"]
  44907. }),
  44908. $globals.ClassRefVar);
  44909. $core.addMethod(
  44910. $core.method({
  44911. selector: "isClassRefVar",
  44912. protocol: 'testing',
  44913. fn: function (){
  44914. var self=this;
  44915. return true;
  44916. },
  44917. //>>excludeStart("ide", pragmas.excludeIdeData);
  44918. args: [],
  44919. source: "isClassRefVar\x0a\x09^ true",
  44920. referencedClasses: [],
  44921. //>>excludeEnd("ide");
  44922. messageSends: []
  44923. }),
  44924. $globals.ClassRefVar);
  44925. $core.addMethod(
  44926. $core.method({
  44927. selector: "isImmutable",
  44928. protocol: 'testing',
  44929. fn: function (){
  44930. var self=this;
  44931. return true;
  44932. },
  44933. //>>excludeStart("ide", pragmas.excludeIdeData);
  44934. args: [],
  44935. source: "isImmutable\x0a\x09^ true",
  44936. referencedClasses: [],
  44937. //>>excludeEnd("ide");
  44938. messageSends: []
  44939. }),
  44940. $globals.ClassRefVar);
  44941. $core.addClass('InstanceVar', $globals.ScopeVar, [], 'Compiler-Semantic');
  44942. //>>excludeStart("ide", pragmas.excludeIdeData);
  44943. $globals.InstanceVar.comment="I am an instance variable of a method or block.";
  44944. //>>excludeEnd("ide");
  44945. $core.addMethod(
  44946. $core.method({
  44947. selector: "alias",
  44948. protocol: 'testing',
  44949. fn: function (){
  44950. var self=this;
  44951. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  44952. return $core.withContext(function($ctx1) {
  44953. //>>excludeEnd("ctx");
  44954. var $1;
  44955. $1=$recv("self[\x22@".__comma(self._name())).__comma("\x22]");
  44956. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  44957. $ctx1.sendIdx[","]=1;
  44958. //>>excludeEnd("ctx");
  44959. return $1;
  44960. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  44961. }, function($ctx1) {$ctx1.fill(self,"alias",{},$globals.InstanceVar)});
  44962. //>>excludeEnd("ctx");
  44963. },
  44964. //>>excludeStart("ide", pragmas.excludeIdeData);
  44965. args: [],
  44966. source: "alias\x0a\x09^ 'self[\x22@', self name, '\x22]'",
  44967. referencedClasses: [],
  44968. //>>excludeEnd("ide");
  44969. messageSends: [",", "name"]
  44970. }),
  44971. $globals.InstanceVar);
  44972. $core.addMethod(
  44973. $core.method({
  44974. selector: "isInstanceVar",
  44975. protocol: 'testing',
  44976. fn: function (){
  44977. var self=this;
  44978. return true;
  44979. },
  44980. //>>excludeStart("ide", pragmas.excludeIdeData);
  44981. args: [],
  44982. source: "isInstanceVar\x0a\x09^ true",
  44983. referencedClasses: [],
  44984. //>>excludeEnd("ide");
  44985. messageSends: []
  44986. }),
  44987. $globals.InstanceVar);
  44988. $core.addClass('PseudoVar', $globals.ScopeVar, [], 'Compiler-Semantic');
  44989. //>>excludeStart("ide", pragmas.excludeIdeData);
  44990. $globals.PseudoVar.comment="I am an pseudo variable.\x0a\x0aThe five Smalltalk pseudo variables are: 'self', 'super', 'nil', 'true' and 'false'";
  44991. //>>excludeEnd("ide");
  44992. $core.addMethod(
  44993. $core.method({
  44994. selector: "alias",
  44995. protocol: 'accessing',
  44996. fn: function (){
  44997. var self=this;
  44998. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  44999. return $core.withContext(function($ctx1) {
  45000. //>>excludeEnd("ctx");
  45001. var $1;
  45002. $1=self._name();
  45003. return $1;
  45004. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  45005. }, function($ctx1) {$ctx1.fill(self,"alias",{},$globals.PseudoVar)});
  45006. //>>excludeEnd("ctx");
  45007. },
  45008. //>>excludeStart("ide", pragmas.excludeIdeData);
  45009. args: [],
  45010. source: "alias\x0a\x09^ self name",
  45011. referencedClasses: [],
  45012. //>>excludeEnd("ide");
  45013. messageSends: ["name"]
  45014. }),
  45015. $globals.PseudoVar);
  45016. $core.addMethod(
  45017. $core.method({
  45018. selector: "isImmutable",
  45019. protocol: 'testing',
  45020. fn: function (){
  45021. var self=this;
  45022. return true;
  45023. },
  45024. //>>excludeStart("ide", pragmas.excludeIdeData);
  45025. args: [],
  45026. source: "isImmutable\x0a\x09^ true",
  45027. referencedClasses: [],
  45028. //>>excludeEnd("ide");
  45029. messageSends: []
  45030. }),
  45031. $globals.PseudoVar);
  45032. $core.addMethod(
  45033. $core.method({
  45034. selector: "isPseudoVar",
  45035. protocol: 'testing',
  45036. fn: function (){
  45037. var self=this;
  45038. return true;
  45039. },
  45040. //>>excludeStart("ide", pragmas.excludeIdeData);
  45041. args: [],
  45042. source: "isPseudoVar\x0a\x09^ true",
  45043. referencedClasses: [],
  45044. //>>excludeEnd("ide");
  45045. messageSends: []
  45046. }),
  45047. $globals.PseudoVar);
  45048. $core.addClass('TempVar', $globals.ScopeVar, [], 'Compiler-Semantic');
  45049. //>>excludeStart("ide", pragmas.excludeIdeData);
  45050. $globals.TempVar.comment="I am an temporary variable of a method or block.";
  45051. //>>excludeEnd("ide");
  45052. $core.addMethod(
  45053. $core.method({
  45054. selector: "isTempVar",
  45055. protocol: 'testing',
  45056. fn: function (){
  45057. var self=this;
  45058. return true;
  45059. },
  45060. //>>excludeStart("ide", pragmas.excludeIdeData);
  45061. args: [],
  45062. source: "isTempVar\x0a\x09^ true",
  45063. referencedClasses: [],
  45064. //>>excludeEnd("ide");
  45065. messageSends: []
  45066. }),
  45067. $globals.TempVar);
  45068. $core.addClass('UnknownVar', $globals.ScopeVar, [], 'Compiler-Semantic');
  45069. //>>excludeStart("ide", pragmas.excludeIdeData);
  45070. $globals.UnknownVar.comment="I am an unknown variable. Amber uses unknown variables as JavaScript globals";
  45071. //>>excludeEnd("ide");
  45072. $core.addMethod(
  45073. $core.method({
  45074. selector: "isUnknownVar",
  45075. protocol: 'testing',
  45076. fn: function (){
  45077. var self=this;
  45078. return true;
  45079. },
  45080. //>>excludeStart("ide", pragmas.excludeIdeData);
  45081. args: [],
  45082. source: "isUnknownVar\x0a\x09^ true",
  45083. referencedClasses: [],
  45084. //>>excludeEnd("ide");
  45085. messageSends: []
  45086. }),
  45087. $globals.UnknownVar);
  45088. $core.addClass('SemanticAnalyzer', $globals.NodeVisitor, ['currentScope', 'blockIndex', 'theClass', 'classReferences', 'messageSends', 'superSends'], 'Compiler-Semantic');
  45089. //>>excludeStart("ide", pragmas.excludeIdeData);
  45090. $globals.SemanticAnalyzer.comment="I semantically analyze the abstract syntax tree and annotate it with informations such as non local returns and variable scopes.";
  45091. //>>excludeEnd("ide");
  45092. $core.addMethod(
  45093. $core.method({
  45094. selector: "classReferences",
  45095. protocol: 'accessing',
  45096. fn: function (){
  45097. var self=this;
  45098. function $Set(){return $globals.Set||(typeof Set=="undefined"?nil:Set)}
  45099. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  45100. return $core.withContext(function($ctx1) {
  45101. //>>excludeEnd("ctx");
  45102. var $2,$1,$receiver;
  45103. $2=self["@classReferences"];
  45104. if(($receiver = $2) == null || $receiver.isNil){
  45105. self["@classReferences"]=$recv($Set())._new();
  45106. $1=self["@classReferences"];
  45107. } else {
  45108. $1=$2;
  45109. };
  45110. return $1;
  45111. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  45112. }, function($ctx1) {$ctx1.fill(self,"classReferences",{},$globals.SemanticAnalyzer)});
  45113. //>>excludeEnd("ctx");
  45114. },
  45115. //>>excludeStart("ide", pragmas.excludeIdeData);
  45116. args: [],
  45117. source: "classReferences\x0a\x09^ classReferences ifNil: [ classReferences := Set new ]",
  45118. referencedClasses: ["Set"],
  45119. //>>excludeEnd("ide");
  45120. messageSends: ["ifNil:", "new"]
  45121. }),
  45122. $globals.SemanticAnalyzer);
  45123. $core.addMethod(
  45124. $core.method({
  45125. selector: "errorShadowingVariable:",
  45126. protocol: 'error handling',
  45127. fn: function (aString){
  45128. var self=this;
  45129. function $ShadowingVariableError(){return $globals.ShadowingVariableError||(typeof ShadowingVariableError=="undefined"?nil:ShadowingVariableError)}
  45130. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  45131. return $core.withContext(function($ctx1) {
  45132. //>>excludeEnd("ctx");
  45133. var $1,$2;
  45134. $1=$recv($ShadowingVariableError())._new();
  45135. $recv($1)._variableName_(aString);
  45136. $2=$recv($1)._signal();
  45137. return self;
  45138. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  45139. }, function($ctx1) {$ctx1.fill(self,"errorShadowingVariable:",{aString:aString},$globals.SemanticAnalyzer)});
  45140. //>>excludeEnd("ctx");
  45141. },
  45142. //>>excludeStart("ide", pragmas.excludeIdeData);
  45143. args: ["aString"],
  45144. source: "errorShadowingVariable: aString\x0a\x09ShadowingVariableError new\x0a\x09\x09variableName: aString;\x0a\x09\x09signal",
  45145. referencedClasses: ["ShadowingVariableError"],
  45146. //>>excludeEnd("ide");
  45147. messageSends: ["variableName:", "new", "signal"]
  45148. }),
  45149. $globals.SemanticAnalyzer);
  45150. $core.addMethod(
  45151. $core.method({
  45152. selector: "errorUnknownVariable:",
  45153. protocol: 'error handling',
  45154. fn: function (aNode){
  45155. var self=this;
  45156. var identifier;
  45157. function $Smalltalk(){return $globals.Smalltalk||(typeof Smalltalk=="undefined"?nil:Smalltalk)}
  45158. function $UnknownVariableError(){return $globals.UnknownVariableError||(typeof UnknownVariableError=="undefined"?nil:UnknownVariableError)}
  45159. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  45160. return $core.withContext(function($ctx1) {
  45161. //>>excludeEnd("ctx");
  45162. var $1,$2,$3,$4,$5;
  45163. identifier=$recv(aNode)._value();
  45164. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  45165. $ctx1.sendIdx["value"]=1;
  45166. //>>excludeEnd("ctx");
  45167. $1=$recv($recv($recv($recv($Smalltalk())._globalJsVariables())._includes_(identifier))._not())._and_((function(){
  45168. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  45169. return $core.withContext(function($ctx2) {
  45170. //>>excludeEnd("ctx");
  45171. return self._isVariableGloballyUndefined_(identifier);
  45172. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  45173. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  45174. //>>excludeEnd("ctx");
  45175. }));
  45176. if($core.assert($1)){
  45177. $2=$recv($UnknownVariableError())._new();
  45178. $3=$2;
  45179. $4=$recv(aNode)._value();
  45180. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  45181. $ctx1.sendIdx["value"]=2;
  45182. //>>excludeEnd("ctx");
  45183. $recv($3)._variableName_($4);
  45184. $5=$recv($2)._signal();
  45185. $5;
  45186. } else {
  45187. $recv($recv($recv(self["@currentScope"])._methodScope())._unknownVariables())._add_($recv(aNode)._value());
  45188. };
  45189. return self;
  45190. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  45191. }, function($ctx1) {$ctx1.fill(self,"errorUnknownVariable:",{aNode:aNode,identifier:identifier},$globals.SemanticAnalyzer)});
  45192. //>>excludeEnd("ctx");
  45193. },
  45194. //>>excludeStart("ide", pragmas.excludeIdeData);
  45195. args: ["aNode"],
  45196. source: "errorUnknownVariable: aNode\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: `jQuery`, `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| identifier |\x0a\x09identifier := aNode value.\x0a\x09\x0a\x09((Smalltalk globalJsVariables includes: identifier) not\x0a\x09\x09and: [ self isVariableGloballyUndefined: identifier ])\x0a\x09\x09\x09ifTrue: [\x0a\x09\x09\x09\x09UnknownVariableError new\x0a\x09\x09\x09\x09\x09variableName: aNode value;\x0a\x09\x09\x09\x09\x09signal ]\x0a\x09\x09\x09ifFalse: [\x0a\x09\x09\x09\x09currentScope methodScope unknownVariables add: aNode value ]",
  45197. referencedClasses: ["Smalltalk", "UnknownVariableError"],
  45198. //>>excludeEnd("ide");
  45199. messageSends: ["value", "ifTrue:ifFalse:", "and:", "not", "includes:", "globalJsVariables", "isVariableGloballyUndefined:", "variableName:", "new", "signal", "add:", "unknownVariables", "methodScope"]
  45200. }),
  45201. $globals.SemanticAnalyzer);
  45202. $core.addMethod(
  45203. $core.method({
  45204. selector: "isVariableGloballyUndefined:",
  45205. protocol: 'testing',
  45206. fn: function (aString){
  45207. var self=this;
  45208. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  45209. return $core.withContext(function($ctx1) {
  45210. //>>excludeEnd("ctx");
  45211. return eval('typeof ' + aString + ' == "undefined"');
  45212. return self;
  45213. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  45214. }, function($ctx1) {$ctx1.fill(self,"isVariableGloballyUndefined:",{aString:aString},$globals.SemanticAnalyzer)});
  45215. //>>excludeEnd("ctx");
  45216. },
  45217. //>>excludeStart("ide", pragmas.excludeIdeData);
  45218. args: ["aString"],
  45219. source: "isVariableGloballyUndefined: aString\x0a\x09<return eval('typeof ' + aString + ' == \x22undefined\x22')>",
  45220. referencedClasses: [],
  45221. //>>excludeEnd("ide");
  45222. messageSends: []
  45223. }),
  45224. $globals.SemanticAnalyzer);
  45225. $core.addMethod(
  45226. $core.method({
  45227. selector: "messageSends",
  45228. protocol: 'accessing',
  45229. fn: function (){
  45230. var self=this;
  45231. function $Dictionary(){return $globals.Dictionary||(typeof Dictionary=="undefined"?nil:Dictionary)}
  45232. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  45233. return $core.withContext(function($ctx1) {
  45234. //>>excludeEnd("ctx");
  45235. var $2,$1,$receiver;
  45236. $2=self["@messageSends"];
  45237. if(($receiver = $2) == null || $receiver.isNil){
  45238. self["@messageSends"]=$recv($Dictionary())._new();
  45239. $1=self["@messageSends"];
  45240. } else {
  45241. $1=$2;
  45242. };
  45243. return $1;
  45244. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  45245. }, function($ctx1) {$ctx1.fill(self,"messageSends",{},$globals.SemanticAnalyzer)});
  45246. //>>excludeEnd("ctx");
  45247. },
  45248. //>>excludeStart("ide", pragmas.excludeIdeData);
  45249. args: [],
  45250. source: "messageSends\x0a\x09^ messageSends ifNil: [ messageSends := Dictionary new ]",
  45251. referencedClasses: ["Dictionary"],
  45252. //>>excludeEnd("ide");
  45253. messageSends: ["ifNil:", "new"]
  45254. }),
  45255. $globals.SemanticAnalyzer);
  45256. $core.addMethod(
  45257. $core.method({
  45258. selector: "newBlockScope",
  45259. protocol: 'factory',
  45260. fn: function (){
  45261. var self=this;
  45262. function $LexicalScope(){return $globals.LexicalScope||(typeof LexicalScope=="undefined"?nil:LexicalScope)}
  45263. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  45264. return $core.withContext(function($ctx1) {
  45265. //>>excludeEnd("ctx");
  45266. var $1;
  45267. $1=self._newScopeOfClass_($LexicalScope());
  45268. return $1;
  45269. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  45270. }, function($ctx1) {$ctx1.fill(self,"newBlockScope",{},$globals.SemanticAnalyzer)});
  45271. //>>excludeEnd("ctx");
  45272. },
  45273. //>>excludeStart("ide", pragmas.excludeIdeData);
  45274. args: [],
  45275. source: "newBlockScope\x0a\x09^ self newScopeOfClass: LexicalScope",
  45276. referencedClasses: ["LexicalScope"],
  45277. //>>excludeEnd("ide");
  45278. messageSends: ["newScopeOfClass:"]
  45279. }),
  45280. $globals.SemanticAnalyzer);
  45281. $core.addMethod(
  45282. $core.method({
  45283. selector: "newMethodScope",
  45284. protocol: 'factory',
  45285. fn: function (){
  45286. var self=this;
  45287. function $MethodLexicalScope(){return $globals.MethodLexicalScope||(typeof MethodLexicalScope=="undefined"?nil:MethodLexicalScope)}
  45288. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  45289. return $core.withContext(function($ctx1) {
  45290. //>>excludeEnd("ctx");
  45291. var $1;
  45292. $1=self._newScopeOfClass_($MethodLexicalScope());
  45293. return $1;
  45294. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  45295. }, function($ctx1) {$ctx1.fill(self,"newMethodScope",{},$globals.SemanticAnalyzer)});
  45296. //>>excludeEnd("ctx");
  45297. },
  45298. //>>excludeStart("ide", pragmas.excludeIdeData);
  45299. args: [],
  45300. source: "newMethodScope\x0a\x09^ self newScopeOfClass: MethodLexicalScope",
  45301. referencedClasses: ["MethodLexicalScope"],
  45302. //>>excludeEnd("ide");
  45303. messageSends: ["newScopeOfClass:"]
  45304. }),
  45305. $globals.SemanticAnalyzer);
  45306. $core.addMethod(
  45307. $core.method({
  45308. selector: "newScopeOfClass:",
  45309. protocol: 'factory',
  45310. fn: function (aLexicalScopeClass){
  45311. var self=this;
  45312. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  45313. return $core.withContext(function($ctx1) {
  45314. //>>excludeEnd("ctx");
  45315. var $2,$3,$1;
  45316. $2=$recv(aLexicalScopeClass)._new();
  45317. $recv($2)._outerScope_(self["@currentScope"]);
  45318. $3=$recv($2)._yourself();
  45319. $1=$3;
  45320. return $1;
  45321. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  45322. }, function($ctx1) {$ctx1.fill(self,"newScopeOfClass:",{aLexicalScopeClass:aLexicalScopeClass},$globals.SemanticAnalyzer)});
  45323. //>>excludeEnd("ctx");
  45324. },
  45325. //>>excludeStart("ide", pragmas.excludeIdeData);
  45326. args: ["aLexicalScopeClass"],
  45327. source: "newScopeOfClass: aLexicalScopeClass\x0a\x09^ aLexicalScopeClass new\x0a\x09\x09outerScope: currentScope;\x0a\x09\x09yourself",
  45328. referencedClasses: [],
  45329. //>>excludeEnd("ide");
  45330. messageSends: ["outerScope:", "new", "yourself"]
  45331. }),
  45332. $globals.SemanticAnalyzer);
  45333. $core.addMethod(
  45334. $core.method({
  45335. selector: "nextBlockIndex",
  45336. protocol: 'private',
  45337. fn: function (){
  45338. var self=this;
  45339. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  45340. return $core.withContext(function($ctx1) {
  45341. //>>excludeEnd("ctx");
  45342. var $1,$2,$receiver;
  45343. $1=self["@blockIndex"];
  45344. if(($receiver = $1) == null || $receiver.isNil){
  45345. self["@blockIndex"]=(0);
  45346. self["@blockIndex"];
  45347. } else {
  45348. $1;
  45349. };
  45350. self["@blockIndex"]=$recv(self["@blockIndex"]).__plus((1));
  45351. $2=self["@blockIndex"];
  45352. return $2;
  45353. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  45354. }, function($ctx1) {$ctx1.fill(self,"nextBlockIndex",{},$globals.SemanticAnalyzer)});
  45355. //>>excludeEnd("ctx");
  45356. },
  45357. //>>excludeStart("ide", pragmas.excludeIdeData);
  45358. args: [],
  45359. source: "nextBlockIndex\x0a\x09blockIndex ifNil: [ blockIndex := 0 ].\x0a\x09\x0a\x09blockIndex := blockIndex + 1.\x0a\x09^ blockIndex",
  45360. referencedClasses: [],
  45361. //>>excludeEnd("ide");
  45362. messageSends: ["ifNil:", "+"]
  45363. }),
  45364. $globals.SemanticAnalyzer);
  45365. $core.addMethod(
  45366. $core.method({
  45367. selector: "popScope",
  45368. protocol: 'scope',
  45369. fn: function (){
  45370. var self=this;
  45371. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  45372. return $core.withContext(function($ctx1) {
  45373. //>>excludeEnd("ctx");
  45374. var $1,$receiver;
  45375. $1=self["@currentScope"];
  45376. if(($receiver = $1) == null || $receiver.isNil){
  45377. $1;
  45378. } else {
  45379. self["@currentScope"]=$recv(self["@currentScope"])._outerScope();
  45380. self["@currentScope"];
  45381. };
  45382. return self;
  45383. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  45384. }, function($ctx1) {$ctx1.fill(self,"popScope",{},$globals.SemanticAnalyzer)});
  45385. //>>excludeEnd("ctx");
  45386. },
  45387. //>>excludeStart("ide", pragmas.excludeIdeData);
  45388. args: [],
  45389. source: "popScope\x0a\x09currentScope ifNotNil: [\x0a\x09\x09currentScope := currentScope outerScope ]",
  45390. referencedClasses: [],
  45391. //>>excludeEnd("ide");
  45392. messageSends: ["ifNotNil:", "outerScope"]
  45393. }),
  45394. $globals.SemanticAnalyzer);
  45395. $core.addMethod(
  45396. $core.method({
  45397. selector: "pushScope:",
  45398. protocol: 'scope',
  45399. fn: function (aScope){
  45400. var self=this;
  45401. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  45402. return $core.withContext(function($ctx1) {
  45403. //>>excludeEnd("ctx");
  45404. $recv(aScope)._outerScope_(self["@currentScope"]);
  45405. self["@currentScope"]=aScope;
  45406. return self;
  45407. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  45408. }, function($ctx1) {$ctx1.fill(self,"pushScope:",{aScope:aScope},$globals.SemanticAnalyzer)});
  45409. //>>excludeEnd("ctx");
  45410. },
  45411. //>>excludeStart("ide", pragmas.excludeIdeData);
  45412. args: ["aScope"],
  45413. source: "pushScope: aScope\x0a\x09aScope outerScope: currentScope.\x0a\x09currentScope := aScope",
  45414. referencedClasses: [],
  45415. //>>excludeEnd("ide");
  45416. messageSends: ["outerScope:"]
  45417. }),
  45418. $globals.SemanticAnalyzer);
  45419. $core.addMethod(
  45420. $core.method({
  45421. selector: "superSends",
  45422. protocol: 'accessing',
  45423. fn: function (){
  45424. var self=this;
  45425. function $Dictionary(){return $globals.Dictionary||(typeof Dictionary=="undefined"?nil:Dictionary)}
  45426. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  45427. return $core.withContext(function($ctx1) {
  45428. //>>excludeEnd("ctx");
  45429. var $2,$1,$receiver;
  45430. $2=self["@superSends"];
  45431. if(($receiver = $2) == null || $receiver.isNil){
  45432. self["@superSends"]=$recv($Dictionary())._new();
  45433. $1=self["@superSends"];
  45434. } else {
  45435. $1=$2;
  45436. };
  45437. return $1;
  45438. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  45439. }, function($ctx1) {$ctx1.fill(self,"superSends",{},$globals.SemanticAnalyzer)});
  45440. //>>excludeEnd("ctx");
  45441. },
  45442. //>>excludeStart("ide", pragmas.excludeIdeData);
  45443. args: [],
  45444. source: "superSends\x0a\x09^ superSends ifNil: [ superSends := Dictionary new ]",
  45445. referencedClasses: ["Dictionary"],
  45446. //>>excludeEnd("ide");
  45447. messageSends: ["ifNil:", "new"]
  45448. }),
  45449. $globals.SemanticAnalyzer);
  45450. $core.addMethod(
  45451. $core.method({
  45452. selector: "theClass",
  45453. protocol: 'accessing',
  45454. fn: function (){
  45455. var self=this;
  45456. var $1;
  45457. $1=self["@theClass"];
  45458. return $1;
  45459. },
  45460. //>>excludeStart("ide", pragmas.excludeIdeData);
  45461. args: [],
  45462. source: "theClass\x0a\x09^ theClass",
  45463. referencedClasses: [],
  45464. //>>excludeEnd("ide");
  45465. messageSends: []
  45466. }),
  45467. $globals.SemanticAnalyzer);
  45468. $core.addMethod(
  45469. $core.method({
  45470. selector: "theClass:",
  45471. protocol: 'accessing',
  45472. fn: function (aClass){
  45473. var self=this;
  45474. self["@theClass"]=aClass;
  45475. return self;
  45476. },
  45477. //>>excludeStart("ide", pragmas.excludeIdeData);
  45478. args: ["aClass"],
  45479. source: "theClass: aClass\x0a\x09theClass := aClass",
  45480. referencedClasses: [],
  45481. //>>excludeEnd("ide");
  45482. messageSends: []
  45483. }),
  45484. $globals.SemanticAnalyzer);
  45485. $core.addMethod(
  45486. $core.method({
  45487. selector: "validateVariableScope:",
  45488. protocol: 'scope',
  45489. fn: function (aString){
  45490. var self=this;
  45491. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  45492. return $core.withContext(function($ctx1) {
  45493. //>>excludeEnd("ctx");
  45494. var $1,$receiver;
  45495. $1=$recv(self["@currentScope"])._lookupVariable_(aString);
  45496. if(($receiver = $1) == null || $receiver.isNil){
  45497. $1;
  45498. } else {
  45499. self._errorShadowingVariable_(aString);
  45500. };
  45501. return self;
  45502. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  45503. }, function($ctx1) {$ctx1.fill(self,"validateVariableScope:",{aString:aString},$globals.SemanticAnalyzer)});
  45504. //>>excludeEnd("ctx");
  45505. },
  45506. //>>excludeStart("ide", pragmas.excludeIdeData);
  45507. args: ["aString"],
  45508. 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 ]",
  45509. referencedClasses: [],
  45510. //>>excludeEnd("ide");
  45511. messageSends: ["ifNotNil:", "lookupVariable:", "errorShadowingVariable:"]
  45512. }),
  45513. $globals.SemanticAnalyzer);
  45514. $core.addMethod(
  45515. $core.method({
  45516. selector: "visitAssignmentNode:",
  45517. protocol: 'visiting',
  45518. fn: function (aNode){
  45519. var self=this;
  45520. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  45521. return $core.withContext(function($ctx1) {
  45522. //>>excludeEnd("ctx");
  45523. (
  45524. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  45525. $ctx1.supercall = true,
  45526. //>>excludeEnd("ctx");
  45527. $globals.SemanticAnalyzer.superclass.fn.prototype._visitAssignmentNode_.apply($recv(self), [aNode]));
  45528. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  45529. $ctx1.supercall = false;
  45530. //>>excludeEnd("ctx");;
  45531. $recv($recv(aNode)._left())._beAssigned();
  45532. return self;
  45533. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  45534. }, function($ctx1) {$ctx1.fill(self,"visitAssignmentNode:",{aNode:aNode},$globals.SemanticAnalyzer)});
  45535. //>>excludeEnd("ctx");
  45536. },
  45537. //>>excludeStart("ide", pragmas.excludeIdeData);
  45538. args: ["aNode"],
  45539. source: "visitAssignmentNode: aNode\x0a\x09super visitAssignmentNode: aNode.\x0a\x09aNode left beAssigned",
  45540. referencedClasses: [],
  45541. //>>excludeEnd("ide");
  45542. messageSends: ["visitAssignmentNode:", "beAssigned", "left"]
  45543. }),
  45544. $globals.SemanticAnalyzer);
  45545. $core.addMethod(
  45546. $core.method({
  45547. selector: "visitBlockNode:",
  45548. protocol: 'visiting',
  45549. fn: function (aNode){
  45550. var self=this;
  45551. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  45552. return $core.withContext(function($ctx1) {
  45553. //>>excludeEnd("ctx");
  45554. self._pushScope_(self._newBlockScope());
  45555. $recv(aNode)._scope_(self["@currentScope"]);
  45556. $recv(self["@currentScope"])._node_(aNode);
  45557. $recv(self["@currentScope"])._blockIndex_(self._nextBlockIndex());
  45558. $recv($recv(aNode)._parameters())._do_((function(each){
  45559. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  45560. return $core.withContext(function($ctx2) {
  45561. //>>excludeEnd("ctx");
  45562. self._validateVariableScope_(each);
  45563. return $recv(self["@currentScope"])._addArg_(each);
  45564. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  45565. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  45566. //>>excludeEnd("ctx");
  45567. }));
  45568. (
  45569. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  45570. $ctx1.supercall = true,
  45571. //>>excludeEnd("ctx");
  45572. $globals.SemanticAnalyzer.superclass.fn.prototype._visitBlockNode_.apply($recv(self), [aNode]));
  45573. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  45574. $ctx1.supercall = false;
  45575. //>>excludeEnd("ctx");;
  45576. self._popScope();
  45577. return self;
  45578. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  45579. }, function($ctx1) {$ctx1.fill(self,"visitBlockNode:",{aNode:aNode},$globals.SemanticAnalyzer)});
  45580. //>>excludeEnd("ctx");
  45581. },
  45582. //>>excludeStart("ide", pragmas.excludeIdeData);
  45583. args: ["aNode"],
  45584. 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",
  45585. referencedClasses: [],
  45586. //>>excludeEnd("ide");
  45587. messageSends: ["pushScope:", "newBlockScope", "scope:", "node:", "blockIndex:", "nextBlockIndex", "do:", "parameters", "validateVariableScope:", "addArg:", "visitBlockNode:", "popScope"]
  45588. }),
  45589. $globals.SemanticAnalyzer);
  45590. $core.addMethod(
  45591. $core.method({
  45592. selector: "visitCascadeNode:",
  45593. protocol: 'visiting',
  45594. fn: function (aNode){
  45595. var self=this;
  45596. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  45597. return $core.withContext(function($ctx1) {
  45598. //>>excludeEnd("ctx");
  45599. var $3,$2,$1;
  45600. (
  45601. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  45602. $ctx1.supercall = true,
  45603. //>>excludeEnd("ctx");
  45604. $globals.SemanticAnalyzer.superclass.fn.prototype._visitCascadeNode_.apply($recv(self), [aNode]));
  45605. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  45606. $ctx1.supercall = false;
  45607. //>>excludeEnd("ctx");;
  45608. $3=$recv(aNode)._nodes();
  45609. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  45610. $ctx1.sendIdx["nodes"]=1;
  45611. //>>excludeEnd("ctx");
  45612. $2=$recv($3)._first();
  45613. $1=$recv($2)._superSend();
  45614. if($core.assert($1)){
  45615. $recv($recv(aNode)._nodes())._do_((function(each){
  45616. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  45617. return $core.withContext(function($ctx2) {
  45618. //>>excludeEnd("ctx");
  45619. return $recv(each)._superSend_(true);
  45620. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  45621. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,2)});
  45622. //>>excludeEnd("ctx");
  45623. }));
  45624. };
  45625. return self;
  45626. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  45627. }, function($ctx1) {$ctx1.fill(self,"visitCascadeNode:",{aNode:aNode},$globals.SemanticAnalyzer)});
  45628. //>>excludeEnd("ctx");
  45629. },
  45630. //>>excludeStart("ide", pragmas.excludeIdeData);
  45631. args: ["aNode"],
  45632. source: "visitCascadeNode: aNode\x0a\x09super visitCascadeNode: aNode.\x0a\x09aNode nodes first superSend ifTrue: [\x0a\x09\x09aNode nodes do: [ :each | each superSend: true ] ]",
  45633. referencedClasses: [],
  45634. //>>excludeEnd("ide");
  45635. messageSends: ["visitCascadeNode:", "ifTrue:", "superSend", "first", "nodes", "do:", "superSend:"]
  45636. }),
  45637. $globals.SemanticAnalyzer);
  45638. $core.addMethod(
  45639. $core.method({
  45640. selector: "visitMethodNode:",
  45641. protocol: 'visiting',
  45642. fn: function (aNode){
  45643. var self=this;
  45644. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  45645. return $core.withContext(function($ctx1) {
  45646. //>>excludeEnd("ctx");
  45647. var $1;
  45648. self._pushScope_(self._newMethodScope());
  45649. $recv(aNode)._scope_(self["@currentScope"]);
  45650. $recv(self["@currentScope"])._node_(aNode);
  45651. $recv($recv(self._theClass())._allInstanceVariableNames())._do_((function(each){
  45652. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  45653. return $core.withContext(function($ctx2) {
  45654. //>>excludeEnd("ctx");
  45655. return $recv(self["@currentScope"])._addIVar_(each);
  45656. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  45657. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  45658. //>>excludeEnd("ctx");
  45659. }));
  45660. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  45661. $ctx1.sendIdx["do:"]=1;
  45662. //>>excludeEnd("ctx");
  45663. $recv($recv(aNode)._arguments())._do_((function(each){
  45664. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  45665. return $core.withContext(function($ctx2) {
  45666. //>>excludeEnd("ctx");
  45667. self._validateVariableScope_(each);
  45668. return $recv(self["@currentScope"])._addArg_(each);
  45669. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  45670. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,2)});
  45671. //>>excludeEnd("ctx");
  45672. }));
  45673. (
  45674. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  45675. $ctx1.supercall = true,
  45676. //>>excludeEnd("ctx");
  45677. $globals.SemanticAnalyzer.superclass.fn.prototype._visitMethodNode_.apply($recv(self), [aNode]));
  45678. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  45679. $ctx1.supercall = false;
  45680. //>>excludeEnd("ctx");;
  45681. $recv(aNode)._classReferences_(self._classReferences());
  45682. $recv(aNode)._sendIndexes_(self._messageSends());
  45683. $1=$recv(aNode)._superSends_($recv(self._superSends())._keys());
  45684. self._popScope();
  45685. return self;
  45686. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  45687. }, function($ctx1) {$ctx1.fill(self,"visitMethodNode:",{aNode:aNode},$globals.SemanticAnalyzer)});
  45688. //>>excludeEnd("ctx");
  45689. },
  45690. //>>excludeStart("ide", pragmas.excludeIdeData);
  45691. args: ["aNode"],
  45692. source: "visitMethodNode: aNode\x0a\x09self pushScope: self newMethodScope.\x0a\x09aNode scope: currentScope.\x0a\x09currentScope node: aNode.\x0a\x0a\x09self theClass allInstanceVariableNames do: [ :each |\x0a\x09\x09currentScope addIVar: 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\x09\x09superSends: self superSends keys.\x0a\x09self popScope",
  45693. referencedClasses: [],
  45694. //>>excludeEnd("ide");
  45695. messageSends: ["pushScope:", "newMethodScope", "scope:", "node:", "do:", "allInstanceVariableNames", "theClass", "addIVar:", "arguments", "validateVariableScope:", "addArg:", "visitMethodNode:", "classReferences:", "classReferences", "sendIndexes:", "messageSends", "superSends:", "keys", "superSends", "popScope"]
  45696. }),
  45697. $globals.SemanticAnalyzer);
  45698. $core.addMethod(
  45699. $core.method({
  45700. selector: "visitReturnNode:",
  45701. protocol: 'visiting',
  45702. fn: function (aNode){
  45703. var self=this;
  45704. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  45705. return $core.withContext(function($ctx1) {
  45706. //>>excludeEnd("ctx");
  45707. var $1;
  45708. $recv(aNode)._scope_(self["@currentScope"]);
  45709. $1=$recv(self["@currentScope"])._isMethodScope();
  45710. if($core.assert($1)){
  45711. $recv(self["@currentScope"])._localReturn_(true);
  45712. } else {
  45713. $recv($recv(self["@currentScope"])._methodScope())._addNonLocalReturn_(self["@currentScope"]);
  45714. };
  45715. (
  45716. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  45717. $ctx1.supercall = true,
  45718. //>>excludeEnd("ctx");
  45719. $globals.SemanticAnalyzer.superclass.fn.prototype._visitReturnNode_.apply($recv(self), [aNode]));
  45720. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  45721. $ctx1.supercall = false;
  45722. //>>excludeEnd("ctx");;
  45723. return self;
  45724. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  45725. }, function($ctx1) {$ctx1.fill(self,"visitReturnNode:",{aNode:aNode},$globals.SemanticAnalyzer)});
  45726. //>>excludeEnd("ctx");
  45727. },
  45728. //>>excludeStart("ide", pragmas.excludeIdeData);
  45729. args: ["aNode"],
  45730. 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",
  45731. referencedClasses: [],
  45732. //>>excludeEnd("ide");
  45733. messageSends: ["scope:", "ifTrue:ifFalse:", "isMethodScope", "localReturn:", "addNonLocalReturn:", "methodScope", "visitReturnNode:"]
  45734. }),
  45735. $globals.SemanticAnalyzer);
  45736. $core.addMethod(
  45737. $core.method({
  45738. selector: "visitSendNode:",
  45739. protocol: 'visiting',
  45740. fn: function (aNode){
  45741. var self=this;
  45742. function $Set(){return $globals.Set||(typeof Set=="undefined"?nil:Set)}
  45743. function $IRSendInliner(){return $globals.IRSendInliner||(typeof IRSendInliner=="undefined"?nil:IRSendInliner)}
  45744. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  45745. return $core.withContext(function($ctx1) {
  45746. //>>excludeEnd("ctx");
  45747. var $3,$2,$1,$4,$5,$6,$8,$9,$7,$11,$12,$10,$13,$14,$15,$17,$18,$16,$receiver;
  45748. $3=$recv(aNode)._receiver();
  45749. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  45750. $ctx1.sendIdx["receiver"]=1;
  45751. //>>excludeEnd("ctx");
  45752. $2=$recv($3)._value();
  45753. $1=$recv($2).__eq("super");
  45754. if($core.assert($1)){
  45755. $recv(aNode)._superSend_(true);
  45756. $4=$recv(aNode)._receiver();
  45757. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  45758. $ctx1.sendIdx["receiver"]=2;
  45759. //>>excludeEnd("ctx");
  45760. $recv($4)._value_("self");
  45761. $5=self._superSends();
  45762. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  45763. $ctx1.sendIdx["superSends"]=1;
  45764. //>>excludeEnd("ctx");
  45765. $6=$recv(aNode)._selector();
  45766. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  45767. $ctx1.sendIdx["selector"]=1;
  45768. //>>excludeEnd("ctx");
  45769. $recv($5)._at_ifAbsentPut_($6,(function(){
  45770. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  45771. return $core.withContext(function($ctx2) {
  45772. //>>excludeEnd("ctx");
  45773. return $recv($Set())._new();
  45774. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  45775. $ctx2.sendIdx["new"]=1;
  45776. //>>excludeEnd("ctx");
  45777. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  45778. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
  45779. //>>excludeEnd("ctx");
  45780. }));
  45781. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  45782. $ctx1.sendIdx["at:ifAbsentPut:"]=1;
  45783. //>>excludeEnd("ctx");
  45784. $8=self._superSends();
  45785. $9=$recv(aNode)._selector();
  45786. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  45787. $ctx1.sendIdx["selector"]=2;
  45788. //>>excludeEnd("ctx");
  45789. $7=$recv($8)._at_($9);
  45790. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  45791. $ctx1.sendIdx["at:"]=1;
  45792. //>>excludeEnd("ctx");
  45793. $recv($7)._add_(aNode);
  45794. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  45795. $ctx1.sendIdx["add:"]=1;
  45796. //>>excludeEnd("ctx");
  45797. } else {
  45798. $11=$recv($IRSendInliner())._inlinedSelectors();
  45799. $12=$recv(aNode)._selector();
  45800. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  45801. $ctx1.sendIdx["selector"]=3;
  45802. //>>excludeEnd("ctx");
  45803. $10=$recv($11)._includes_($12);
  45804. if($core.assert($10)){
  45805. $recv(aNode)._shouldBeInlined_(true);
  45806. $13=$recv(aNode)._receiver();
  45807. if(($receiver = $13) == null || $receiver.isNil){
  45808. $13;
  45809. } else {
  45810. var receiver;
  45811. receiver=$receiver;
  45812. $recv(receiver)._shouldBeAliased_(true);
  45813. };
  45814. };
  45815. };
  45816. $14=self._messageSends();
  45817. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  45818. $ctx1.sendIdx["messageSends"]=1;
  45819. //>>excludeEnd("ctx");
  45820. $15=$recv(aNode)._selector();
  45821. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  45822. $ctx1.sendIdx["selector"]=4;
  45823. //>>excludeEnd("ctx");
  45824. $recv($14)._at_ifAbsentPut_($15,(function(){
  45825. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  45826. return $core.withContext(function($ctx2) {
  45827. //>>excludeEnd("ctx");
  45828. return $recv($Set())._new();
  45829. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  45830. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,6)});
  45831. //>>excludeEnd("ctx");
  45832. }));
  45833. $17=self._messageSends();
  45834. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  45835. $ctx1.sendIdx["messageSends"]=2;
  45836. //>>excludeEnd("ctx");
  45837. $18=$recv(aNode)._selector();
  45838. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  45839. $ctx1.sendIdx["selector"]=5;
  45840. //>>excludeEnd("ctx");
  45841. $16=$recv($17)._at_($18);
  45842. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  45843. $ctx1.sendIdx["at:"]=2;
  45844. //>>excludeEnd("ctx");
  45845. $recv($16)._add_(aNode);
  45846. $recv(aNode)._index_($recv($recv(self._messageSends())._at_($recv(aNode)._selector()))._size());
  45847. (
  45848. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  45849. $ctx1.supercall = true,
  45850. //>>excludeEnd("ctx");
  45851. $globals.SemanticAnalyzer.superclass.fn.prototype._visitSendNode_.apply($recv(self), [aNode]));
  45852. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  45853. $ctx1.supercall = false;
  45854. //>>excludeEnd("ctx");;
  45855. return self;
  45856. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  45857. }, function($ctx1) {$ctx1.fill(self,"visitSendNode:",{aNode:aNode},$globals.SemanticAnalyzer)});
  45858. //>>excludeEnd("ctx");
  45859. },
  45860. //>>excludeStart("ide", pragmas.excludeIdeData);
  45861. args: ["aNode"],
  45862. source: "visitSendNode: aNode\x0a\x0a\x09aNode receiver value = 'super'\x0a\x09\x09ifTrue: [\x0a\x09\x09\x09aNode superSend: true.\x0a\x09\x09\x09aNode receiver value: 'self'.\x0a\x09\x09\x09self superSends at: aNode selector ifAbsentPut: [ Set new ].\x0a\x09\x09\x09(self superSends at: aNode selector) add: aNode ]\x0a\x09\x09\x0a\x09\x09ifFalse: [ (IRSendInliner inlinedSelectors includes: aNode selector) ifTrue: [\x0a\x09\x09\x09aNode shouldBeInlined: true.\x0a\x09\x09\x09aNode receiver ifNotNil: [ :receiver |\x0a\x09\x09\x09\x09receiver shouldBeAliased: true ] ] ].\x0a\x0a\x09self messageSends at: aNode selector ifAbsentPut: [ Set new ].\x0a\x09(self messageSends at: aNode selector) add: aNode.\x0a\x0a\x09aNode index: (self messageSends at: aNode selector) size.\x0a\x0a\x09super visitSendNode: aNode",
  45863. referencedClasses: ["Set", "IRSendInliner"],
  45864. //>>excludeEnd("ide");
  45865. messageSends: ["ifTrue:ifFalse:", "=", "value", "receiver", "superSend:", "value:", "at:ifAbsentPut:", "superSends", "selector", "new", "add:", "at:", "ifTrue:", "includes:", "inlinedSelectors", "shouldBeInlined:", "ifNotNil:", "shouldBeAliased:", "messageSends", "index:", "size", "visitSendNode:"]
  45866. }),
  45867. $globals.SemanticAnalyzer);
  45868. $core.addMethod(
  45869. $core.method({
  45870. selector: "visitSequenceNode:",
  45871. protocol: 'visiting',
  45872. fn: function (aNode){
  45873. var self=this;
  45874. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  45875. return $core.withContext(function($ctx1) {
  45876. //>>excludeEnd("ctx");
  45877. $recv($recv(aNode)._temps())._do_((function(each){
  45878. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  45879. return $core.withContext(function($ctx2) {
  45880. //>>excludeEnd("ctx");
  45881. self._validateVariableScope_(each);
  45882. return $recv(self["@currentScope"])._addTemp_(each);
  45883. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  45884. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  45885. //>>excludeEnd("ctx");
  45886. }));
  45887. (
  45888. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  45889. $ctx1.supercall = true,
  45890. //>>excludeEnd("ctx");
  45891. $globals.SemanticAnalyzer.superclass.fn.prototype._visitSequenceNode_.apply($recv(self), [aNode]));
  45892. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  45893. $ctx1.supercall = false;
  45894. //>>excludeEnd("ctx");;
  45895. return self;
  45896. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  45897. }, function($ctx1) {$ctx1.fill(self,"visitSequenceNode:",{aNode:aNode},$globals.SemanticAnalyzer)});
  45898. //>>excludeEnd("ctx");
  45899. },
  45900. //>>excludeStart("ide", pragmas.excludeIdeData);
  45901. args: ["aNode"],
  45902. source: "visitSequenceNode: aNode\x0a\x09aNode temps do: [ :each |\x0a\x09\x09self validateVariableScope: each.\x0a\x09\x09currentScope addTemp: each ].\x0a\x0a\x09super visitSequenceNode: aNode",
  45903. referencedClasses: [],
  45904. //>>excludeEnd("ide");
  45905. messageSends: ["do:", "temps", "validateVariableScope:", "addTemp:", "visitSequenceNode:"]
  45906. }),
  45907. $globals.SemanticAnalyzer);
  45908. $core.addMethod(
  45909. $core.method({
  45910. selector: "visitVariableNode:",
  45911. protocol: 'visiting',
  45912. fn: function (aNode){
  45913. var self=this;
  45914. var binding;
  45915. function $ClassRefVar(){return $globals.ClassRefVar||(typeof ClassRefVar=="undefined"?nil:ClassRefVar)}
  45916. function $UnknownVar(){return $globals.UnknownVar||(typeof UnknownVar=="undefined"?nil:UnknownVar)}
  45917. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  45918. return $core.withContext(function($ctx1) {
  45919. //>>excludeEnd("ctx");
  45920. var $1,$3,$2,$4,$5,$6,$7,$8,$9,$10,$11,$receiver;
  45921. binding=$recv(self["@currentScope"])._lookupVariable_(aNode);
  45922. $1=binding;
  45923. if(($receiver = $1) == null || $receiver.isNil){
  45924. $3=$recv(aNode)._value();
  45925. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  45926. $ctx1.sendIdx["value"]=1;
  45927. //>>excludeEnd("ctx");
  45928. $2=$recv($3)._isCapitalized();
  45929. if($core.assert($2)){
  45930. $4=$recv($ClassRefVar())._new();
  45931. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  45932. $ctx1.sendIdx["new"]=1;
  45933. //>>excludeEnd("ctx");
  45934. $5=$4;
  45935. $6=$recv(aNode)._value();
  45936. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  45937. $ctx1.sendIdx["value"]=2;
  45938. //>>excludeEnd("ctx");
  45939. $recv($5)._name_($6);
  45940. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  45941. $ctx1.sendIdx["name:"]=1;
  45942. //>>excludeEnd("ctx");
  45943. $7=$recv($4)._yourself();
  45944. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  45945. $ctx1.sendIdx["yourself"]=1;
  45946. //>>excludeEnd("ctx");
  45947. binding=$7;
  45948. binding;
  45949. $8=self._classReferences();
  45950. $9=$recv(aNode)._value();
  45951. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  45952. $ctx1.sendIdx["value"]=3;
  45953. //>>excludeEnd("ctx");
  45954. $recv($8)._add_($9);
  45955. } else {
  45956. self._errorUnknownVariable_(aNode);
  45957. $10=$recv($UnknownVar())._new();
  45958. $recv($10)._name_($recv(aNode)._value());
  45959. $11=$recv($10)._yourself();
  45960. binding=$11;
  45961. binding;
  45962. };
  45963. } else {
  45964. $1;
  45965. };
  45966. $recv(aNode)._binding_(binding);
  45967. return self;
  45968. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  45969. }, function($ctx1) {$ctx1.fill(self,"visitVariableNode:",{aNode:aNode,binding:binding},$globals.SemanticAnalyzer)});
  45970. //>>excludeEnd("ctx");
  45971. },
  45972. //>>excludeStart("ide", pragmas.excludeIdeData);
  45973. args: ["aNode"],
  45974. source: "visitVariableNode: aNode\x0a\x09\x22Bind a ScopeVar to aNode by doing a lookup in the current scope.\x0a\x09If no ScopeVar is found, bind a UnknowVar and throw an error.\x22\x0a\x0a\x09| binding |\x0a\x09binding := currentScope lookupVariable: aNode.\x0a\x09\x0a\x09binding ifNil: [\x0a\x09\x09aNode value isCapitalized\x0a\x09\x09\x09ifTrue: [ \x22Capital letter variables might be globals.\x22\x0a\x09\x09\x09\x09binding := ClassRefVar new name: aNode value; yourself.\x0a\x09\x09\x09\x09self classReferences add: aNode value]\x0a\x09\x09\x09ifFalse: [\x0a\x09\x09\x09\x09self errorUnknownVariable: aNode.\x0a\x09\x09\x09\x09binding := UnknownVar new name: aNode value; yourself ] ].\x0a\x09\x09\x0a\x09aNode binding: binding.",
  45975. referencedClasses: ["ClassRefVar", "UnknownVar"],
  45976. //>>excludeEnd("ide");
  45977. messageSends: ["lookupVariable:", "ifNil:", "ifTrue:ifFalse:", "isCapitalized", "value", "name:", "new", "yourself", "add:", "classReferences", "errorUnknownVariable:", "binding:"]
  45978. }),
  45979. $globals.SemanticAnalyzer);
  45980. $core.addMethod(
  45981. $core.method({
  45982. selector: "on:",
  45983. protocol: 'instance creation',
  45984. fn: function (aClass){
  45985. var self=this;
  45986. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  45987. return $core.withContext(function($ctx1) {
  45988. //>>excludeEnd("ctx");
  45989. var $2,$3,$1;
  45990. $2=self._new();
  45991. $recv($2)._theClass_(aClass);
  45992. $3=$recv($2)._yourself();
  45993. $1=$3;
  45994. return $1;
  45995. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  45996. }, function($ctx1) {$ctx1.fill(self,"on:",{aClass:aClass},$globals.SemanticAnalyzer.klass)});
  45997. //>>excludeEnd("ctx");
  45998. },
  45999. //>>excludeStart("ide", pragmas.excludeIdeData);
  46000. args: ["aClass"],
  46001. source: "on: aClass\x0a\x09^ self new\x0a\x09\x09theClass: aClass;\x0a\x09\x09yourself",
  46002. referencedClasses: [],
  46003. //>>excludeEnd("ide");
  46004. messageSends: ["theClass:", "new", "yourself"]
  46005. }),
  46006. $globals.SemanticAnalyzer.klass);
  46007. });
  46008. define("amber_core/Compiler-Interpreter", ["amber/boot", "amber_core/Kernel-Methods", "amber_core/Compiler-Semantic", "amber_core/Kernel-Objects", "amber_core/Compiler-Core", "amber_core/Kernel-Exceptions", "amber_core/Compiler-AST"], function($boot){
  46009. var $core=$boot.api,nil=$boot.nil,$recv=$boot.asReceiver,$globals=$boot.globals;
  46010. var smalltalk=$core,_st=$recv,globals=$globals;
  46011. $core.addPackage('Compiler-Interpreter');
  46012. $core.packages["Compiler-Interpreter"].transport = {"type":"amd","amdNamespace":"amber_core"};
  46013. $core.addClass('AIBlockClosure', $globals.BlockClosure, ['node', 'outerContext'], 'Compiler-Interpreter');
  46014. //>>excludeStart("ide", pragmas.excludeIdeData);
  46015. $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`).";
  46016. //>>excludeEnd("ide");
  46017. $core.addMethod(
  46018. $core.method({
  46019. selector: "applyTo:arguments:",
  46020. protocol: 'evaluating',
  46021. fn: function (anObject,aCollection){
  46022. var self=this;
  46023. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  46024. return $core.withContext(function($ctx1) {
  46025. //>>excludeEnd("ctx");
  46026. self._interpreterError();
  46027. return self;
  46028. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  46029. }, function($ctx1) {$ctx1.fill(self,"applyTo:arguments:",{anObject:anObject,aCollection:aCollection},$globals.AIBlockClosure)});
  46030. //>>excludeEnd("ctx");
  46031. },
  46032. //>>excludeStart("ide", pragmas.excludeIdeData);
  46033. args: ["anObject", "aCollection"],
  46034. source: "applyTo: anObject arguments: aCollection\x0a\x09self interpreterError",
  46035. referencedClasses: [],
  46036. //>>excludeEnd("ide");
  46037. messageSends: ["interpreterError"]
  46038. }),
  46039. $globals.AIBlockClosure);
  46040. $core.addMethod(
  46041. $core.method({
  46042. selector: "compiledSource",
  46043. protocol: 'accessing',
  46044. fn: function (){
  46045. var self=this;
  46046. return "[ AST Block closure ]";
  46047. },
  46048. //>>excludeStart("ide", pragmas.excludeIdeData);
  46049. args: [],
  46050. source: "compiledSource\x0a\x09\x22Unlike blocks, the receiver doesn't represent a JS function\x22\x0a\x09\x0a\x09^ '[ AST Block closure ]'",
  46051. referencedClasses: [],
  46052. //>>excludeEnd("ide");
  46053. messageSends: []
  46054. }),
  46055. $globals.AIBlockClosure);
  46056. $core.addMethod(
  46057. $core.method({
  46058. selector: "currySelf",
  46059. protocol: 'converting',
  46060. fn: function (){
  46061. var self=this;
  46062. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  46063. return $core.withContext(function($ctx1) {
  46064. //>>excludeEnd("ctx");
  46065. self._interpreterError();
  46066. return self;
  46067. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  46068. }, function($ctx1) {$ctx1.fill(self,"currySelf",{},$globals.AIBlockClosure)});
  46069. //>>excludeEnd("ctx");
  46070. },
  46071. //>>excludeStart("ide", pragmas.excludeIdeData);
  46072. args: [],
  46073. source: "currySelf\x0a\x09self interpreterError",
  46074. referencedClasses: [],
  46075. //>>excludeEnd("ide");
  46076. messageSends: ["interpreterError"]
  46077. }),
  46078. $globals.AIBlockClosure);
  46079. $core.addMethod(
  46080. $core.method({
  46081. selector: "initializeWithContext:node:",
  46082. protocol: 'initialization',
  46083. fn: function (aContext,aNode){
  46084. var self=this;
  46085. self["@node"]=aNode;
  46086. self["@outerContext"]=aContext;
  46087. return self;
  46088. },
  46089. //>>excludeStart("ide", pragmas.excludeIdeData);
  46090. args: ["aContext", "aNode"],
  46091. source: "initializeWithContext: aContext node: aNode\x0a\x09node := aNode.\x0a\x09outerContext := aContext",
  46092. referencedClasses: [],
  46093. //>>excludeEnd("ide");
  46094. messageSends: []
  46095. }),
  46096. $globals.AIBlockClosure);
  46097. $core.addMethod(
  46098. $core.method({
  46099. selector: "interpreterError",
  46100. protocol: 'error handling',
  46101. fn: function (){
  46102. var self=this;
  46103. function $ASTInterpreterError(){return $globals.ASTInterpreterError||(typeof ASTInterpreterError=="undefined"?nil:ASTInterpreterError)}
  46104. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  46105. return $core.withContext(function($ctx1) {
  46106. //>>excludeEnd("ctx");
  46107. $recv($ASTInterpreterError())._signal_("Method cannot be interpreted by the interpreter.");
  46108. return self;
  46109. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  46110. }, function($ctx1) {$ctx1.fill(self,"interpreterError",{},$globals.AIBlockClosure)});
  46111. //>>excludeEnd("ctx");
  46112. },
  46113. //>>excludeStart("ide", pragmas.excludeIdeData);
  46114. args: [],
  46115. source: "interpreterError\x0a\x09ASTInterpreterError signal: 'Method cannot be interpreted by the interpreter.'",
  46116. referencedClasses: ["ASTInterpreterError"],
  46117. //>>excludeEnd("ide");
  46118. messageSends: ["signal:"]
  46119. }),
  46120. $globals.AIBlockClosure);
  46121. $core.addMethod(
  46122. $core.method({
  46123. selector: "numArgs",
  46124. protocol: 'accessing',
  46125. fn: function (){
  46126. var self=this;
  46127. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  46128. return $core.withContext(function($ctx1) {
  46129. //>>excludeEnd("ctx");
  46130. var $1;
  46131. $1=$recv($recv(self["@node"])._temps())._size();
  46132. return $1;
  46133. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  46134. }, function($ctx1) {$ctx1.fill(self,"numArgs",{},$globals.AIBlockClosure)});
  46135. //>>excludeEnd("ctx");
  46136. },
  46137. //>>excludeStart("ide", pragmas.excludeIdeData);
  46138. args: [],
  46139. source: "numArgs\x0a\x09^ node temps size",
  46140. referencedClasses: [],
  46141. //>>excludeEnd("ide");
  46142. messageSends: ["size", "temps"]
  46143. }),
  46144. $globals.AIBlockClosure);
  46145. $core.addMethod(
  46146. $core.method({
  46147. selector: "value",
  46148. protocol: 'evaluating',
  46149. fn: function (){
  46150. var self=this;
  46151. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  46152. return $core.withContext(function($ctx1) {
  46153. //>>excludeEnd("ctx");
  46154. var $1;
  46155. $1=self._valueWithPossibleArguments_([]);
  46156. return $1;
  46157. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  46158. }, function($ctx1) {$ctx1.fill(self,"value",{},$globals.AIBlockClosure)});
  46159. //>>excludeEnd("ctx");
  46160. },
  46161. //>>excludeStart("ide", pragmas.excludeIdeData);
  46162. args: [],
  46163. source: "value\x0a\x09^ self valueWithPossibleArguments: #()",
  46164. referencedClasses: [],
  46165. //>>excludeEnd("ide");
  46166. messageSends: ["valueWithPossibleArguments:"]
  46167. }),
  46168. $globals.AIBlockClosure);
  46169. $core.addMethod(
  46170. $core.method({
  46171. selector: "value:",
  46172. protocol: 'evaluating',
  46173. fn: function (anArgument){
  46174. var self=this;
  46175. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  46176. return $core.withContext(function($ctx1) {
  46177. //>>excludeEnd("ctx");
  46178. var $1;
  46179. $1=self._valueWithPossibleArguments_([anArgument]);
  46180. return $1;
  46181. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  46182. }, function($ctx1) {$ctx1.fill(self,"value:",{anArgument:anArgument},$globals.AIBlockClosure)});
  46183. //>>excludeEnd("ctx");
  46184. },
  46185. //>>excludeStart("ide", pragmas.excludeIdeData);
  46186. args: ["anArgument"],
  46187. source: "value: anArgument\x0a\x09^ self valueWithPossibleArguments: {anArgument}",
  46188. referencedClasses: [],
  46189. //>>excludeEnd("ide");
  46190. messageSends: ["valueWithPossibleArguments:"]
  46191. }),
  46192. $globals.AIBlockClosure);
  46193. $core.addMethod(
  46194. $core.method({
  46195. selector: "value:value:",
  46196. protocol: 'evaluating',
  46197. fn: function (firstArgument,secondArgument){
  46198. var self=this;
  46199. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  46200. return $core.withContext(function($ctx1) {
  46201. //>>excludeEnd("ctx");
  46202. var $1;
  46203. $1=self._valueWithPossibleArguments_([firstArgument,secondArgument]);
  46204. return $1;
  46205. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  46206. }, function($ctx1) {$ctx1.fill(self,"value:value:",{firstArgument:firstArgument,secondArgument:secondArgument},$globals.AIBlockClosure)});
  46207. //>>excludeEnd("ctx");
  46208. },
  46209. //>>excludeStart("ide", pragmas.excludeIdeData);
  46210. args: ["firstArgument", "secondArgument"],
  46211. source: "value: firstArgument value: secondArgument\x0a\x09^ self valueWithPossibleArguments: {firstArgument . secondArgument}",
  46212. referencedClasses: [],
  46213. //>>excludeEnd("ide");
  46214. messageSends: ["valueWithPossibleArguments:"]
  46215. }),
  46216. $globals.AIBlockClosure);
  46217. $core.addMethod(
  46218. $core.method({
  46219. selector: "value:value:value:",
  46220. protocol: 'evaluating',
  46221. fn: function (firstArgument,secondArgument,thirdArgument){
  46222. var self=this;
  46223. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  46224. return $core.withContext(function($ctx1) {
  46225. //>>excludeEnd("ctx");
  46226. var $1;
  46227. $1=self._valueWithPossibleArguments_([firstArgument,secondArgument,thirdArgument]);
  46228. return $1;
  46229. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  46230. }, function($ctx1) {$ctx1.fill(self,"value:value:value:",{firstArgument:firstArgument,secondArgument:secondArgument,thirdArgument:thirdArgument},$globals.AIBlockClosure)});
  46231. //>>excludeEnd("ctx");
  46232. },
  46233. //>>excludeStart("ide", pragmas.excludeIdeData);
  46234. args: ["firstArgument", "secondArgument", "thirdArgument"],
  46235. source: "value: firstArgument value: secondArgument value: thirdArgument\x0a\x09^ self valueWithPossibleArguments: {firstArgument . secondArgument . thirdArgument}",
  46236. referencedClasses: [],
  46237. //>>excludeEnd("ide");
  46238. messageSends: ["valueWithPossibleArguments:"]
  46239. }),
  46240. $globals.AIBlockClosure);
  46241. $core.addMethod(
  46242. $core.method({
  46243. selector: "valueWithPossibleArguments:",
  46244. protocol: 'evaluating',
  46245. fn: function (aCollection){
  46246. var self=this;
  46247. var context,sequenceNode;
  46248. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  46249. return $core.withContext(function($ctx1) {
  46250. //>>excludeEnd("ctx");
  46251. var $1,$2,$3,$4,$5,$6;
  46252. context=$recv(self["@outerContext"])._newInnerContext();
  46253. $1=$recv($recv($recv(self["@node"])._nodes())._first())._copy();
  46254. $recv($1)._parent_(nil);
  46255. $2=$recv($1)._yourself();
  46256. sequenceNode=$2;
  46257. $recv($recv(sequenceNode)._temps())._do_((function(each){
  46258. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  46259. return $core.withContext(function($ctx2) {
  46260. //>>excludeEnd("ctx");
  46261. return $recv(context)._defineLocal_(each);
  46262. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  46263. $ctx2.sendIdx["defineLocal:"]=1;
  46264. //>>excludeEnd("ctx");
  46265. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  46266. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  46267. //>>excludeEnd("ctx");
  46268. }));
  46269. $recv($recv(self["@node"])._parameters())._withIndexDo_((function(each,index){
  46270. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  46271. return $core.withContext(function($ctx2) {
  46272. //>>excludeEnd("ctx");
  46273. $recv(context)._defineLocal_(each);
  46274. return $recv(context)._localAt_put_(each,$recv(aCollection)._at_ifAbsent_(index,(function(){
  46275. return nil;
  46276. })));
  46277. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  46278. }, function($ctx2) {$ctx2.fillBlock({each:each,index:index},$ctx1,2)});
  46279. //>>excludeEnd("ctx");
  46280. }));
  46281. $3=$recv(context)._interpreter();
  46282. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  46283. $ctx1.sendIdx["interpreter"]=1;
  46284. //>>excludeEnd("ctx");
  46285. $recv($3)._node_($recv(sequenceNode)._nextChild());
  46286. $4=$recv($3)._proceed();
  46287. $5=$recv(self["@outerContext"])._interpreter();
  46288. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  46289. $ctx1.sendIdx["interpreter"]=2;
  46290. //>>excludeEnd("ctx");
  46291. $recv($5)._setNonLocalReturnFromContext_(context);
  46292. $6=$recv($recv(context)._interpreter())._pop();
  46293. return $6;
  46294. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  46295. }, function($ctx1) {$ctx1.fill(self,"valueWithPossibleArguments:",{aCollection:aCollection,context:context,sequenceNode:sequenceNode},$globals.AIBlockClosure)});
  46296. //>>excludeEnd("ctx");
  46297. },
  46298. //>>excludeStart("ide", pragmas.excludeIdeData);
  46299. args: ["aCollection"],
  46300. 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 nodes first 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 nextChild;\x0a\x09\x09proceed.\x0a\x09\x09\x0a\x09outerContext interpreter\x0a\x09\x09setNonLocalReturnFromContext: context.\x0a\x09\x09\x0a\x09^ context interpreter pop",
  46301. referencedClasses: [],
  46302. //>>excludeEnd("ide");
  46303. messageSends: ["newInnerContext", "parent:", "copy", "first", "nodes", "yourself", "do:", "temps", "defineLocal:", "withIndexDo:", "parameters", "localAt:put:", "at:ifAbsent:", "node:", "interpreter", "nextChild", "proceed", "setNonLocalReturnFromContext:", "pop"]
  46304. }),
  46305. $globals.AIBlockClosure);
  46306. $core.addMethod(
  46307. $core.method({
  46308. selector: "forContext:node:",
  46309. protocol: 'instance creation',
  46310. fn: function (aContext,aNode){
  46311. var self=this;
  46312. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  46313. return $core.withContext(function($ctx1) {
  46314. //>>excludeEnd("ctx");
  46315. var $2,$3,$1;
  46316. $2=self._new();
  46317. $recv($2)._initializeWithContext_node_(aContext,aNode);
  46318. $3=$recv($2)._yourself();
  46319. $1=$3;
  46320. return $1;
  46321. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  46322. }, function($ctx1) {$ctx1.fill(self,"forContext:node:",{aContext:aContext,aNode:aNode},$globals.AIBlockClosure.klass)});
  46323. //>>excludeEnd("ctx");
  46324. },
  46325. //>>excludeStart("ide", pragmas.excludeIdeData);
  46326. args: ["aContext", "aNode"],
  46327. source: "forContext: aContext node: aNode\x0a\x09^ self new\x0a\x09\x09initializeWithContext: aContext node: aNode;\x0a\x09\x09yourself",
  46328. referencedClasses: [],
  46329. //>>excludeEnd("ide");
  46330. messageSends: ["initializeWithContext:node:", "new", "yourself"]
  46331. }),
  46332. $globals.AIBlockClosure.klass);
  46333. $core.addClass('AIContext', $globals.MethodContext, ['outerContext', 'innerContext', 'pc', 'locals', 'selector', 'index', 'sendIndexes', 'evaluatedSelector', 'ast', 'interpreter', 'supercall'], 'Compiler-Interpreter');
  46334. //>>excludeStart("ide", pragmas.excludeIdeData);
  46335. $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)";
  46336. //>>excludeEnd("ide");
  46337. $core.addMethod(
  46338. $core.method({
  46339. selector: "arguments",
  46340. protocol: 'interpreting',
  46341. fn: function (){
  46342. var self=this;
  46343. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  46344. return $core.withContext(function($ctx1) {
  46345. //>>excludeEnd("ctx");
  46346. var $1;
  46347. $1=$recv($recv(self._ast())._arguments())._collect_((function(each){
  46348. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  46349. return $core.withContext(function($ctx2) {
  46350. //>>excludeEnd("ctx");
  46351. return self._localAt_ifAbsent_(each,(function(){
  46352. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  46353. return $core.withContext(function($ctx3) {
  46354. //>>excludeEnd("ctx");
  46355. return self._error_("Argument not in context");
  46356. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  46357. }, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)});
  46358. //>>excludeEnd("ctx");
  46359. }));
  46360. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  46361. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  46362. //>>excludeEnd("ctx");
  46363. }));
  46364. return $1;
  46365. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  46366. }, function($ctx1) {$ctx1.fill(self,"arguments",{},$globals.AIContext)});
  46367. //>>excludeEnd("ctx");
  46368. },
  46369. //>>excludeStart("ide", pragmas.excludeIdeData);
  46370. args: [],
  46371. source: "arguments\x0a\x09^ self ast arguments collect: [ :each |\x0a\x09\x09self localAt: each ifAbsent: [ self error: 'Argument not in context' ] ]",
  46372. referencedClasses: [],
  46373. //>>excludeEnd("ide");
  46374. messageSends: ["collect:", "arguments", "ast", "localAt:ifAbsent:", "error:"]
  46375. }),
  46376. $globals.AIContext);
  46377. $core.addMethod(
  46378. $core.method({
  46379. selector: "ast",
  46380. protocol: 'interpreting',
  46381. fn: function (){
  46382. var self=this;
  46383. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  46384. return $core.withContext(function($ctx1) {
  46385. //>>excludeEnd("ctx");
  46386. var $1,$3,$2,$4,$5,$receiver;
  46387. $1=self._isBlockContext();
  46388. if($core.assert($1)){
  46389. $3=self._outerContext();
  46390. if(($receiver = $3) == null || $receiver.isNil){
  46391. $2=$3;
  46392. } else {
  46393. var context;
  46394. context=$receiver;
  46395. $2=$recv(context)._ast();
  46396. };
  46397. return $2;
  46398. };
  46399. $4=self["@ast"];
  46400. if(($receiver = $4) == null || $receiver.isNil){
  46401. self._initializeAST();
  46402. } else {
  46403. $4;
  46404. };
  46405. $5=self["@ast"];
  46406. return $5;
  46407. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  46408. }, function($ctx1) {$ctx1.fill(self,"ast",{},$globals.AIContext)});
  46409. //>>excludeEnd("ctx");
  46410. },
  46411. //>>excludeStart("ide", pragmas.excludeIdeData);
  46412. args: [],
  46413. source: "ast\x0a\x09self isBlockContext ifTrue: [ \x0a\x09\x09^ self outerContext ifNotNil: [ :context | context ast ] ].\x0a\x0a\x09ast ifNil: [ self initializeAST ].\x0a\x09^ ast",
  46414. referencedClasses: [],
  46415. //>>excludeEnd("ide");
  46416. messageSends: ["ifTrue:", "isBlockContext", "ifNotNil:", "outerContext", "ast", "ifNil:", "initializeAST"]
  46417. }),
  46418. $globals.AIContext);
  46419. $core.addMethod(
  46420. $core.method({
  46421. selector: "basicLocalAt:",
  46422. protocol: 'private',
  46423. fn: function (aString){
  46424. var self=this;
  46425. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  46426. return $core.withContext(function($ctx1) {
  46427. //>>excludeEnd("ctx");
  46428. var $1;
  46429. $1=$recv(self._locals())._at_(aString);
  46430. return $1;
  46431. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  46432. }, function($ctx1) {$ctx1.fill(self,"basicLocalAt:",{aString:aString},$globals.AIContext)});
  46433. //>>excludeEnd("ctx");
  46434. },
  46435. //>>excludeStart("ide", pragmas.excludeIdeData);
  46436. args: ["aString"],
  46437. source: "basicLocalAt: aString\x0a\x09^ self locals at: aString",
  46438. referencedClasses: [],
  46439. //>>excludeEnd("ide");
  46440. messageSends: ["at:", "locals"]
  46441. }),
  46442. $globals.AIContext);
  46443. $core.addMethod(
  46444. $core.method({
  46445. selector: "basicLocalAt:put:",
  46446. protocol: 'private',
  46447. fn: function (aString,anObject){
  46448. var self=this;
  46449. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  46450. return $core.withContext(function($ctx1) {
  46451. //>>excludeEnd("ctx");
  46452. $recv(self._locals())._at_put_(aString,anObject);
  46453. return self;
  46454. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  46455. }, function($ctx1) {$ctx1.fill(self,"basicLocalAt:put:",{aString:aString,anObject:anObject},$globals.AIContext)});
  46456. //>>excludeEnd("ctx");
  46457. },
  46458. //>>excludeStart("ide", pragmas.excludeIdeData);
  46459. args: ["aString", "anObject"],
  46460. source: "basicLocalAt: aString put: anObject\x0a\x09self locals at: aString put: anObject",
  46461. referencedClasses: [],
  46462. //>>excludeEnd("ide");
  46463. messageSends: ["at:put:", "locals"]
  46464. }),
  46465. $globals.AIContext);
  46466. $core.addMethod(
  46467. $core.method({
  46468. selector: "basicReceiver",
  46469. protocol: 'interpreting',
  46470. fn: function (){
  46471. var self=this;
  46472. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  46473. return $core.withContext(function($ctx1) {
  46474. //>>excludeEnd("ctx");
  46475. var $1;
  46476. $1=self._localAt_("self");
  46477. return $1;
  46478. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  46479. }, function($ctx1) {$ctx1.fill(self,"basicReceiver",{},$globals.AIContext)});
  46480. //>>excludeEnd("ctx");
  46481. },
  46482. //>>excludeStart("ide", pragmas.excludeIdeData);
  46483. args: [],
  46484. source: "basicReceiver\x0a\x09^ self localAt: 'self'",
  46485. referencedClasses: [],
  46486. //>>excludeEnd("ide");
  46487. messageSends: ["localAt:"]
  46488. }),
  46489. $globals.AIContext);
  46490. $core.addMethod(
  46491. $core.method({
  46492. selector: "defineLocal:",
  46493. protocol: 'accessing',
  46494. fn: function (aString){
  46495. var self=this;
  46496. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  46497. return $core.withContext(function($ctx1) {
  46498. //>>excludeEnd("ctx");
  46499. $recv(self._locals())._at_put_(aString,nil);
  46500. return self;
  46501. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  46502. }, function($ctx1) {$ctx1.fill(self,"defineLocal:",{aString:aString},$globals.AIContext)});
  46503. //>>excludeEnd("ctx");
  46504. },
  46505. //>>excludeStart("ide", pragmas.excludeIdeData);
  46506. args: ["aString"],
  46507. source: "defineLocal: aString\x0a\x09self locals at: aString put: nil",
  46508. referencedClasses: [],
  46509. //>>excludeEnd("ide");
  46510. messageSends: ["at:put:", "locals"]
  46511. }),
  46512. $globals.AIContext);
  46513. $core.addMethod(
  46514. $core.method({
  46515. selector: "evaluate:on:",
  46516. protocol: 'evaluating',
  46517. fn: function (aString,anEvaluator){
  46518. var self=this;
  46519. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  46520. return $core.withContext(function($ctx1) {
  46521. //>>excludeEnd("ctx");
  46522. var $1;
  46523. $1=$recv(anEvaluator)._evaluate_context_(aString,self);
  46524. return $1;
  46525. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  46526. }, function($ctx1) {$ctx1.fill(self,"evaluate:on:",{aString:aString,anEvaluator:anEvaluator},$globals.AIContext)});
  46527. //>>excludeEnd("ctx");
  46528. },
  46529. //>>excludeStart("ide", pragmas.excludeIdeData);
  46530. args: ["aString", "anEvaluator"],
  46531. source: "evaluate: aString on: anEvaluator\x0a\x09^ anEvaluator evaluate: aString context: self",
  46532. referencedClasses: [],
  46533. //>>excludeEnd("ide");
  46534. messageSends: ["evaluate:context:"]
  46535. }),
  46536. $globals.AIContext);
  46537. $core.addMethod(
  46538. $core.method({
  46539. selector: "evaluateNode:",
  46540. protocol: 'evaluating',
  46541. fn: function (aNode){
  46542. var self=this;
  46543. function $ASTInterpreter(){return $globals.ASTInterpreter||(typeof ASTInterpreter=="undefined"?nil:ASTInterpreter)}
  46544. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  46545. return $core.withContext(function($ctx1) {
  46546. //>>excludeEnd("ctx");
  46547. var $2,$3,$1;
  46548. $2=$recv($ASTInterpreter())._new();
  46549. $recv($2)._context_(self);
  46550. $recv($2)._node_($recv(aNode)._nextChild());
  46551. $recv($2)._proceed();
  46552. $3=$recv($2)._result();
  46553. $1=$3;
  46554. return $1;
  46555. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  46556. }, function($ctx1) {$ctx1.fill(self,"evaluateNode:",{aNode:aNode},$globals.AIContext)});
  46557. //>>excludeEnd("ctx");
  46558. },
  46559. //>>excludeStart("ide", pragmas.excludeIdeData);
  46560. args: ["aNode"],
  46561. source: "evaluateNode: aNode\x0a\x09^ ASTInterpreter new\x0a\x09\x09context: self;\x0a\x09\x09node: aNode nextChild;\x0a\x09\x09proceed;\x0a\x09\x09result",
  46562. referencedClasses: ["ASTInterpreter"],
  46563. //>>excludeEnd("ide");
  46564. messageSends: ["context:", "new", "node:", "nextChild", "proceed", "result"]
  46565. }),
  46566. $globals.AIContext);
  46567. $core.addMethod(
  46568. $core.method({
  46569. selector: "evaluatedSelector",
  46570. protocol: 'accessing',
  46571. fn: function (){
  46572. var self=this;
  46573. var $1;
  46574. $1=self["@evaluatedSelector"];
  46575. return $1;
  46576. },
  46577. //>>excludeStart("ide", pragmas.excludeIdeData);
  46578. args: [],
  46579. source: "evaluatedSelector\x0a\x09^ evaluatedSelector",
  46580. referencedClasses: [],
  46581. //>>excludeEnd("ide");
  46582. messageSends: []
  46583. }),
  46584. $globals.AIContext);
  46585. $core.addMethod(
  46586. $core.method({
  46587. selector: "evaluatedSelector:",
  46588. protocol: 'accessing',
  46589. fn: function (aString){
  46590. var self=this;
  46591. self["@evaluatedSelector"]=aString;
  46592. return self;
  46593. },
  46594. //>>excludeStart("ide", pragmas.excludeIdeData);
  46595. args: ["aString"],
  46596. source: "evaluatedSelector: aString\x0a\x09evaluatedSelector := aString",
  46597. referencedClasses: [],
  46598. //>>excludeEnd("ide");
  46599. messageSends: []
  46600. }),
  46601. $globals.AIContext);
  46602. $core.addMethod(
  46603. $core.method({
  46604. selector: "index",
  46605. protocol: 'accessing',
  46606. fn: function (){
  46607. var self=this;
  46608. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  46609. return $core.withContext(function($ctx1) {
  46610. //>>excludeEnd("ctx");
  46611. var $2,$1,$receiver;
  46612. $2=self["@index"];
  46613. if(($receiver = $2) == null || $receiver.isNil){
  46614. $1=(0);
  46615. } else {
  46616. $1=$2;
  46617. };
  46618. return $1;
  46619. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  46620. }, function($ctx1) {$ctx1.fill(self,"index",{},$globals.AIContext)});
  46621. //>>excludeEnd("ctx");
  46622. },
  46623. //>>excludeStart("ide", pragmas.excludeIdeData);
  46624. args: [],
  46625. source: "index\x0a\x09^ index ifNil: [ 0 ]",
  46626. referencedClasses: [],
  46627. //>>excludeEnd("ide");
  46628. messageSends: ["ifNil:"]
  46629. }),
  46630. $globals.AIContext);
  46631. $core.addMethod(
  46632. $core.method({
  46633. selector: "index:",
  46634. protocol: 'accessing',
  46635. fn: function (anInteger){
  46636. var self=this;
  46637. self["@index"]=anInteger;
  46638. return self;
  46639. },
  46640. //>>excludeStart("ide", pragmas.excludeIdeData);
  46641. args: ["anInteger"],
  46642. source: "index: anInteger\x0a\x09index := anInteger",
  46643. referencedClasses: [],
  46644. //>>excludeEnd("ide");
  46645. messageSends: []
  46646. }),
  46647. $globals.AIContext);
  46648. $core.addMethod(
  46649. $core.method({
  46650. selector: "initializeAST",
  46651. protocol: 'initialization',
  46652. fn: function (){
  46653. var self=this;
  46654. function $SemanticAnalyzer(){return $globals.SemanticAnalyzer||(typeof SemanticAnalyzer=="undefined"?nil:SemanticAnalyzer)}
  46655. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  46656. return $core.withContext(function($ctx1) {
  46657. //>>excludeEnd("ctx");
  46658. var $1;
  46659. $1=self._method();
  46660. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  46661. $ctx1.sendIdx["method"]=1;
  46662. //>>excludeEnd("ctx");
  46663. self["@ast"]=$recv($1)._ast();
  46664. $recv($recv($SemanticAnalyzer())._on_($recv(self._method())._methodClass()))._visit_(self["@ast"]);
  46665. return self;
  46666. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  46667. }, function($ctx1) {$ctx1.fill(self,"initializeAST",{},$globals.AIContext)});
  46668. //>>excludeEnd("ctx");
  46669. },
  46670. //>>excludeStart("ide", pragmas.excludeIdeData);
  46671. args: [],
  46672. source: "initializeAST\x0a\x09ast := self method ast.\x0a\x09(SemanticAnalyzer on: self method methodClass)\x0a\x09\x09visit: ast",
  46673. referencedClasses: ["SemanticAnalyzer"],
  46674. //>>excludeEnd("ide");
  46675. messageSends: ["ast", "method", "visit:", "on:", "methodClass"]
  46676. }),
  46677. $globals.AIContext);
  46678. $core.addMethod(
  46679. $core.method({
  46680. selector: "initializeFromMethodContext:",
  46681. protocol: 'initialization',
  46682. fn: function (aMethodContext){
  46683. var self=this;
  46684. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  46685. return $core.withContext(function($ctx1) {
  46686. //>>excludeEnd("ctx");
  46687. var $1,$2,$3,$4,$receiver;
  46688. self._evaluatedSelector_($recv(aMethodContext)._evaluatedSelector());
  46689. self._index_($recv(aMethodContext)._index());
  46690. self._sendIndexes_($recv(aMethodContext)._sendIndexes());
  46691. self._receiver_($recv(aMethodContext)._receiver());
  46692. self._supercall_($recv(aMethodContext)._supercall());
  46693. $1=self._selector_($recv(aMethodContext)._selector());
  46694. $2=$recv(aMethodContext)._outerContext();
  46695. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  46696. $ctx1.sendIdx["outerContext"]=1;
  46697. //>>excludeEnd("ctx");
  46698. if(($receiver = $2) == null || $receiver.isNil){
  46699. $2;
  46700. } else {
  46701. var outer;
  46702. outer=$receiver;
  46703. $3=$recv(outer)._methodContext();
  46704. if(($receiver = $3) == null || $receiver.isNil){
  46705. $3;
  46706. } else {
  46707. self._outerContext_($recv(self._class())._fromMethodContext_($recv(aMethodContext)._outerContext()));
  46708. };
  46709. $4=$recv(aMethodContext)._locals();
  46710. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  46711. $ctx1.sendIdx["locals"]=1;
  46712. //>>excludeEnd("ctx");
  46713. $recv($4)._keysAndValuesDo_((function(key,value){
  46714. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  46715. return $core.withContext(function($ctx2) {
  46716. //>>excludeEnd("ctx");
  46717. return $recv(self._locals())._at_put_(key,value);
  46718. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  46719. }, function($ctx2) {$ctx2.fillBlock({key:key,value:value},$ctx1,3)});
  46720. //>>excludeEnd("ctx");
  46721. }));
  46722. };
  46723. return self;
  46724. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  46725. }, function($ctx1) {$ctx1.fill(self,"initializeFromMethodContext:",{aMethodContext:aMethodContext},$globals.AIContext)});
  46726. //>>excludeEnd("ctx");
  46727. },
  46728. //>>excludeStart("ide", pragmas.excludeIdeData);
  46729. args: ["aMethodContext"],
  46730. 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 ] ]",
  46731. referencedClasses: [],
  46732. //>>excludeEnd("ide");
  46733. messageSends: ["evaluatedSelector:", "evaluatedSelector", "index:", "index", "sendIndexes:", "sendIndexes", "receiver:", "receiver", "supercall:", "supercall", "selector:", "selector", "ifNotNil:", "outerContext", "methodContext", "outerContext:", "fromMethodContext:", "class", "keysAndValuesDo:", "locals", "at:put:"]
  46734. }),
  46735. $globals.AIContext);
  46736. $core.addMethod(
  46737. $core.method({
  46738. selector: "initializeInterpreter",
  46739. protocol: 'initialization',
  46740. fn: function (){
  46741. var self=this;
  46742. function $ASTInterpreter(){return $globals.ASTInterpreter||(typeof ASTInterpreter=="undefined"?nil:ASTInterpreter)}
  46743. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  46744. return $core.withContext(function($ctx1) {
  46745. //>>excludeEnd("ctx");
  46746. var $1,$2,$3,$receiver;
  46747. $1=$recv($ASTInterpreter())._new();
  46748. $recv($1)._context_(self);
  46749. $2=$recv($1)._yourself();
  46750. self["@interpreter"]=$2;
  46751. $3=self._innerContext();
  46752. if(($receiver = $3) == null || $receiver.isNil){
  46753. $3;
  46754. } else {
  46755. self._setupInterpreter_(self["@interpreter"]);
  46756. };
  46757. return self;
  46758. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  46759. }, function($ctx1) {$ctx1.fill(self,"initializeInterpreter",{},$globals.AIContext)});
  46760. //>>excludeEnd("ctx");
  46761. },
  46762. //>>excludeStart("ide", pragmas.excludeIdeData);
  46763. args: [],
  46764. source: "initializeInterpreter\x0a\x09interpreter := ASTInterpreter new\x0a\x09\x09context: self;\x0a\x09\x09yourself.\x0a\x09\x0a\x09self innerContext ifNotNil: [\x0a\x09\x09self setupInterpreter: interpreter ]",
  46765. referencedClasses: ["ASTInterpreter"],
  46766. //>>excludeEnd("ide");
  46767. messageSends: ["context:", "new", "yourself", "ifNotNil:", "innerContext", "setupInterpreter:"]
  46768. }),
  46769. $globals.AIContext);
  46770. $core.addMethod(
  46771. $core.method({
  46772. selector: "initializeLocals",
  46773. protocol: 'initialization',
  46774. fn: function (){
  46775. var self=this;
  46776. function $Dictionary(){return $globals.Dictionary||(typeof Dictionary=="undefined"?nil:Dictionary)}
  46777. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  46778. return $core.withContext(function($ctx1) {
  46779. //>>excludeEnd("ctx");
  46780. self["@locals"]=$recv($Dictionary())._new();
  46781. $recv(self["@locals"])._at_put_("thisContext",self);
  46782. return self;
  46783. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  46784. }, function($ctx1) {$ctx1.fill(self,"initializeLocals",{},$globals.AIContext)});
  46785. //>>excludeEnd("ctx");
  46786. },
  46787. //>>excludeStart("ide", pragmas.excludeIdeData);
  46788. args: [],
  46789. source: "initializeLocals\x0a\x09locals := Dictionary new.\x0a\x09locals at: 'thisContext' put: self.",
  46790. referencedClasses: ["Dictionary"],
  46791. //>>excludeEnd("ide");
  46792. messageSends: ["new", "at:put:"]
  46793. }),
  46794. $globals.AIContext);
  46795. $core.addMethod(
  46796. $core.method({
  46797. selector: "innerContext",
  46798. protocol: 'accessing',
  46799. fn: function (){
  46800. var self=this;
  46801. var $1;
  46802. $1=self["@innerContext"];
  46803. return $1;
  46804. },
  46805. //>>excludeStart("ide", pragmas.excludeIdeData);
  46806. args: [],
  46807. source: "innerContext\x0a\x09^ innerContext",
  46808. referencedClasses: [],
  46809. //>>excludeEnd("ide");
  46810. messageSends: []
  46811. }),
  46812. $globals.AIContext);
  46813. $core.addMethod(
  46814. $core.method({
  46815. selector: "innerContext:",
  46816. protocol: 'accessing',
  46817. fn: function (anAIContext){
  46818. var self=this;
  46819. self["@innerContext"]=anAIContext;
  46820. return self;
  46821. },
  46822. //>>excludeStart("ide", pragmas.excludeIdeData);
  46823. args: ["anAIContext"],
  46824. source: "innerContext: anAIContext\x0a\x09innerContext := anAIContext",
  46825. referencedClasses: [],
  46826. //>>excludeEnd("ide");
  46827. messageSends: []
  46828. }),
  46829. $globals.AIContext);
  46830. $core.addMethod(
  46831. $core.method({
  46832. selector: "interpreter",
  46833. protocol: 'interpreting',
  46834. fn: function (){
  46835. var self=this;
  46836. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  46837. return $core.withContext(function($ctx1) {
  46838. //>>excludeEnd("ctx");
  46839. var $1,$2,$receiver;
  46840. $1=self["@interpreter"];
  46841. if(($receiver = $1) == null || $receiver.isNil){
  46842. self._initializeInterpreter();
  46843. } else {
  46844. $1;
  46845. };
  46846. $2=self["@interpreter"];
  46847. return $2;
  46848. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  46849. }, function($ctx1) {$ctx1.fill(self,"interpreter",{},$globals.AIContext)});
  46850. //>>excludeEnd("ctx");
  46851. },
  46852. //>>excludeStart("ide", pragmas.excludeIdeData);
  46853. args: [],
  46854. source: "interpreter\x0a\x09interpreter ifNil: [ self initializeInterpreter ].\x0a\x09^ interpreter",
  46855. referencedClasses: [],
  46856. //>>excludeEnd("ide");
  46857. messageSends: ["ifNil:", "initializeInterpreter"]
  46858. }),
  46859. $globals.AIContext);
  46860. $core.addMethod(
  46861. $core.method({
  46862. selector: "interpreter:",
  46863. protocol: 'interpreting',
  46864. fn: function (anInterpreter){
  46865. var self=this;
  46866. self["@interpreter"]=anInterpreter;
  46867. return self;
  46868. },
  46869. //>>excludeStart("ide", pragmas.excludeIdeData);
  46870. args: ["anInterpreter"],
  46871. source: "interpreter: anInterpreter\x0a\x09interpreter := anInterpreter",
  46872. referencedClasses: [],
  46873. //>>excludeEnd("ide");
  46874. messageSends: []
  46875. }),
  46876. $globals.AIContext);
  46877. $core.addMethod(
  46878. $core.method({
  46879. selector: "isTopContext",
  46880. protocol: 'testing',
  46881. fn: function (){
  46882. var self=this;
  46883. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  46884. return $core.withContext(function($ctx1) {
  46885. //>>excludeEnd("ctx");
  46886. var $1;
  46887. $1=$recv(self._innerContext())._isNil();
  46888. return $1;
  46889. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  46890. }, function($ctx1) {$ctx1.fill(self,"isTopContext",{},$globals.AIContext)});
  46891. //>>excludeEnd("ctx");
  46892. },
  46893. //>>excludeStart("ide", pragmas.excludeIdeData);
  46894. args: [],
  46895. source: "isTopContext\x0a\x09^ self innerContext isNil",
  46896. referencedClasses: [],
  46897. //>>excludeEnd("ide");
  46898. messageSends: ["isNil", "innerContext"]
  46899. }),
  46900. $globals.AIContext);
  46901. $core.addMethod(
  46902. $core.method({
  46903. selector: "localAt:",
  46904. protocol: 'accessing',
  46905. fn: function (aString){
  46906. var self=this;
  46907. var context;
  46908. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  46909. return $core.withContext(function($ctx1) {
  46910. //>>excludeEnd("ctx");
  46911. var $1;
  46912. context=self._lookupContextForLocal_(aString);
  46913. $1=$recv(context)._basicLocalAt_(aString);
  46914. return $1;
  46915. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  46916. }, function($ctx1) {$ctx1.fill(self,"localAt:",{aString:aString,context:context},$globals.AIContext)});
  46917. //>>excludeEnd("ctx");
  46918. },
  46919. //>>excludeStart("ide", pragmas.excludeIdeData);
  46920. args: ["aString"],
  46921. 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",
  46922. referencedClasses: [],
  46923. //>>excludeEnd("ide");
  46924. messageSends: ["lookupContextForLocal:", "basicLocalAt:"]
  46925. }),
  46926. $globals.AIContext);
  46927. $core.addMethod(
  46928. $core.method({
  46929. selector: "localAt:ifAbsent:",
  46930. protocol: 'accessing',
  46931. fn: function (aString,aBlock){
  46932. var self=this;
  46933. var context;
  46934. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  46935. return $core.withContext(function($ctx1) {
  46936. //>>excludeEnd("ctx");
  46937. var $1,$2;
  46938. var $early={};
  46939. try {
  46940. context=self._lookupContextForLocal_ifNone_(aString,(function(){
  46941. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  46942. return $core.withContext(function($ctx2) {
  46943. //>>excludeEnd("ctx");
  46944. $1=$recv(aBlock)._value();
  46945. throw $early=[$1];
  46946. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  46947. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  46948. //>>excludeEnd("ctx");
  46949. }));
  46950. $2=$recv(context)._basicLocalAt_(aString);
  46951. return $2;
  46952. }
  46953. catch(e) {if(e===$early)return e[0]; throw e}
  46954. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  46955. }, function($ctx1) {$ctx1.fill(self,"localAt:ifAbsent:",{aString:aString,aBlock:aBlock,context:context},$globals.AIContext)});
  46956. //>>excludeEnd("ctx");
  46957. },
  46958. //>>excludeStart("ide", pragmas.excludeIdeData);
  46959. args: ["aString", "aBlock"],
  46960. 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",
  46961. referencedClasses: [],
  46962. //>>excludeEnd("ide");
  46963. messageSends: ["lookupContextForLocal:ifNone:", "value", "basicLocalAt:"]
  46964. }),
  46965. $globals.AIContext);
  46966. $core.addMethod(
  46967. $core.method({
  46968. selector: "localAt:put:",
  46969. protocol: 'accessing',
  46970. fn: function (aString,anObject){
  46971. var self=this;
  46972. var context;
  46973. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  46974. return $core.withContext(function($ctx1) {
  46975. //>>excludeEnd("ctx");
  46976. context=self._lookupContextForLocal_(aString);
  46977. $recv(context)._basicLocalAt_put_(aString,anObject);
  46978. return self;
  46979. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  46980. }, function($ctx1) {$ctx1.fill(self,"localAt:put:",{aString:aString,anObject:anObject,context:context},$globals.AIContext)});
  46981. //>>excludeEnd("ctx");
  46982. },
  46983. //>>excludeStart("ide", pragmas.excludeIdeData);
  46984. args: ["aString", "anObject"],
  46985. source: "localAt: aString put: anObject\x0a\x09| context |\x0a\x09\x0a\x09context := self lookupContextForLocal: aString.\x0a\x09context basicLocalAt: aString put: anObject",
  46986. referencedClasses: [],
  46987. //>>excludeEnd("ide");
  46988. messageSends: ["lookupContextForLocal:", "basicLocalAt:put:"]
  46989. }),
  46990. $globals.AIContext);
  46991. $core.addMethod(
  46992. $core.method({
  46993. selector: "locals",
  46994. protocol: 'accessing',
  46995. fn: function (){
  46996. var self=this;
  46997. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  46998. return $core.withContext(function($ctx1) {
  46999. //>>excludeEnd("ctx");
  47000. var $1,$2,$receiver;
  47001. $1=self["@locals"];
  47002. if(($receiver = $1) == null || $receiver.isNil){
  47003. self._initializeLocals();
  47004. } else {
  47005. $1;
  47006. };
  47007. $2=self["@locals"];
  47008. return $2;
  47009. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  47010. }, function($ctx1) {$ctx1.fill(self,"locals",{},$globals.AIContext)});
  47011. //>>excludeEnd("ctx");
  47012. },
  47013. //>>excludeStart("ide", pragmas.excludeIdeData);
  47014. args: [],
  47015. source: "locals\x0a\x09locals ifNil: [ self initializeLocals ].\x0a\x09\x0a\x09^ locals",
  47016. referencedClasses: [],
  47017. //>>excludeEnd("ide");
  47018. messageSends: ["ifNil:", "initializeLocals"]
  47019. }),
  47020. $globals.AIContext);
  47021. $core.addMethod(
  47022. $core.method({
  47023. selector: "lookupContextForLocal:",
  47024. protocol: 'private',
  47025. fn: function (aString){
  47026. var self=this;
  47027. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  47028. return $core.withContext(function($ctx1) {
  47029. //>>excludeEnd("ctx");
  47030. var $1;
  47031. $1=self._lookupContextForLocal_ifNone_(aString,(function(){
  47032. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  47033. return $core.withContext(function($ctx2) {
  47034. //>>excludeEnd("ctx");
  47035. return self._variableNotFound();
  47036. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  47037. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  47038. //>>excludeEnd("ctx");
  47039. }));
  47040. return $1;
  47041. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  47042. }, function($ctx1) {$ctx1.fill(self,"lookupContextForLocal:",{aString:aString},$globals.AIContext)});
  47043. //>>excludeEnd("ctx");
  47044. },
  47045. //>>excludeStart("ide", pragmas.excludeIdeData);
  47046. args: ["aString"],
  47047. 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 ]",
  47048. referencedClasses: [],
  47049. //>>excludeEnd("ide");
  47050. messageSends: ["lookupContextForLocal:ifNone:", "variableNotFound"]
  47051. }),
  47052. $globals.AIContext);
  47053. $core.addMethod(
  47054. $core.method({
  47055. selector: "lookupContextForLocal:ifNone:",
  47056. protocol: 'private',
  47057. fn: function (aString,aBlock){
  47058. var self=this;
  47059. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  47060. return $core.withContext(function($ctx1) {
  47061. //>>excludeEnd("ctx");
  47062. var $2,$1;
  47063. $1=$recv(self._locals())._at_ifPresent_ifAbsent_(aString,(function(){
  47064. return self;
  47065. }),(function(){
  47066. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  47067. return $core.withContext(function($ctx2) {
  47068. //>>excludeEnd("ctx");
  47069. $2=self._outerContext();
  47070. return $recv($2)._ifNil_ifNotNil_(aBlock,(function(context){
  47071. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  47072. return $core.withContext(function($ctx3) {
  47073. //>>excludeEnd("ctx");
  47074. return $recv(context)._lookupContextForLocal_(aString);
  47075. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  47076. }, function($ctx3) {$ctx3.fillBlock({context:context},$ctx2,3)});
  47077. //>>excludeEnd("ctx");
  47078. }));
  47079. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  47080. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
  47081. //>>excludeEnd("ctx");
  47082. }));
  47083. return $1;
  47084. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  47085. }, function($ctx1) {$ctx1.fill(self,"lookupContextForLocal:ifNone:",{aString:aString,aBlock:aBlock},$globals.AIContext)});
  47086. //>>excludeEnd("ctx");
  47087. },
  47088. //>>excludeStart("ide", pragmas.excludeIdeData);
  47089. args: ["aString", "aBlock"],
  47090. 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 ] ]",
  47091. referencedClasses: [],
  47092. //>>excludeEnd("ide");
  47093. messageSends: ["at:ifPresent:ifAbsent:", "locals", "ifNil:ifNotNil:", "outerContext", "lookupContextForLocal:"]
  47094. }),
  47095. $globals.AIContext);
  47096. $core.addMethod(
  47097. $core.method({
  47098. selector: "newInnerContext",
  47099. protocol: 'factory',
  47100. fn: function (){
  47101. var self=this;
  47102. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  47103. return $core.withContext(function($ctx1) {
  47104. //>>excludeEnd("ctx");
  47105. var $2,$3,$1;
  47106. $2=$recv(self._class())._new();
  47107. $recv($2)._outerContext_(self);
  47108. $3=$recv($2)._yourself();
  47109. $1=$3;
  47110. return $1;
  47111. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  47112. }, function($ctx1) {$ctx1.fill(self,"newInnerContext",{},$globals.AIContext)});
  47113. //>>excludeEnd("ctx");
  47114. },
  47115. //>>excludeStart("ide", pragmas.excludeIdeData);
  47116. args: [],
  47117. source: "newInnerContext\x0a\x09^ self class new\x0a\x09\x09outerContext: self;\x0a\x09\x09yourself",
  47118. referencedClasses: [],
  47119. //>>excludeEnd("ide");
  47120. messageSends: ["outerContext:", "new", "class", "yourself"]
  47121. }),
  47122. $globals.AIContext);
  47123. $core.addMethod(
  47124. $core.method({
  47125. selector: "outerContext",
  47126. protocol: 'accessing',
  47127. fn: function (){
  47128. var self=this;
  47129. var $1;
  47130. $1=self["@outerContext"];
  47131. return $1;
  47132. },
  47133. //>>excludeStart("ide", pragmas.excludeIdeData);
  47134. args: [],
  47135. source: "outerContext\x0a\x09^ outerContext",
  47136. referencedClasses: [],
  47137. //>>excludeEnd("ide");
  47138. messageSends: []
  47139. }),
  47140. $globals.AIContext);
  47141. $core.addMethod(
  47142. $core.method({
  47143. selector: "outerContext:",
  47144. protocol: 'accessing',
  47145. fn: function (anAIContext){
  47146. var self=this;
  47147. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  47148. return $core.withContext(function($ctx1) {
  47149. //>>excludeEnd("ctx");
  47150. var $1,$receiver;
  47151. self["@outerContext"]=anAIContext;
  47152. $1=self["@outerContext"];
  47153. if(($receiver = $1) == null || $receiver.isNil){
  47154. $1;
  47155. } else {
  47156. var context;
  47157. context=$receiver;
  47158. $recv(context)._innerContext_(self);
  47159. };
  47160. return self;
  47161. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  47162. }, function($ctx1) {$ctx1.fill(self,"outerContext:",{anAIContext:anAIContext},$globals.AIContext)});
  47163. //>>excludeEnd("ctx");
  47164. },
  47165. //>>excludeStart("ide", pragmas.excludeIdeData);
  47166. args: ["anAIContext"],
  47167. source: "outerContext: anAIContext\x0a\x09outerContext := anAIContext.\x0a\x09outerContext ifNotNil: [ :context | \x0a\x09\x09context innerContext: self ]",
  47168. referencedClasses: [],
  47169. //>>excludeEnd("ide");
  47170. messageSends: ["ifNotNil:", "innerContext:"]
  47171. }),
  47172. $globals.AIContext);
  47173. $core.addMethod(
  47174. $core.method({
  47175. selector: "receiver:",
  47176. protocol: 'interpreting',
  47177. fn: function (anObject){
  47178. var self=this;
  47179. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  47180. return $core.withContext(function($ctx1) {
  47181. //>>excludeEnd("ctx");
  47182. $recv(self._locals())._at_put_("self",anObject);
  47183. return self;
  47184. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  47185. }, function($ctx1) {$ctx1.fill(self,"receiver:",{anObject:anObject},$globals.AIContext)});
  47186. //>>excludeEnd("ctx");
  47187. },
  47188. //>>excludeStart("ide", pragmas.excludeIdeData);
  47189. args: ["anObject"],
  47190. source: "receiver: anObject\x0a\x09self locals at: 'self' put: anObject",
  47191. referencedClasses: [],
  47192. //>>excludeEnd("ide");
  47193. messageSends: ["at:put:", "locals"]
  47194. }),
  47195. $globals.AIContext);
  47196. $core.addMethod(
  47197. $core.method({
  47198. selector: "selector",
  47199. protocol: 'accessing',
  47200. fn: function (){
  47201. var self=this;
  47202. var $1;
  47203. $1=self["@selector"];
  47204. return $1;
  47205. },
  47206. //>>excludeStart("ide", pragmas.excludeIdeData);
  47207. args: [],
  47208. source: "selector\x0a\x09^ selector",
  47209. referencedClasses: [],
  47210. //>>excludeEnd("ide");
  47211. messageSends: []
  47212. }),
  47213. $globals.AIContext);
  47214. $core.addMethod(
  47215. $core.method({
  47216. selector: "selector:",
  47217. protocol: 'accessing',
  47218. fn: function (aString){
  47219. var self=this;
  47220. self["@selector"]=aString;
  47221. return self;
  47222. },
  47223. //>>excludeStart("ide", pragmas.excludeIdeData);
  47224. args: ["aString"],
  47225. source: "selector: aString\x0a\x09selector := aString",
  47226. referencedClasses: [],
  47227. //>>excludeEnd("ide");
  47228. messageSends: []
  47229. }),
  47230. $globals.AIContext);
  47231. $core.addMethod(
  47232. $core.method({
  47233. selector: "sendIndexAt:",
  47234. protocol: 'accessing',
  47235. fn: function (aString){
  47236. var self=this;
  47237. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  47238. return $core.withContext(function($ctx1) {
  47239. //>>excludeEnd("ctx");
  47240. var $1;
  47241. $1=$recv(self._sendIndexes())._at_ifAbsent_(aString,(function(){
  47242. return (0);
  47243. }));
  47244. return $1;
  47245. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  47246. }, function($ctx1) {$ctx1.fill(self,"sendIndexAt:",{aString:aString},$globals.AIContext)});
  47247. //>>excludeEnd("ctx");
  47248. },
  47249. //>>excludeStart("ide", pragmas.excludeIdeData);
  47250. args: ["aString"],
  47251. source: "sendIndexAt: aString\x0a\x09^ self sendIndexes at: aString ifAbsent: [ 0 ]",
  47252. referencedClasses: [],
  47253. //>>excludeEnd("ide");
  47254. messageSends: ["at:ifAbsent:", "sendIndexes"]
  47255. }),
  47256. $globals.AIContext);
  47257. $core.addMethod(
  47258. $core.method({
  47259. selector: "sendIndexes",
  47260. protocol: 'accessing',
  47261. fn: function (){
  47262. var self=this;
  47263. function $Dictionary(){return $globals.Dictionary||(typeof Dictionary=="undefined"?nil:Dictionary)}
  47264. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  47265. return $core.withContext(function($ctx1) {
  47266. //>>excludeEnd("ctx");
  47267. var $2,$1,$receiver;
  47268. $2=self["@sendIndexes"];
  47269. if(($receiver = $2) == null || $receiver.isNil){
  47270. $1=$recv($Dictionary())._new();
  47271. } else {
  47272. $1=$2;
  47273. };
  47274. return $1;
  47275. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  47276. }, function($ctx1) {$ctx1.fill(self,"sendIndexes",{},$globals.AIContext)});
  47277. //>>excludeEnd("ctx");
  47278. },
  47279. //>>excludeStart("ide", pragmas.excludeIdeData);
  47280. args: [],
  47281. source: "sendIndexes\x0a\x09^ sendIndexes ifNil: [ Dictionary new ]",
  47282. referencedClasses: ["Dictionary"],
  47283. //>>excludeEnd("ide");
  47284. messageSends: ["ifNil:", "new"]
  47285. }),
  47286. $globals.AIContext);
  47287. $core.addMethod(
  47288. $core.method({
  47289. selector: "sendIndexes:",
  47290. protocol: 'accessing',
  47291. fn: function (aDictionary){
  47292. var self=this;
  47293. self["@sendIndexes"]=aDictionary;
  47294. return self;
  47295. },
  47296. //>>excludeStart("ide", pragmas.excludeIdeData);
  47297. args: ["aDictionary"],
  47298. source: "sendIndexes: aDictionary\x0a\x09sendIndexes := aDictionary",
  47299. referencedClasses: [],
  47300. //>>excludeEnd("ide");
  47301. messageSends: []
  47302. }),
  47303. $globals.AIContext);
  47304. $core.addMethod(
  47305. $core.method({
  47306. selector: "setupInterpreter:",
  47307. protocol: 'interpreting',
  47308. fn: function (anInterpreter){
  47309. var self=this;
  47310. var currentNode;
  47311. function $ASTPCNodeVisitor(){return $globals.ASTPCNodeVisitor||(typeof ASTPCNodeVisitor=="undefined"?nil:ASTPCNodeVisitor)}
  47312. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  47313. return $core.withContext(function($ctx1) {
  47314. //>>excludeEnd("ctx");
  47315. var $1,$2,$3,$4,$5,$8,$7,$6,$receiver;
  47316. $1=$recv($ASTPCNodeVisitor())._new();
  47317. $recv($1)._selector_(self._evaluatedSelector());
  47318. $recv($1)._context_(self);
  47319. $2=$1;
  47320. $3=self._ast();
  47321. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  47322. $ctx1.sendIdx["ast"]=1;
  47323. //>>excludeEnd("ctx");
  47324. $recv($2)._visit_($3);
  47325. $4=$recv($1)._currentNode();
  47326. currentNode=$4;
  47327. $5=$recv(self._ast())._sequenceNode();
  47328. if(($receiver = $5) == null || $receiver.isNil){
  47329. $5;
  47330. } else {
  47331. var sequence;
  47332. sequence=$receiver;
  47333. $recv($recv(sequence)._temps())._do_((function(each){
  47334. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  47335. return $core.withContext(function($ctx2) {
  47336. //>>excludeEnd("ctx");
  47337. return self._defineLocal_(each);
  47338. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  47339. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,2)});
  47340. //>>excludeEnd("ctx");
  47341. }));
  47342. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  47343. $ctx1.sendIdx["do:"]=1;
  47344. //>>excludeEnd("ctx");
  47345. };
  47346. $recv(anInterpreter)._node_(currentNode);
  47347. $8=self._innerContext();
  47348. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  47349. $ctx1.sendIdx["innerContext"]=1;
  47350. //>>excludeEnd("ctx");
  47351. $7=$recv($8)._arguments();
  47352. $6=$recv($7)._reversed();
  47353. $recv($6)._do_((function(each){
  47354. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  47355. return $core.withContext(function($ctx2) {
  47356. //>>excludeEnd("ctx");
  47357. return $recv(anInterpreter)._push_(each);
  47358. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  47359. $ctx2.sendIdx["push:"]=1;
  47360. //>>excludeEnd("ctx");
  47361. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  47362. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,3)});
  47363. //>>excludeEnd("ctx");
  47364. }));
  47365. $recv(anInterpreter)._push_($recv(self._innerContext())._receiver());
  47366. return self;
  47367. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  47368. }, function($ctx1) {$ctx1.fill(self,"setupInterpreter:",{anInterpreter:anInterpreter,currentNode:currentNode},$globals.AIContext)});
  47369. //>>excludeEnd("ctx");
  47370. },
  47371. //>>excludeStart("ide", pragmas.excludeIdeData);
  47372. args: ["anInterpreter"],
  47373. 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\x09context: self;\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)",
  47374. referencedClasses: ["ASTPCNodeVisitor"],
  47375. //>>excludeEnd("ide");
  47376. messageSends: ["selector:", "new", "evaluatedSelector", "context:", "visit:", "ast", "currentNode", "ifNotNil:", "sequenceNode", "do:", "temps", "defineLocal:", "node:", "reversed", "arguments", "innerContext", "push:", "receiver"]
  47377. }),
  47378. $globals.AIContext);
  47379. $core.addMethod(
  47380. $core.method({
  47381. selector: "supercall",
  47382. protocol: 'interpreting',
  47383. fn: function (){
  47384. var self=this;
  47385. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  47386. return $core.withContext(function($ctx1) {
  47387. //>>excludeEnd("ctx");
  47388. var $2,$1,$receiver;
  47389. $2=self["@supercall"];
  47390. if(($receiver = $2) == null || $receiver.isNil){
  47391. $1=false;
  47392. } else {
  47393. $1=$2;
  47394. };
  47395. return $1;
  47396. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  47397. }, function($ctx1) {$ctx1.fill(self,"supercall",{},$globals.AIContext)});
  47398. //>>excludeEnd("ctx");
  47399. },
  47400. //>>excludeStart("ide", pragmas.excludeIdeData);
  47401. args: [],
  47402. source: "supercall\x0a\x09^ supercall ifNil: [ false ]",
  47403. referencedClasses: [],
  47404. //>>excludeEnd("ide");
  47405. messageSends: ["ifNil:"]
  47406. }),
  47407. $globals.AIContext);
  47408. $core.addMethod(
  47409. $core.method({
  47410. selector: "supercall:",
  47411. protocol: 'interpreting',
  47412. fn: function (aBoolean){
  47413. var self=this;
  47414. self["@supercall"]=aBoolean;
  47415. return self;
  47416. },
  47417. //>>excludeStart("ide", pragmas.excludeIdeData);
  47418. args: ["aBoolean"],
  47419. source: "supercall: aBoolean\x0a\x09supercall := aBoolean",
  47420. referencedClasses: [],
  47421. //>>excludeEnd("ide");
  47422. messageSends: []
  47423. }),
  47424. $globals.AIContext);
  47425. $core.addMethod(
  47426. $core.method({
  47427. selector: "variableNotFound",
  47428. protocol: 'error handling',
  47429. fn: function (){
  47430. var self=this;
  47431. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  47432. return $core.withContext(function($ctx1) {
  47433. //>>excludeEnd("ctx");
  47434. self._error_("Variable missing");
  47435. return self;
  47436. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  47437. }, function($ctx1) {$ctx1.fill(self,"variableNotFound",{},$globals.AIContext)});
  47438. //>>excludeEnd("ctx");
  47439. },
  47440. //>>excludeStart("ide", pragmas.excludeIdeData);
  47441. args: [],
  47442. source: "variableNotFound\x0a\x09\x22Error thrown whenever a variable lookup fails\x22\x0a\x09\x0a\x09self error: 'Variable missing'",
  47443. referencedClasses: [],
  47444. //>>excludeEnd("ide");
  47445. messageSends: ["error:"]
  47446. }),
  47447. $globals.AIContext);
  47448. $core.addMethod(
  47449. $core.method({
  47450. selector: "fromMethodContext:",
  47451. protocol: 'instance creation',
  47452. fn: function (aMethodContext){
  47453. var self=this;
  47454. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  47455. return $core.withContext(function($ctx1) {
  47456. //>>excludeEnd("ctx");
  47457. var $2,$3,$1;
  47458. $2=self._new();
  47459. $recv($2)._initializeFromMethodContext_(aMethodContext);
  47460. $3=$recv($2)._yourself();
  47461. $1=$3;
  47462. return $1;
  47463. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  47464. }, function($ctx1) {$ctx1.fill(self,"fromMethodContext:",{aMethodContext:aMethodContext},$globals.AIContext.klass)});
  47465. //>>excludeEnd("ctx");
  47466. },
  47467. //>>excludeStart("ide", pragmas.excludeIdeData);
  47468. args: ["aMethodContext"],
  47469. source: "fromMethodContext: aMethodContext\x0a\x09^ self new\x0a\x09\x09initializeFromMethodContext: aMethodContext;\x0a\x09\x09yourself",
  47470. referencedClasses: [],
  47471. //>>excludeEnd("ide");
  47472. messageSends: ["initializeFromMethodContext:", "new", "yourself"]
  47473. }),
  47474. $globals.AIContext.klass);
  47475. $core.addClass('AISemanticAnalyzer', $globals.SemanticAnalyzer, ['context'], 'Compiler-Interpreter');
  47476. //>>excludeStart("ide", pragmas.excludeIdeData);
  47477. $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.";
  47478. //>>excludeEnd("ide");
  47479. $core.addMethod(
  47480. $core.method({
  47481. selector: "context",
  47482. protocol: 'accessing',
  47483. fn: function (){
  47484. var self=this;
  47485. var $1;
  47486. $1=self["@context"];
  47487. return $1;
  47488. },
  47489. //>>excludeStart("ide", pragmas.excludeIdeData);
  47490. args: [],
  47491. source: "context\x0a\x09^ context",
  47492. referencedClasses: [],
  47493. //>>excludeEnd("ide");
  47494. messageSends: []
  47495. }),
  47496. $globals.AISemanticAnalyzer);
  47497. $core.addMethod(
  47498. $core.method({
  47499. selector: "context:",
  47500. protocol: 'accessing',
  47501. fn: function (anAIContext){
  47502. var self=this;
  47503. self["@context"]=anAIContext;
  47504. return self;
  47505. },
  47506. //>>excludeStart("ide", pragmas.excludeIdeData);
  47507. args: ["anAIContext"],
  47508. source: "context: anAIContext\x0a\x09context := anAIContext",
  47509. referencedClasses: [],
  47510. //>>excludeEnd("ide");
  47511. messageSends: []
  47512. }),
  47513. $globals.AISemanticAnalyzer);
  47514. $core.addMethod(
  47515. $core.method({
  47516. selector: "visitVariableNode:",
  47517. protocol: 'visiting',
  47518. fn: function (aNode){
  47519. var self=this;
  47520. function $ASTContextVar(){return $globals.ASTContextVar||(typeof ASTContextVar=="undefined"?nil:ASTContextVar)}
  47521. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  47522. return $core.withContext(function($ctx1) {
  47523. //>>excludeEnd("ctx");
  47524. var $1;
  47525. var $early={};
  47526. try {
  47527. $recv(self._context())._localAt_ifAbsent_($recv(aNode)._value(),(function(){
  47528. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  47529. return $core.withContext(function($ctx2) {
  47530. //>>excludeEnd("ctx");
  47531. $1=(
  47532. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  47533. $ctx2.supercall = true,
  47534. //>>excludeEnd("ctx");
  47535. $globals.AISemanticAnalyzer.superclass.fn.prototype._visitVariableNode_.apply($recv(self), [aNode]));
  47536. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  47537. $ctx2.supercall = false;
  47538. //>>excludeEnd("ctx");;
  47539. throw $early=[$1];
  47540. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  47541. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  47542. //>>excludeEnd("ctx");
  47543. }));
  47544. $recv(aNode)._binding_($recv($ASTContextVar())._new());
  47545. return self;
  47546. }
  47547. catch(e) {if(e===$early)return e[0]; throw e}
  47548. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  47549. }, function($ctx1) {$ctx1.fill(self,"visitVariableNode:",{aNode:aNode},$globals.AISemanticAnalyzer)});
  47550. //>>excludeEnd("ctx");
  47551. },
  47552. //>>excludeStart("ide", pragmas.excludeIdeData);
  47553. args: ["aNode"],
  47554. source: "visitVariableNode: aNode\x0a\x09self context \x0a\x09\x09localAt: aNode value \x0a\x09\x09ifAbsent: [ ^ super visitVariableNode: aNode ].\x0a\x0a\x09aNode binding: ASTContextVar new",
  47555. referencedClasses: ["ASTContextVar"],
  47556. //>>excludeEnd("ide");
  47557. messageSends: ["localAt:ifAbsent:", "context", "value", "visitVariableNode:", "binding:", "new"]
  47558. }),
  47559. $globals.AISemanticAnalyzer);
  47560. $core.addClass('ASTContextVar', $globals.ScopeVar, ['context'], 'Compiler-Interpreter');
  47561. //>>excludeStart("ide", pragmas.excludeIdeData);
  47562. $globals.ASTContextVar.comment="I am a variable defined in a `context`.";
  47563. //>>excludeEnd("ide");
  47564. $core.addMethod(
  47565. $core.method({
  47566. selector: "context",
  47567. protocol: 'accessing',
  47568. fn: function (){
  47569. var self=this;
  47570. var $1;
  47571. $1=self["@context"];
  47572. return $1;
  47573. },
  47574. //>>excludeStart("ide", pragmas.excludeIdeData);
  47575. args: [],
  47576. source: "context\x0a\x09^ context",
  47577. referencedClasses: [],
  47578. //>>excludeEnd("ide");
  47579. messageSends: []
  47580. }),
  47581. $globals.ASTContextVar);
  47582. $core.addMethod(
  47583. $core.method({
  47584. selector: "context:",
  47585. protocol: 'accessing',
  47586. fn: function (anObject){
  47587. var self=this;
  47588. self["@context"]=anObject;
  47589. return self;
  47590. },
  47591. //>>excludeStart("ide", pragmas.excludeIdeData);
  47592. args: ["anObject"],
  47593. source: "context: anObject\x0a\x09context := anObject",
  47594. referencedClasses: [],
  47595. //>>excludeEnd("ide");
  47596. messageSends: []
  47597. }),
  47598. $globals.ASTContextVar);
  47599. $core.addClass('ASTDebugger', $globals.Object, ['interpreter', 'context', 'result'], 'Compiler-Interpreter');
  47600. //>>excludeStart("ide", pragmas.excludeIdeData);
  47601. $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.";
  47602. //>>excludeEnd("ide");
  47603. $core.addMethod(
  47604. $core.method({
  47605. selector: "atEnd",
  47606. protocol: 'testing',
  47607. fn: function (){
  47608. var self=this;
  47609. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  47610. return $core.withContext(function($ctx1) {
  47611. //>>excludeEnd("ctx");
  47612. var $1,$2,$receiver;
  47613. $1=self._context();
  47614. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  47615. $ctx1.sendIdx["context"]=1;
  47616. //>>excludeEnd("ctx");
  47617. if(($receiver = $1) == null || $receiver.isNil){
  47618. return true;
  47619. } else {
  47620. $1;
  47621. };
  47622. $2=$recv($recv(self._interpreter())._atEnd())._and_((function(){
  47623. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  47624. return $core.withContext(function($ctx2) {
  47625. //>>excludeEnd("ctx");
  47626. return $recv(self._context())._isTopContext();
  47627. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  47628. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
  47629. //>>excludeEnd("ctx");
  47630. }));
  47631. return $2;
  47632. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  47633. }, function($ctx1) {$ctx1.fill(self,"atEnd",{},$globals.ASTDebugger)});
  47634. //>>excludeEnd("ctx");
  47635. },
  47636. //>>excludeStart("ide", pragmas.excludeIdeData);
  47637. args: [],
  47638. source: "atEnd\x09\x0a\x09self context ifNil: [ ^ true ].\x0a\x09\x0a\x09^ self interpreter atEnd and: [ \x0a\x09\x09self context isTopContext ]",
  47639. referencedClasses: [],
  47640. //>>excludeEnd("ide");
  47641. messageSends: ["ifNil:", "context", "and:", "atEnd", "interpreter", "isTopContext"]
  47642. }),
  47643. $globals.ASTDebugger);
  47644. $core.addMethod(
  47645. $core.method({
  47646. selector: "context",
  47647. protocol: 'accessing',
  47648. fn: function (){
  47649. var self=this;
  47650. var $1;
  47651. $1=self["@context"];
  47652. return $1;
  47653. },
  47654. //>>excludeStart("ide", pragmas.excludeIdeData);
  47655. args: [],
  47656. source: "context\x0a\x09^ context",
  47657. referencedClasses: [],
  47658. //>>excludeEnd("ide");
  47659. messageSends: []
  47660. }),
  47661. $globals.ASTDebugger);
  47662. $core.addMethod(
  47663. $core.method({
  47664. selector: "context:",
  47665. protocol: 'accessing',
  47666. fn: function (aContext){
  47667. var self=this;
  47668. self["@context"]=aContext;
  47669. return self;
  47670. },
  47671. //>>excludeStart("ide", pragmas.excludeIdeData);
  47672. args: ["aContext"],
  47673. source: "context: aContext\x0a\x09context := aContext",
  47674. referencedClasses: [],
  47675. //>>excludeEnd("ide");
  47676. messageSends: []
  47677. }),
  47678. $globals.ASTDebugger);
  47679. $core.addMethod(
  47680. $core.method({
  47681. selector: "flushInnerContexts",
  47682. protocol: 'actions',
  47683. fn: function (){
  47684. var self=this;
  47685. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  47686. return $core.withContext(function($ctx1) {
  47687. //>>excludeEnd("ctx");
  47688. var $1,$receiver;
  47689. $1=self._context();
  47690. if(($receiver = $1) == null || $receiver.isNil){
  47691. $1;
  47692. } else {
  47693. var cxt;
  47694. cxt=$receiver;
  47695. $recv(cxt)._innerContext_(nil);
  47696. };
  47697. return self;
  47698. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  47699. }, function($ctx1) {$ctx1.fill(self,"flushInnerContexts",{},$globals.ASTDebugger)});
  47700. //>>excludeEnd("ctx");
  47701. },
  47702. //>>excludeStart("ide", pragmas.excludeIdeData);
  47703. args: [],
  47704. 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 ]",
  47705. referencedClasses: [],
  47706. //>>excludeEnd("ide");
  47707. messageSends: ["ifNotNil:", "context", "innerContext:"]
  47708. }),
  47709. $globals.ASTDebugger);
  47710. $core.addMethod(
  47711. $core.method({
  47712. selector: "interpreter",
  47713. protocol: 'accessing',
  47714. fn: function (){
  47715. var self=this;
  47716. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  47717. return $core.withContext(function($ctx1) {
  47718. //>>excludeEnd("ctx");
  47719. var $2,$1,$receiver;
  47720. $2=self._context();
  47721. if(($receiver = $2) == null || $receiver.isNil){
  47722. $1=$2;
  47723. } else {
  47724. var ctx;
  47725. ctx=$receiver;
  47726. $1=$recv(ctx)._interpreter();
  47727. };
  47728. return $1;
  47729. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  47730. }, function($ctx1) {$ctx1.fill(self,"interpreter",{},$globals.ASTDebugger)});
  47731. //>>excludeEnd("ctx");
  47732. },
  47733. //>>excludeStart("ide", pragmas.excludeIdeData);
  47734. args: [],
  47735. source: "interpreter\x0a\x09^ self context ifNotNil: [ :ctx | \x0a\x09\x09ctx interpreter ]",
  47736. referencedClasses: [],
  47737. //>>excludeEnd("ide");
  47738. messageSends: ["ifNotNil:", "context", "interpreter"]
  47739. }),
  47740. $globals.ASTDebugger);
  47741. $core.addMethod(
  47742. $core.method({
  47743. selector: "method",
  47744. protocol: 'accessing',
  47745. fn: function (){
  47746. var self=this;
  47747. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  47748. return $core.withContext(function($ctx1) {
  47749. //>>excludeEnd("ctx");
  47750. var $1;
  47751. $1=$recv(self._context())._method();
  47752. return $1;
  47753. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  47754. }, function($ctx1) {$ctx1.fill(self,"method",{},$globals.ASTDebugger)});
  47755. //>>excludeEnd("ctx");
  47756. },
  47757. //>>excludeStart("ide", pragmas.excludeIdeData);
  47758. args: [],
  47759. source: "method\x0a\x09^ self context method",
  47760. referencedClasses: [],
  47761. //>>excludeEnd("ide");
  47762. messageSends: ["method", "context"]
  47763. }),
  47764. $globals.ASTDebugger);
  47765. $core.addMethod(
  47766. $core.method({
  47767. selector: "node",
  47768. protocol: 'accessing',
  47769. fn: function (){
  47770. var self=this;
  47771. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  47772. return $core.withContext(function($ctx1) {
  47773. //>>excludeEnd("ctx");
  47774. var $2,$1,$receiver;
  47775. $2=self._interpreter();
  47776. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  47777. $ctx1.sendIdx["interpreter"]=1;
  47778. //>>excludeEnd("ctx");
  47779. if(($receiver = $2) == null || $receiver.isNil){
  47780. $1=$2;
  47781. } else {
  47782. $1=$recv(self._interpreter())._node();
  47783. };
  47784. return $1;
  47785. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  47786. }, function($ctx1) {$ctx1.fill(self,"node",{},$globals.ASTDebugger)});
  47787. //>>excludeEnd("ctx");
  47788. },
  47789. //>>excludeStart("ide", pragmas.excludeIdeData);
  47790. args: [],
  47791. source: "node\x0a\x09^ self interpreter ifNotNil: [\x0a\x09\x09self interpreter node ]",
  47792. referencedClasses: [],
  47793. //>>excludeEnd("ide");
  47794. messageSends: ["ifNotNil:", "interpreter", "node"]
  47795. }),
  47796. $globals.ASTDebugger);
  47797. $core.addMethod(
  47798. $core.method({
  47799. selector: "onStep",
  47800. protocol: 'private',
  47801. fn: function (){
  47802. var self=this;
  47803. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  47804. return $core.withContext(function($ctx1) {
  47805. //>>excludeEnd("ctx");
  47806. var $1,$3,$2,$4,$6,$5,$receiver;
  47807. $1=self._interpreter();
  47808. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  47809. $ctx1.sendIdx["interpreter"]=1;
  47810. //>>excludeEnd("ctx");
  47811. self["@result"]=$recv($1)._result();
  47812. $3=self._interpreter();
  47813. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  47814. $ctx1.sendIdx["interpreter"]=2;
  47815. //>>excludeEnd("ctx");
  47816. $2=$recv($3)._atEnd();
  47817. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  47818. $ctx1.sendIdx["atEnd"]=1;
  47819. //>>excludeEnd("ctx");
  47820. if($core.assert($2)){
  47821. $4=$recv(self._context())._outerContext();
  47822. if(($receiver = $4) == null || $receiver.isNil){
  47823. $4;
  47824. } else {
  47825. var outerContext;
  47826. outerContext=$receiver;
  47827. self._context_(outerContext);
  47828. };
  47829. $6=self._interpreter();
  47830. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  47831. $ctx1.sendIdx["interpreter"]=3;
  47832. //>>excludeEnd("ctx");
  47833. $5=$recv($6)._atEnd();
  47834. if(!$core.assert($5)){
  47835. $recv(self._interpreter())._skip();
  47836. };
  47837. };
  47838. self._flushInnerContexts();
  47839. return self;
  47840. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  47841. }, function($ctx1) {$ctx1.fill(self,"onStep",{},$globals.ASTDebugger)});
  47842. //>>excludeEnd("ctx");
  47843. },
  47844. //>>excludeStart("ide", pragmas.excludeIdeData);
  47845. args: [],
  47846. 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",
  47847. referencedClasses: [],
  47848. //>>excludeEnd("ide");
  47849. messageSends: ["result", "interpreter", "ifTrue:", "atEnd", "ifNotNil:", "outerContext", "context", "context:", "ifFalse:", "skip", "flushInnerContexts"]
  47850. }),
  47851. $globals.ASTDebugger);
  47852. $core.addMethod(
  47853. $core.method({
  47854. selector: "proceed",
  47855. protocol: 'stepping',
  47856. fn: function (){
  47857. var self=this;
  47858. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  47859. return $core.withContext(function($ctx1) {
  47860. //>>excludeEnd("ctx");
  47861. $recv((function(){
  47862. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  47863. return $core.withContext(function($ctx2) {
  47864. //>>excludeEnd("ctx");
  47865. return self._atEnd();
  47866. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  47867. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  47868. //>>excludeEnd("ctx");
  47869. }))._whileFalse_((function(){
  47870. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  47871. return $core.withContext(function($ctx2) {
  47872. //>>excludeEnd("ctx");
  47873. return self._stepOver();
  47874. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  47875. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
  47876. //>>excludeEnd("ctx");
  47877. }));
  47878. return self;
  47879. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  47880. }, function($ctx1) {$ctx1.fill(self,"proceed",{},$globals.ASTDebugger)});
  47881. //>>excludeEnd("ctx");
  47882. },
  47883. //>>excludeStart("ide", pragmas.excludeIdeData);
  47884. args: [],
  47885. source: "proceed\x0a\x09[ self atEnd ] whileFalse: [ self stepOver ]",
  47886. referencedClasses: [],
  47887. //>>excludeEnd("ide");
  47888. messageSends: ["whileFalse:", "atEnd", "stepOver"]
  47889. }),
  47890. $globals.ASTDebugger);
  47891. $core.addMethod(
  47892. $core.method({
  47893. selector: "restart",
  47894. protocol: 'stepping',
  47895. fn: function (){
  47896. var self=this;
  47897. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  47898. return $core.withContext(function($ctx1) {
  47899. //>>excludeEnd("ctx");
  47900. $recv(self._interpreter())._restart();
  47901. self._flushInnerContexts();
  47902. return self;
  47903. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  47904. }, function($ctx1) {$ctx1.fill(self,"restart",{},$globals.ASTDebugger)});
  47905. //>>excludeEnd("ctx");
  47906. },
  47907. //>>excludeStart("ide", pragmas.excludeIdeData);
  47908. args: [],
  47909. source: "restart\x0a\x09self interpreter restart.\x0a\x09self flushInnerContexts",
  47910. referencedClasses: [],
  47911. //>>excludeEnd("ide");
  47912. messageSends: ["restart", "interpreter", "flushInnerContexts"]
  47913. }),
  47914. $globals.ASTDebugger);
  47915. $core.addMethod(
  47916. $core.method({
  47917. selector: "result",
  47918. protocol: 'accessing',
  47919. fn: function (){
  47920. var self=this;
  47921. var $1;
  47922. $1=self["@result"];
  47923. return $1;
  47924. },
  47925. //>>excludeStart("ide", pragmas.excludeIdeData);
  47926. args: [],
  47927. source: "result\x0a\x09^ result",
  47928. referencedClasses: [],
  47929. //>>excludeEnd("ide");
  47930. messageSends: []
  47931. }),
  47932. $globals.ASTDebugger);
  47933. $core.addMethod(
  47934. $core.method({
  47935. selector: "stepInto",
  47936. protocol: 'stepping',
  47937. fn: function (){
  47938. var self=this;
  47939. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  47940. return $core.withContext(function($ctx1) {
  47941. //>>excludeEnd("ctx");
  47942. self._shouldBeImplemented();
  47943. return self;
  47944. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  47945. }, function($ctx1) {$ctx1.fill(self,"stepInto",{},$globals.ASTDebugger)});
  47946. //>>excludeEnd("ctx");
  47947. },
  47948. //>>excludeStart("ide", pragmas.excludeIdeData);
  47949. args: [],
  47950. source: "stepInto\x0a\x09self shouldBeImplemented",
  47951. referencedClasses: [],
  47952. //>>excludeEnd("ide");
  47953. messageSends: ["shouldBeImplemented"]
  47954. }),
  47955. $globals.ASTDebugger);
  47956. $core.addMethod(
  47957. $core.method({
  47958. selector: "stepOver",
  47959. protocol: 'stepping',
  47960. fn: function (){
  47961. var self=this;
  47962. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  47963. return $core.withContext(function($ctx1) {
  47964. //>>excludeEnd("ctx");
  47965. var $1,$2;
  47966. $1=$recv(self._context())._isTopContext();
  47967. if($core.assert($1)){
  47968. $recv(self._interpreter())._stepOver();
  47969. } else {
  47970. $2=self._interpreter();
  47971. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  47972. $ctx1.sendIdx["interpreter"]=1;
  47973. //>>excludeEnd("ctx");
  47974. $recv($2)._skip();
  47975. };
  47976. self._onStep();
  47977. return self;
  47978. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  47979. }, function($ctx1) {$ctx1.fill(self,"stepOver",{},$globals.ASTDebugger)});
  47980. //>>excludeEnd("ctx");
  47981. },
  47982. //>>excludeStart("ide", pragmas.excludeIdeData);
  47983. args: [],
  47984. source: "stepOver\x0a\x09self context isTopContext \x0a\x09\x09ifFalse: [ self interpreter skip ]\x0a\x09\x09ifTrue: [ self interpreter stepOver ].\x0a\x09self onStep",
  47985. referencedClasses: [],
  47986. //>>excludeEnd("ide");
  47987. messageSends: ["ifFalse:ifTrue:", "isTopContext", "context", "skip", "interpreter", "stepOver", "onStep"]
  47988. }),
  47989. $globals.ASTDebugger);
  47990. $core.addMethod(
  47991. $core.method({
  47992. selector: "context:",
  47993. protocol: 'instance creation',
  47994. fn: function (aContext){
  47995. var self=this;
  47996. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  47997. return $core.withContext(function($ctx1) {
  47998. //>>excludeEnd("ctx");
  47999. var $2,$3,$1;
  48000. $2=self._new();
  48001. $recv($2)._context_(aContext);
  48002. $3=$recv($2)._yourself();
  48003. $1=$3;
  48004. return $1;
  48005. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  48006. }, function($ctx1) {$ctx1.fill(self,"context:",{aContext:aContext},$globals.ASTDebugger.klass)});
  48007. //>>excludeEnd("ctx");
  48008. },
  48009. //>>excludeStart("ide", pragmas.excludeIdeData);
  48010. args: ["aContext"],
  48011. source: "context: aContext\x0a\x09^ self new\x0a\x09\x09context: aContext;\x0a\x09\x09yourself",
  48012. referencedClasses: [],
  48013. //>>excludeEnd("ide");
  48014. messageSends: ["context:", "new", "yourself"]
  48015. }),
  48016. $globals.ASTDebugger.klass);
  48017. $core.addClass('ASTInterpreter', $globals.NodeVisitor, ['node', 'context', 'stack', 'returnValue', 'returned', 'forceAtEnd'], 'Compiler-Interpreter');
  48018. //>>excludeStart("ide", pragmas.excludeIdeData);
  48019. $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";
  48020. //>>excludeEnd("ide");
  48021. $core.addMethod(
  48022. $core.method({
  48023. selector: "assign:to:",
  48024. protocol: 'private',
  48025. fn: function (aNode,anObject){
  48026. var self=this;
  48027. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  48028. return $core.withContext(function($ctx1) {
  48029. //>>excludeEnd("ctx");
  48030. var $1,$3,$2,$4;
  48031. $1=$recv($recv(aNode)._binding())._isInstanceVar();
  48032. if($core.assert($1)){
  48033. $3=self._context();
  48034. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  48035. $ctx1.sendIdx["context"]=1;
  48036. //>>excludeEnd("ctx");
  48037. $2=$recv($3)._receiver();
  48038. $4=$recv(aNode)._value();
  48039. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  48040. $ctx1.sendIdx["value"]=1;
  48041. //>>excludeEnd("ctx");
  48042. $recv($2)._instVarAt_put_($4,anObject);
  48043. } else {
  48044. $recv(self._context())._localAt_put_($recv(aNode)._value(),anObject);
  48045. };
  48046. return self;
  48047. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  48048. }, function($ctx1) {$ctx1.fill(self,"assign:to:",{aNode:aNode,anObject:anObject},$globals.ASTInterpreter)});
  48049. //>>excludeEnd("ctx");
  48050. },
  48051. //>>excludeStart("ide", pragmas.excludeIdeData);
  48052. args: ["aNode", "anObject"],
  48053. source: "assign: aNode to: anObject\x0a\x09aNode binding isInstanceVar\x0a\x09\x09ifTrue: [ self context receiver instVarAt: aNode value put: anObject ]\x0a\x09\x09ifFalse: [ self context localAt: aNode value put: anObject ]",
  48054. referencedClasses: [],
  48055. //>>excludeEnd("ide");
  48056. messageSends: ["ifTrue:ifFalse:", "isInstanceVar", "binding", "instVarAt:put:", "receiver", "context", "value", "localAt:put:"]
  48057. }),
  48058. $globals.ASTInterpreter);
  48059. $core.addMethod(
  48060. $core.method({
  48061. selector: "atEnd",
  48062. protocol: 'testing',
  48063. fn: function (){
  48064. var self=this;
  48065. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  48066. return $core.withContext(function($ctx1) {
  48067. //>>excludeEnd("ctx");
  48068. var $1,$2;
  48069. $1=self["@forceAtEnd"];
  48070. if($core.assert($1)){
  48071. return true;
  48072. };
  48073. $2=$recv(self._hasReturned())._or_((function(){
  48074. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  48075. return $core.withContext(function($ctx2) {
  48076. //>>excludeEnd("ctx");
  48077. return $recv(self._node())._isNil();
  48078. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  48079. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
  48080. //>>excludeEnd("ctx");
  48081. }));
  48082. return $2;
  48083. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  48084. }, function($ctx1) {$ctx1.fill(self,"atEnd",{},$globals.ASTInterpreter)});
  48085. //>>excludeEnd("ctx");
  48086. },
  48087. //>>excludeStart("ide", pragmas.excludeIdeData);
  48088. args: [],
  48089. source: "atEnd\x0a\x09forceAtEnd ifTrue: [ ^ true ].\x0a\x09\x0a\x09^ self hasReturned or: [ self node isNil ]",
  48090. referencedClasses: [],
  48091. //>>excludeEnd("ide");
  48092. messageSends: ["ifTrue:", "or:", "hasReturned", "isNil", "node"]
  48093. }),
  48094. $globals.ASTInterpreter);
  48095. $core.addMethod(
  48096. $core.method({
  48097. selector: "context",
  48098. protocol: 'accessing',
  48099. fn: function (){
  48100. var self=this;
  48101. var $1;
  48102. $1=self["@context"];
  48103. return $1;
  48104. },
  48105. //>>excludeStart("ide", pragmas.excludeIdeData);
  48106. args: [],
  48107. source: "context\x0a\x09^ context",
  48108. referencedClasses: [],
  48109. //>>excludeEnd("ide");
  48110. messageSends: []
  48111. }),
  48112. $globals.ASTInterpreter);
  48113. $core.addMethod(
  48114. $core.method({
  48115. selector: "context:",
  48116. protocol: 'accessing',
  48117. fn: function (aContext){
  48118. var self=this;
  48119. self["@context"]=aContext;
  48120. return self;
  48121. },
  48122. //>>excludeStart("ide", pragmas.excludeIdeData);
  48123. args: ["aContext"],
  48124. source: "context: aContext\x0a\x09context := aContext",
  48125. referencedClasses: [],
  48126. //>>excludeEnd("ide");
  48127. messageSends: []
  48128. }),
  48129. $globals.ASTInterpreter);
  48130. $core.addMethod(
  48131. $core.method({
  48132. selector: "eval:",
  48133. protocol: 'private',
  48134. fn: function (aString){
  48135. var self=this;
  48136. var source,function_;
  48137. function $String(){return $globals.String||(typeof String=="undefined"?nil:String)}
  48138. function $Compiler(){return $globals.Compiler||(typeof Compiler=="undefined"?nil:Compiler)}
  48139. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  48140. return $core.withContext(function($ctx1) {
  48141. //>>excludeEnd("ctx");
  48142. var $3,$2,$1,$4,$5;
  48143. source=$recv($String())._streamContents_((function(str){
  48144. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  48145. return $core.withContext(function($ctx2) {
  48146. //>>excludeEnd("ctx");
  48147. $recv(str)._nextPutAll_("(function(");
  48148. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  48149. $ctx2.sendIdx["nextPutAll:"]=1;
  48150. //>>excludeEnd("ctx");
  48151. $3=self._context();
  48152. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  48153. $ctx2.sendIdx["context"]=1;
  48154. //>>excludeEnd("ctx");
  48155. $2=$recv($3)._locals();
  48156. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  48157. $ctx2.sendIdx["locals"]=1;
  48158. //>>excludeEnd("ctx");
  48159. $1=$recv($2)._keys();
  48160. $recv($1)._do_separatedBy_((function(each){
  48161. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  48162. return $core.withContext(function($ctx3) {
  48163. //>>excludeEnd("ctx");
  48164. return $recv(str)._nextPutAll_(each);
  48165. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  48166. $ctx3.sendIdx["nextPutAll:"]=2;
  48167. //>>excludeEnd("ctx");
  48168. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  48169. }, function($ctx3) {$ctx3.fillBlock({each:each},$ctx2,2)});
  48170. //>>excludeEnd("ctx");
  48171. }),(function(){
  48172. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  48173. return $core.withContext(function($ctx3) {
  48174. //>>excludeEnd("ctx");
  48175. return $recv(str)._nextPutAll_(",");
  48176. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  48177. $ctx3.sendIdx["nextPutAll:"]=3;
  48178. //>>excludeEnd("ctx");
  48179. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  48180. }, function($ctx3) {$ctx3.fillBlock({},$ctx2,3)});
  48181. //>>excludeEnd("ctx");
  48182. }));
  48183. $recv(str)._nextPutAll_("){ return (function() {");
  48184. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  48185. $ctx2.sendIdx["nextPutAll:"]=4;
  48186. //>>excludeEnd("ctx");
  48187. $recv(str)._nextPutAll_(aString);
  48188. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  48189. $ctx2.sendIdx["nextPutAll:"]=5;
  48190. //>>excludeEnd("ctx");
  48191. $4=$recv(str)._nextPutAll_("})() })");
  48192. return $4;
  48193. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  48194. }, function($ctx2) {$ctx2.fillBlock({str:str},$ctx1,1)});
  48195. //>>excludeEnd("ctx");
  48196. }));
  48197. function_=$recv($recv($Compiler())._new())._eval_(source);
  48198. $5=$recv(function_)._valueWithPossibleArguments_($recv($recv(self._context())._locals())._values());
  48199. return $5;
  48200. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  48201. }, function($ctx1) {$ctx1.fill(self,"eval:",{aString:aString,source:source,function_:function_},$globals.ASTInterpreter)});
  48202. //>>excludeEnd("ctx");
  48203. },
  48204. //>>excludeStart("ide", pragmas.excludeIdeData);
  48205. args: ["aString"],
  48206. 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: '(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 new eval: source.\x0a\x09\x0a\x09^ function valueWithPossibleArguments: self context locals values",
  48207. referencedClasses: ["String", "Compiler"],
  48208. //>>excludeEnd("ide");
  48209. messageSends: ["streamContents:", "nextPutAll:", "do:separatedBy:", "keys", "locals", "context", "eval:", "new", "valueWithPossibleArguments:", "values"]
  48210. }),
  48211. $globals.ASTInterpreter);
  48212. $core.addMethod(
  48213. $core.method({
  48214. selector: "hasReturned",
  48215. protocol: 'testing',
  48216. fn: function (){
  48217. var self=this;
  48218. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  48219. return $core.withContext(function($ctx1) {
  48220. //>>excludeEnd("ctx");
  48221. var $2,$1,$receiver;
  48222. $2=self["@returned"];
  48223. if(($receiver = $2) == null || $receiver.isNil){
  48224. $1=false;
  48225. } else {
  48226. $1=$2;
  48227. };
  48228. return $1;
  48229. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  48230. }, function($ctx1) {$ctx1.fill(self,"hasReturned",{},$globals.ASTInterpreter)});
  48231. //>>excludeEnd("ctx");
  48232. },
  48233. //>>excludeStart("ide", pragmas.excludeIdeData);
  48234. args: [],
  48235. source: "hasReturned\x0a\x09^ returned ifNil: [ false ]",
  48236. referencedClasses: [],
  48237. //>>excludeEnd("ide");
  48238. messageSends: ["ifNil:"]
  48239. }),
  48240. $globals.ASTInterpreter);
  48241. $core.addMethod(
  48242. $core.method({
  48243. selector: "initialize",
  48244. protocol: 'initialization',
  48245. fn: function (){
  48246. var self=this;
  48247. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  48248. return $core.withContext(function($ctx1) {
  48249. //>>excludeEnd("ctx");
  48250. (
  48251. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  48252. $ctx1.supercall = true,
  48253. //>>excludeEnd("ctx");
  48254. $globals.ASTInterpreter.superclass.fn.prototype._initialize.apply($recv(self), []));
  48255. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  48256. $ctx1.supercall = false;
  48257. //>>excludeEnd("ctx");;
  48258. self["@forceAtEnd"]=false;
  48259. return self;
  48260. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  48261. }, function($ctx1) {$ctx1.fill(self,"initialize",{},$globals.ASTInterpreter)});
  48262. //>>excludeEnd("ctx");
  48263. },
  48264. //>>excludeStart("ide", pragmas.excludeIdeData);
  48265. args: [],
  48266. source: "initialize\x0a\x09super initialize.\x0a\x0a\x09forceAtEnd := false",
  48267. referencedClasses: [],
  48268. //>>excludeEnd("ide");
  48269. messageSends: ["initialize"]
  48270. }),
  48271. $globals.ASTInterpreter);
  48272. $core.addMethod(
  48273. $core.method({
  48274. selector: "interpret",
  48275. protocol: 'interpreting',
  48276. fn: function (){
  48277. var self=this;
  48278. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  48279. return $core.withContext(function($ctx1) {
  48280. //>>excludeEnd("ctx");
  48281. self._visit_(self._node());
  48282. return self;
  48283. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  48284. }, function($ctx1) {$ctx1.fill(self,"interpret",{},$globals.ASTInterpreter)});
  48285. //>>excludeEnd("ctx");
  48286. },
  48287. //>>excludeStart("ide", pragmas.excludeIdeData);
  48288. args: [],
  48289. source: "interpret\x0a\x09\x22Interpret the next node to be evaluated\x22\x0a\x09\x0a\x09self visit: self node",
  48290. referencedClasses: [],
  48291. //>>excludeEnd("ide");
  48292. messageSends: ["visit:", "node"]
  48293. }),
  48294. $globals.ASTInterpreter);
  48295. $core.addMethod(
  48296. $core.method({
  48297. selector: "interpret:",
  48298. protocol: 'interpreting',
  48299. fn: function (aNode){
  48300. var self=this;
  48301. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  48302. return $core.withContext(function($ctx1) {
  48303. //>>excludeEnd("ctx");
  48304. self._node_(aNode);
  48305. self._interpret();
  48306. return self;
  48307. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  48308. }, function($ctx1) {$ctx1.fill(self,"interpret:",{aNode:aNode},$globals.ASTInterpreter)});
  48309. //>>excludeEnd("ctx");
  48310. },
  48311. //>>excludeStart("ide", pragmas.excludeIdeData);
  48312. args: ["aNode"],
  48313. source: "interpret: aNode\x0a\x09self node: aNode.\x0a\x09self interpret",
  48314. referencedClasses: [],
  48315. //>>excludeEnd("ide");
  48316. messageSends: ["node:", "interpret"]
  48317. }),
  48318. $globals.ASTInterpreter);
  48319. $core.addMethod(
  48320. $core.method({
  48321. selector: "messageFromSendNode:arguments:",
  48322. protocol: 'private',
  48323. fn: function (aSendNode,aCollection){
  48324. var self=this;
  48325. function $Message(){return $globals.Message||(typeof Message=="undefined"?nil:Message)}
  48326. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  48327. return $core.withContext(function($ctx1) {
  48328. //>>excludeEnd("ctx");
  48329. var $2,$3,$1;
  48330. $2=$recv($Message())._new();
  48331. $recv($2)._selector_($recv(aSendNode)._selector());
  48332. $recv($2)._arguments_(aCollection);
  48333. $3=$recv($2)._yourself();
  48334. $1=$3;
  48335. return $1;
  48336. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  48337. }, function($ctx1) {$ctx1.fill(self,"messageFromSendNode:arguments:",{aSendNode:aSendNode,aCollection:aCollection},$globals.ASTInterpreter)});
  48338. //>>excludeEnd("ctx");
  48339. },
  48340. //>>excludeStart("ide", pragmas.excludeIdeData);
  48341. args: ["aSendNode", "aCollection"],
  48342. source: "messageFromSendNode: aSendNode arguments: aCollection\x0a\x09^ Message new\x0a\x09\x09selector: aSendNode selector;\x0a\x09\x09arguments: aCollection;\x0a\x09\x09yourself",
  48343. referencedClasses: ["Message"],
  48344. //>>excludeEnd("ide");
  48345. messageSends: ["selector:", "new", "selector", "arguments:", "yourself"]
  48346. }),
  48347. $globals.ASTInterpreter);
  48348. $core.addMethod(
  48349. $core.method({
  48350. selector: "messageNotUnderstood:receiver:",
  48351. protocol: 'private',
  48352. fn: function (aMessage,anObject){
  48353. var self=this;
  48354. function $MessageNotUnderstood(){return $globals.MessageNotUnderstood||(typeof MessageNotUnderstood=="undefined"?nil:MessageNotUnderstood)}
  48355. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  48356. return $core.withContext(function($ctx1) {
  48357. //>>excludeEnd("ctx");
  48358. var $1,$2;
  48359. $1=$recv($MessageNotUnderstood())._new();
  48360. $recv($1)._meesage_(aMessage);
  48361. $recv($1)._receiver_(anObject);
  48362. $2=$recv($1)._signal();
  48363. return self;
  48364. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  48365. }, function($ctx1) {$ctx1.fill(self,"messageNotUnderstood:receiver:",{aMessage:aMessage,anObject:anObject},$globals.ASTInterpreter)});
  48366. //>>excludeEnd("ctx");
  48367. },
  48368. //>>excludeStart("ide", pragmas.excludeIdeData);
  48369. args: ["aMessage", "anObject"],
  48370. source: "messageNotUnderstood: aMessage receiver: anObject\x0a\x09MessageNotUnderstood new\x0a\x09\x09meesage: aMessage;\x0a\x09\x09receiver: anObject;\x0a\x09\x09signal",
  48371. referencedClasses: ["MessageNotUnderstood"],
  48372. //>>excludeEnd("ide");
  48373. messageSends: ["meesage:", "new", "receiver:", "signal"]
  48374. }),
  48375. $globals.ASTInterpreter);
  48376. $core.addMethod(
  48377. $core.method({
  48378. selector: "next",
  48379. protocol: 'interpreting',
  48380. fn: function (){
  48381. var self=this;
  48382. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  48383. return $core.withContext(function($ctx1) {
  48384. //>>excludeEnd("ctx");
  48385. self._node_($recv(self._node())._nextNode());
  48386. return self;
  48387. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  48388. }, function($ctx1) {$ctx1.fill(self,"next",{},$globals.ASTInterpreter)});
  48389. //>>excludeEnd("ctx");
  48390. },
  48391. //>>excludeStart("ide", pragmas.excludeIdeData);
  48392. args: [],
  48393. source: "next\x0a\x09self node: self node nextNode",
  48394. referencedClasses: [],
  48395. //>>excludeEnd("ide");
  48396. messageSends: ["node:", "nextNode", "node"]
  48397. }),
  48398. $globals.ASTInterpreter);
  48399. $core.addMethod(
  48400. $core.method({
  48401. selector: "node",
  48402. protocol: 'accessing',
  48403. fn: function (){
  48404. var self=this;
  48405. var $1;
  48406. $1=self["@node"];
  48407. return $1;
  48408. },
  48409. //>>excludeStart("ide", pragmas.excludeIdeData);
  48410. args: [],
  48411. source: "node\x0a\x09\x22Answer the next node, ie the node to be evaluated in the next step\x22\x0a\x09\x0a\x09^ node",
  48412. referencedClasses: [],
  48413. //>>excludeEnd("ide");
  48414. messageSends: []
  48415. }),
  48416. $globals.ASTInterpreter);
  48417. $core.addMethod(
  48418. $core.method({
  48419. selector: "node:",
  48420. protocol: 'accessing',
  48421. fn: function (aNode){
  48422. var self=this;
  48423. self["@node"]=aNode;
  48424. return self;
  48425. },
  48426. //>>excludeStart("ide", pragmas.excludeIdeData);
  48427. args: ["aNode"],
  48428. source: "node: aNode\x0a\x09node := aNode",
  48429. referencedClasses: [],
  48430. //>>excludeEnd("ide");
  48431. messageSends: []
  48432. }),
  48433. $globals.ASTInterpreter);
  48434. $core.addMethod(
  48435. $core.method({
  48436. selector: "peek",
  48437. protocol: 'stack',
  48438. fn: function (){
  48439. var self=this;
  48440. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  48441. return $core.withContext(function($ctx1) {
  48442. //>>excludeEnd("ctx");
  48443. var $1,$2;
  48444. var $early={};
  48445. try {
  48446. $1=self._stack();
  48447. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  48448. $ctx1.sendIdx["stack"]=1;
  48449. //>>excludeEnd("ctx");
  48450. $recv($1)._ifEmpty_((function(){
  48451. throw $early=[nil];
  48452. }));
  48453. $2=$recv(self._stack())._last();
  48454. return $2;
  48455. }
  48456. catch(e) {if(e===$early)return e[0]; throw e}
  48457. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  48458. }, function($ctx1) {$ctx1.fill(self,"peek",{},$globals.ASTInterpreter)});
  48459. //>>excludeEnd("ctx");
  48460. },
  48461. //>>excludeStart("ide", pragmas.excludeIdeData);
  48462. args: [],
  48463. 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",
  48464. referencedClasses: [],
  48465. //>>excludeEnd("ide");
  48466. messageSends: ["ifEmpty:", "stack", "last"]
  48467. }),
  48468. $globals.ASTInterpreter);
  48469. $core.addMethod(
  48470. $core.method({
  48471. selector: "pop",
  48472. protocol: 'stack',
  48473. fn: function (){
  48474. var self=this;
  48475. var peekedValue;
  48476. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  48477. return $core.withContext(function($ctx1) {
  48478. //>>excludeEnd("ctx");
  48479. var $1;
  48480. peekedValue=self._peek();
  48481. $recv(self._stack())._removeLast();
  48482. $1=peekedValue;
  48483. return $1;
  48484. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  48485. }, function($ctx1) {$ctx1.fill(self,"pop",{peekedValue:peekedValue},$globals.ASTInterpreter)});
  48486. //>>excludeEnd("ctx");
  48487. },
  48488. //>>excludeStart("ide", pragmas.excludeIdeData);
  48489. args: [],
  48490. 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",
  48491. referencedClasses: [],
  48492. //>>excludeEnd("ide");
  48493. messageSends: ["peek", "removeLast", "stack"]
  48494. }),
  48495. $globals.ASTInterpreter);
  48496. $core.addMethod(
  48497. $core.method({
  48498. selector: "proceed",
  48499. protocol: 'interpreting',
  48500. fn: function (){
  48501. var self=this;
  48502. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  48503. return $core.withContext(function($ctx1) {
  48504. //>>excludeEnd("ctx");
  48505. $recv((function(){
  48506. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  48507. return $core.withContext(function($ctx2) {
  48508. //>>excludeEnd("ctx");
  48509. return self._atEnd();
  48510. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  48511. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  48512. //>>excludeEnd("ctx");
  48513. }))._whileFalse_((function(){
  48514. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  48515. return $core.withContext(function($ctx2) {
  48516. //>>excludeEnd("ctx");
  48517. return self._step();
  48518. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  48519. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
  48520. //>>excludeEnd("ctx");
  48521. }));
  48522. return self;
  48523. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  48524. }, function($ctx1) {$ctx1.fill(self,"proceed",{},$globals.ASTInterpreter)});
  48525. //>>excludeEnd("ctx");
  48526. },
  48527. //>>excludeStart("ide", pragmas.excludeIdeData);
  48528. args: [],
  48529. source: "proceed\x0a\x09\x22Eagerly evaluate the ast\x22\x0a\x09\x0a\x09[ self atEnd ] \x0a\x09\x09whileFalse: [ self step ]",
  48530. referencedClasses: [],
  48531. //>>excludeEnd("ide");
  48532. messageSends: ["whileFalse:", "atEnd", "step"]
  48533. }),
  48534. $globals.ASTInterpreter);
  48535. $core.addMethod(
  48536. $core.method({
  48537. selector: "push:",
  48538. protocol: 'stack',
  48539. fn: function (anObject){
  48540. var self=this;
  48541. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  48542. return $core.withContext(function($ctx1) {
  48543. //>>excludeEnd("ctx");
  48544. var $1;
  48545. $1=$recv(self._stack())._add_(anObject);
  48546. return $1;
  48547. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  48548. }, function($ctx1) {$ctx1.fill(self,"push:",{anObject:anObject},$globals.ASTInterpreter)});
  48549. //>>excludeEnd("ctx");
  48550. },
  48551. //>>excludeStart("ide", pragmas.excludeIdeData);
  48552. args: ["anObject"],
  48553. source: "push: anObject\x0a\x09\x22Push an object to the context stack\x22\x0a\x09\x0a\x09^ self stack add: anObject",
  48554. referencedClasses: [],
  48555. //>>excludeEnd("ide");
  48556. messageSends: ["add:", "stack"]
  48557. }),
  48558. $globals.ASTInterpreter);
  48559. $core.addMethod(
  48560. $core.method({
  48561. selector: "restart",
  48562. protocol: 'interpreting',
  48563. fn: function (){
  48564. var self=this;
  48565. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  48566. return $core.withContext(function($ctx1) {
  48567. //>>excludeEnd("ctx");
  48568. self._node_($recv($recv(self._context())._ast())._nextChild());
  48569. return self;
  48570. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  48571. }, function($ctx1) {$ctx1.fill(self,"restart",{},$globals.ASTInterpreter)});
  48572. //>>excludeEnd("ctx");
  48573. },
  48574. //>>excludeStart("ide", pragmas.excludeIdeData);
  48575. args: [],
  48576. source: "restart\x0a\x09self node: self context ast nextChild",
  48577. referencedClasses: [],
  48578. //>>excludeEnd("ide");
  48579. messageSends: ["node:", "nextChild", "ast", "context"]
  48580. }),
  48581. $globals.ASTInterpreter);
  48582. $core.addMethod(
  48583. $core.method({
  48584. selector: "result",
  48585. protocol: 'accessing',
  48586. fn: function (){
  48587. var self=this;
  48588. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  48589. return $core.withContext(function($ctx1) {
  48590. //>>excludeEnd("ctx");
  48591. var $2,$1;
  48592. $2=self._hasReturned();
  48593. if($core.assert($2)){
  48594. $1=self._returnValue();
  48595. } else {
  48596. $1=$recv(self._context())._receiver();
  48597. };
  48598. return $1;
  48599. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  48600. }, function($ctx1) {$ctx1.fill(self,"result",{},$globals.ASTInterpreter)});
  48601. //>>excludeEnd("ctx");
  48602. },
  48603. //>>excludeStart("ide", pragmas.excludeIdeData);
  48604. args: [],
  48605. source: "result\x0a\x09^ self hasReturned \x0a\x09\x09ifTrue: [ self returnValue ] \x0a\x09\x09ifFalse: [ self context receiver ]",
  48606. referencedClasses: [],
  48607. //>>excludeEnd("ide");
  48608. messageSends: ["ifTrue:ifFalse:", "hasReturned", "returnValue", "receiver", "context"]
  48609. }),
  48610. $globals.ASTInterpreter);
  48611. $core.addMethod(
  48612. $core.method({
  48613. selector: "returnValue",
  48614. protocol: 'accessing',
  48615. fn: function (){
  48616. var self=this;
  48617. var $1;
  48618. $1=self["@returnValue"];
  48619. return $1;
  48620. },
  48621. //>>excludeStart("ide", pragmas.excludeIdeData);
  48622. args: [],
  48623. source: "returnValue\x0a\x09^ returnValue",
  48624. referencedClasses: [],
  48625. //>>excludeEnd("ide");
  48626. messageSends: []
  48627. }),
  48628. $globals.ASTInterpreter);
  48629. $core.addMethod(
  48630. $core.method({
  48631. selector: "returnValue:",
  48632. protocol: 'accessing',
  48633. fn: function (anObject){
  48634. var self=this;
  48635. self["@returnValue"]=anObject;
  48636. return self;
  48637. },
  48638. //>>excludeStart("ide", pragmas.excludeIdeData);
  48639. args: ["anObject"],
  48640. source: "returnValue: anObject\x0a\x09returnValue := anObject",
  48641. referencedClasses: [],
  48642. //>>excludeEnd("ide");
  48643. messageSends: []
  48644. }),
  48645. $globals.ASTInterpreter);
  48646. $core.addMethod(
  48647. $core.method({
  48648. selector: "sendMessage:to:superSend:",
  48649. protocol: 'private',
  48650. fn: function (aMessage,anObject,aBoolean){
  48651. var self=this;
  48652. var method;
  48653. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  48654. return $core.withContext(function($ctx1) {
  48655. //>>excludeEnd("ctx");
  48656. var $1,$3,$2,$4,$5,$6,$receiver;
  48657. var $early={};
  48658. try {
  48659. if(!$core.assert(aBoolean)){
  48660. $1=$recv(aMessage)._sendTo_(anObject);
  48661. return $1;
  48662. };
  48663. $3=$recv(anObject)._class();
  48664. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  48665. $ctx1.sendIdx["class"]=1;
  48666. //>>excludeEnd("ctx");
  48667. $2=$recv($3)._superclass();
  48668. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  48669. $ctx1.sendIdx["superclass"]=1;
  48670. //>>excludeEnd("ctx");
  48671. if(($receiver = $2) == null || $receiver.isNil){
  48672. $4=self._messageNotUnderstood_receiver_(aMessage,anObject);
  48673. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  48674. $ctx1.sendIdx["messageNotUnderstood:receiver:"]=1;
  48675. //>>excludeEnd("ctx");
  48676. return $4;
  48677. } else {
  48678. $2;
  48679. };
  48680. method=$recv($recv($recv($recv(anObject)._class())._superclass())._methodDictionary())._at_ifAbsent_($recv(aMessage)._selector(),(function(){
  48681. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  48682. return $core.withContext(function($ctx2) {
  48683. //>>excludeEnd("ctx");
  48684. $5=self._messageNotUnderstood_receiver_(aMessage,anObject);
  48685. throw $early=[$5];
  48686. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  48687. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,3)});
  48688. //>>excludeEnd("ctx");
  48689. }));
  48690. $6=$recv(method)._sendTo_arguments_(anObject,$recv(aMessage)._arguments());
  48691. return $6;
  48692. }
  48693. catch(e) {if(e===$early)return e[0]; throw e}
  48694. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  48695. }, function($ctx1) {$ctx1.fill(self,"sendMessage:to:superSend:",{aMessage:aMessage,anObject:anObject,aBoolean:aBoolean,method:method},$globals.ASTInterpreter)});
  48696. //>>excludeEnd("ctx");
  48697. },
  48698. //>>excludeStart("ide", pragmas.excludeIdeData);
  48699. args: ["aMessage", "anObject", "aBoolean"],
  48700. source: "sendMessage: aMessage to: anObject superSend: aBoolean\x0a\x09| method |\x0a\x09\x0a\x09aBoolean ifFalse: [ ^ aMessage sendTo: anObject ].\x0a\x09anObject class superclass ifNil: [ ^ self messageNotUnderstood: aMessage receiver: anObject ].\x0a\x09\x0a\x09method := anObject class superclass methodDictionary\x0a\x09\x09at: aMessage selector\x0a\x09\x09ifAbsent: [ ^ self messageNotUnderstood: aMessage receiver: anObject ].\x0a\x09\x09\x0a\x09^ method sendTo: anObject arguments: aMessage arguments",
  48701. referencedClasses: [],
  48702. //>>excludeEnd("ide");
  48703. messageSends: ["ifFalse:", "sendTo:", "ifNil:", "superclass", "class", "messageNotUnderstood:receiver:", "at:ifAbsent:", "methodDictionary", "selector", "sendTo:arguments:", "arguments"]
  48704. }),
  48705. $globals.ASTInterpreter);
  48706. $core.addMethod(
  48707. $core.method({
  48708. selector: "setNonLocalReturnFromContext:",
  48709. protocol: 'interpreting',
  48710. fn: function (aContext){
  48711. var self=this;
  48712. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  48713. return $core.withContext(function($ctx1) {
  48714. //>>excludeEnd("ctx");
  48715. var $2,$1;
  48716. $2=$recv(aContext)._interpreter();
  48717. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  48718. $ctx1.sendIdx["interpreter"]=1;
  48719. //>>excludeEnd("ctx");
  48720. $1=$recv($2)._hasReturned();
  48721. if($core.assert($1)){
  48722. self["@returned"]=true;
  48723. self["@returned"];
  48724. self._returnValue_($recv($recv(aContext)._interpreter())._returnValue());
  48725. };
  48726. return self;
  48727. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  48728. }, function($ctx1) {$ctx1.fill(self,"setNonLocalReturnFromContext:",{aContext:aContext},$globals.ASTInterpreter)});
  48729. //>>excludeEnd("ctx");
  48730. },
  48731. //>>excludeStart("ide", pragmas.excludeIdeData);
  48732. args: ["aContext"],
  48733. source: "setNonLocalReturnFromContext: aContext\x0a\x09aContext interpreter hasReturned ifTrue: [\x0a\x09\x09returned := true.\x0a\x09\x09self returnValue: aContext interpreter returnValue ]",
  48734. referencedClasses: [],
  48735. //>>excludeEnd("ide");
  48736. messageSends: ["ifTrue:", "hasReturned", "interpreter", "returnValue:", "returnValue"]
  48737. }),
  48738. $globals.ASTInterpreter);
  48739. $core.addMethod(
  48740. $core.method({
  48741. selector: "skip",
  48742. protocol: 'interpreting',
  48743. fn: function (){
  48744. var self=this;
  48745. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  48746. return $core.withContext(function($ctx1) {
  48747. //>>excludeEnd("ctx");
  48748. self._next();
  48749. return self;
  48750. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  48751. }, function($ctx1) {$ctx1.fill(self,"skip",{},$globals.ASTInterpreter)});
  48752. //>>excludeEnd("ctx");
  48753. },
  48754. //>>excludeStart("ide", pragmas.excludeIdeData);
  48755. args: [],
  48756. source: "skip\x0a\x09self next",
  48757. referencedClasses: [],
  48758. //>>excludeEnd("ide");
  48759. messageSends: ["next"]
  48760. }),
  48761. $globals.ASTInterpreter);
  48762. $core.addMethod(
  48763. $core.method({
  48764. selector: "stack",
  48765. protocol: 'accessing',
  48766. fn: function (){
  48767. var self=this;
  48768. function $OrderedCollection(){return $globals.OrderedCollection||(typeof OrderedCollection=="undefined"?nil:OrderedCollection)}
  48769. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  48770. return $core.withContext(function($ctx1) {
  48771. //>>excludeEnd("ctx");
  48772. var $2,$1,$receiver;
  48773. $2=self["@stack"];
  48774. if(($receiver = $2) == null || $receiver.isNil){
  48775. self["@stack"]=$recv($OrderedCollection())._new();
  48776. $1=self["@stack"];
  48777. } else {
  48778. $1=$2;
  48779. };
  48780. return $1;
  48781. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  48782. }, function($ctx1) {$ctx1.fill(self,"stack",{},$globals.ASTInterpreter)});
  48783. //>>excludeEnd("ctx");
  48784. },
  48785. //>>excludeStart("ide", pragmas.excludeIdeData);
  48786. args: [],
  48787. source: "stack\x0a\x09^ stack ifNil: [ stack := OrderedCollection new ]",
  48788. referencedClasses: ["OrderedCollection"],
  48789. //>>excludeEnd("ide");
  48790. messageSends: ["ifNil:", "new"]
  48791. }),
  48792. $globals.ASTInterpreter);
  48793. $core.addMethod(
  48794. $core.method({
  48795. selector: "step",
  48796. protocol: 'interpreting',
  48797. fn: function (){
  48798. var self=this;
  48799. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  48800. return $core.withContext(function($ctx1) {
  48801. //>>excludeEnd("ctx");
  48802. var $1;
  48803. self._interpret();
  48804. $1=self._next();
  48805. return self;
  48806. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  48807. }, function($ctx1) {$ctx1.fill(self,"step",{},$globals.ASTInterpreter)});
  48808. //>>excludeEnd("ctx");
  48809. },
  48810. //>>excludeStart("ide", pragmas.excludeIdeData);
  48811. args: [],
  48812. source: "step\x0a\x09self \x0a\x09\x09interpret; \x0a\x09\x09next",
  48813. referencedClasses: [],
  48814. //>>excludeEnd("ide");
  48815. messageSends: ["interpret", "next"]
  48816. }),
  48817. $globals.ASTInterpreter);
  48818. $core.addMethod(
  48819. $core.method({
  48820. selector: "stepOver",
  48821. protocol: 'interpreting',
  48822. fn: function (){
  48823. var self=this;
  48824. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  48825. return $core.withContext(function($ctx1) {
  48826. //>>excludeEnd("ctx");
  48827. var $2,$1;
  48828. self._step();
  48829. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  48830. $ctx1.sendIdx["step"]=1;
  48831. //>>excludeEnd("ctx");
  48832. $recv((function(){
  48833. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  48834. return $core.withContext(function($ctx2) {
  48835. //>>excludeEnd("ctx");
  48836. $2=self._node();
  48837. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  48838. $ctx2.sendIdx["node"]=1;
  48839. //>>excludeEnd("ctx");
  48840. $1=$recv($2)._isNil();
  48841. return $recv($1)._or_((function(){
  48842. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  48843. return $core.withContext(function($ctx3) {
  48844. //>>excludeEnd("ctx");
  48845. return $recv(self._node())._isSteppingNode();
  48846. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  48847. }, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)});
  48848. //>>excludeEnd("ctx");
  48849. }));
  48850. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  48851. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  48852. //>>excludeEnd("ctx");
  48853. }))._whileFalse_((function(){
  48854. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  48855. return $core.withContext(function($ctx2) {
  48856. //>>excludeEnd("ctx");
  48857. return self._step();
  48858. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  48859. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,3)});
  48860. //>>excludeEnd("ctx");
  48861. }));
  48862. return self;
  48863. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  48864. }, function($ctx1) {$ctx1.fill(self,"stepOver",{},$globals.ASTInterpreter)});
  48865. //>>excludeEnd("ctx");
  48866. },
  48867. //>>excludeStart("ide", pragmas.excludeIdeData);
  48868. args: [],
  48869. source: "stepOver\x0a\x09self step.\x0a\x09\x0a\x09[ self node isNil or: [ self node isSteppingNode ] ] whileFalse: [ \x0a\x09\x09self step ]",
  48870. referencedClasses: [],
  48871. //>>excludeEnd("ide");
  48872. messageSends: ["step", "whileFalse:", "or:", "isNil", "node", "isSteppingNode"]
  48873. }),
  48874. $globals.ASTInterpreter);
  48875. $core.addMethod(
  48876. $core.method({
  48877. selector: "visit:",
  48878. protocol: 'visiting',
  48879. fn: function (aNode){
  48880. var self=this;
  48881. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  48882. return $core.withContext(function($ctx1) {
  48883. //>>excludeEnd("ctx");
  48884. var $1;
  48885. $1=self._hasReturned();
  48886. if(!$core.assert($1)){
  48887. (
  48888. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  48889. $ctx1.supercall = true,
  48890. //>>excludeEnd("ctx");
  48891. $globals.ASTInterpreter.superclass.fn.prototype._visit_.apply($recv(self), [aNode]));
  48892. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  48893. $ctx1.supercall = false;
  48894. //>>excludeEnd("ctx");;
  48895. };
  48896. return self;
  48897. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  48898. }, function($ctx1) {$ctx1.fill(self,"visit:",{aNode:aNode},$globals.ASTInterpreter)});
  48899. //>>excludeEnd("ctx");
  48900. },
  48901. //>>excludeStart("ide", pragmas.excludeIdeData);
  48902. args: ["aNode"],
  48903. source: "visit: aNode\x0a\x09self hasReturned ifFalse: [ super visit: aNode ]",
  48904. referencedClasses: [],
  48905. //>>excludeEnd("ide");
  48906. messageSends: ["ifFalse:", "hasReturned", "visit:"]
  48907. }),
  48908. $globals.ASTInterpreter);
  48909. $core.addMethod(
  48910. $core.method({
  48911. selector: "visitAssignmentNode:",
  48912. protocol: 'visiting',
  48913. fn: function (aNode){
  48914. var self=this;
  48915. var poppedValue;
  48916. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  48917. return $core.withContext(function($ctx1) {
  48918. //>>excludeEnd("ctx");
  48919. poppedValue=self._pop();
  48920. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  48921. $ctx1.sendIdx["pop"]=1;
  48922. //>>excludeEnd("ctx");
  48923. self._pop();
  48924. self._push_(poppedValue);
  48925. self._assign_to_($recv(aNode)._left(),poppedValue);
  48926. return self;
  48927. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  48928. }, function($ctx1) {$ctx1.fill(self,"visitAssignmentNode:",{aNode:aNode,poppedValue:poppedValue},$globals.ASTInterpreter)});
  48929. //>>excludeEnd("ctx");
  48930. },
  48931. //>>excludeStart("ide", pragmas.excludeIdeData);
  48932. args: ["aNode"],
  48933. 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",
  48934. referencedClasses: [],
  48935. //>>excludeEnd("ide");
  48936. messageSends: ["pop", "push:", "assign:to:", "left"]
  48937. }),
  48938. $globals.ASTInterpreter);
  48939. $core.addMethod(
  48940. $core.method({
  48941. selector: "visitBlockNode:",
  48942. protocol: 'visiting',
  48943. fn: function (aNode){
  48944. var self=this;
  48945. var block;
  48946. function $AIBlockClosure(){return $globals.AIBlockClosure||(typeof AIBlockClosure=="undefined"?nil:AIBlockClosure)}
  48947. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  48948. return $core.withContext(function($ctx1) {
  48949. //>>excludeEnd("ctx");
  48950. block=$recv($AIBlockClosure())._forContext_node_(self._context(),aNode);
  48951. self._push_(block);
  48952. return self;
  48953. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  48954. }, function($ctx1) {$ctx1.fill(self,"visitBlockNode:",{aNode:aNode,block:block},$globals.ASTInterpreter)});
  48955. //>>excludeEnd("ctx");
  48956. },
  48957. //>>excludeStart("ide", pragmas.excludeIdeData);
  48958. args: ["aNode"],
  48959. 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",
  48960. referencedClasses: ["AIBlockClosure"],
  48961. //>>excludeEnd("ide");
  48962. messageSends: ["forContext:node:", "context", "push:"]
  48963. }),
  48964. $globals.ASTInterpreter);
  48965. $core.addMethod(
  48966. $core.method({
  48967. selector: "visitBlockSequenceNode:",
  48968. protocol: 'visiting',
  48969. fn: function (aNode){
  48970. var self=this;
  48971. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  48972. return $core.withContext(function($ctx1) {
  48973. //>>excludeEnd("ctx");
  48974. (
  48975. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  48976. $ctx1.supercall = true,
  48977. //>>excludeEnd("ctx");
  48978. $globals.ASTInterpreter.superclass.fn.prototype._visitBlockSequenceNode_.apply($recv(self), [aNode]));
  48979. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  48980. $ctx1.supercall = false;
  48981. //>>excludeEnd("ctx");;
  48982. self["@forceAtEnd"]=true;
  48983. return self;
  48984. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  48985. }, function($ctx1) {$ctx1.fill(self,"visitBlockSequenceNode:",{aNode:aNode},$globals.ASTInterpreter)});
  48986. //>>excludeEnd("ctx");
  48987. },
  48988. //>>excludeStart("ide", pragmas.excludeIdeData);
  48989. args: ["aNode"],
  48990. 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",
  48991. referencedClasses: [],
  48992. //>>excludeEnd("ide");
  48993. messageSends: ["visitBlockSequenceNode:"]
  48994. }),
  48995. $globals.ASTInterpreter);
  48996. $core.addMethod(
  48997. $core.method({
  48998. selector: "visitDynamicArrayNode:",
  48999. protocol: 'visiting',
  49000. fn: function (aNode){
  49001. var self=this;
  49002. var array;
  49003. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  49004. return $core.withContext(function($ctx1) {
  49005. //>>excludeEnd("ctx");
  49006. array=[];
  49007. $recv($recv(aNode)._nodes())._do_((function(each){
  49008. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  49009. return $core.withContext(function($ctx2) {
  49010. //>>excludeEnd("ctx");
  49011. return $recv(array)._addFirst_(self._pop());
  49012. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  49013. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  49014. //>>excludeEnd("ctx");
  49015. }));
  49016. self._push_(array);
  49017. return self;
  49018. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  49019. }, function($ctx1) {$ctx1.fill(self,"visitDynamicArrayNode:",{aNode:aNode,array:array},$globals.ASTInterpreter)});
  49020. //>>excludeEnd("ctx");
  49021. },
  49022. //>>excludeStart("ide", pragmas.excludeIdeData);
  49023. args: ["aNode"],
  49024. source: "visitDynamicArrayNode: aNode\x0a\x09| array |\x0a\x09\x0a\x09array := #().\x0a\x09aNode nodes do: [ :each |\x0a\x09\x09array addFirst: self pop ].\x0a\x09\x0a\x09self push: array",
  49025. referencedClasses: [],
  49026. //>>excludeEnd("ide");
  49027. messageSends: ["do:", "nodes", "addFirst:", "pop", "push:"]
  49028. }),
  49029. $globals.ASTInterpreter);
  49030. $core.addMethod(
  49031. $core.method({
  49032. selector: "visitDynamicDictionaryNode:",
  49033. protocol: 'visiting',
  49034. fn: function (aNode){
  49035. var self=this;
  49036. var keyValueList;
  49037. function $OrderedCollection(){return $globals.OrderedCollection||(typeof OrderedCollection=="undefined"?nil:OrderedCollection)}
  49038. function $HashedCollection(){return $globals.HashedCollection||(typeof HashedCollection=="undefined"?nil:HashedCollection)}
  49039. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  49040. return $core.withContext(function($ctx1) {
  49041. //>>excludeEnd("ctx");
  49042. keyValueList=$recv($OrderedCollection())._new();
  49043. $recv($recv(aNode)._nodes())._do_((function(each){
  49044. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  49045. return $core.withContext(function($ctx2) {
  49046. //>>excludeEnd("ctx");
  49047. return $recv(keyValueList)._add_(self._pop());
  49048. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  49049. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  49050. //>>excludeEnd("ctx");
  49051. }));
  49052. self._push_($recv($HashedCollection())._newFromPairs_($recv(keyValueList)._reversed()));
  49053. return self;
  49054. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  49055. }, function($ctx1) {$ctx1.fill(self,"visitDynamicDictionaryNode:",{aNode:aNode,keyValueList:keyValueList},$globals.ASTInterpreter)});
  49056. //>>excludeEnd("ctx");
  49057. },
  49058. //>>excludeStart("ide", pragmas.excludeIdeData);
  49059. args: ["aNode"],
  49060. source: "visitDynamicDictionaryNode: aNode\x0a\x09| keyValueList |\x0a\x09\x0a\x09keyValueList := OrderedCollection new.\x0a\x09\x0a\x09aNode nodes do: [ :each | \x0a\x09\x09keyValueList add: self pop ].\x0a\x09\x0a\x09self push: (HashedCollection newFromPairs: keyValueList reversed)",
  49061. referencedClasses: ["OrderedCollection", "HashedCollection"],
  49062. //>>excludeEnd("ide");
  49063. messageSends: ["new", "do:", "nodes", "add:", "pop", "push:", "newFromPairs:", "reversed"]
  49064. }),
  49065. $globals.ASTInterpreter);
  49066. $core.addMethod(
  49067. $core.method({
  49068. selector: "visitJSStatementNode:",
  49069. protocol: 'visiting',
  49070. fn: function (aNode){
  49071. var self=this;
  49072. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  49073. return $core.withContext(function($ctx1) {
  49074. //>>excludeEnd("ctx");
  49075. self["@returned"]=true;
  49076. self._returnValue_(self._eval_($recv(aNode)._source()));
  49077. return self;
  49078. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  49079. }, function($ctx1) {$ctx1.fill(self,"visitJSStatementNode:",{aNode:aNode},$globals.ASTInterpreter)});
  49080. //>>excludeEnd("ctx");
  49081. },
  49082. //>>excludeStart("ide", pragmas.excludeIdeData);
  49083. args: ["aNode"],
  49084. source: "visitJSStatementNode: aNode\x0a\x09returned := true.\x0a\x09self returnValue: (self eval: aNode source)",
  49085. referencedClasses: [],
  49086. //>>excludeEnd("ide");
  49087. messageSends: ["returnValue:", "eval:", "source"]
  49088. }),
  49089. $globals.ASTInterpreter);
  49090. $core.addMethod(
  49091. $core.method({
  49092. selector: "visitNode:",
  49093. protocol: 'visiting',
  49094. fn: function (aNode){
  49095. var self=this;
  49096. return self;
  49097. },
  49098. //>>excludeStart("ide", pragmas.excludeIdeData);
  49099. args: ["aNode"],
  49100. source: "visitNode: aNode\x0a\x09\x22Do nothing by default. Especially, do not visit children recursively.\x22",
  49101. referencedClasses: [],
  49102. //>>excludeEnd("ide");
  49103. messageSends: []
  49104. }),
  49105. $globals.ASTInterpreter);
  49106. $core.addMethod(
  49107. $core.method({
  49108. selector: "visitReturnNode:",
  49109. protocol: 'visiting',
  49110. fn: function (aNode){
  49111. var self=this;
  49112. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  49113. return $core.withContext(function($ctx1) {
  49114. //>>excludeEnd("ctx");
  49115. self["@returned"]=true;
  49116. self._returnValue_(self._pop());
  49117. return self;
  49118. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  49119. }, function($ctx1) {$ctx1.fill(self,"visitReturnNode:",{aNode:aNode},$globals.ASTInterpreter)});
  49120. //>>excludeEnd("ctx");
  49121. },
  49122. //>>excludeStart("ide", pragmas.excludeIdeData);
  49123. args: ["aNode"],
  49124. source: "visitReturnNode: aNode\x0a\x09returned := true.\x0a\x09self returnValue: self pop",
  49125. referencedClasses: [],
  49126. //>>excludeEnd("ide");
  49127. messageSends: ["returnValue:", "pop"]
  49128. }),
  49129. $globals.ASTInterpreter);
  49130. $core.addMethod(
  49131. $core.method({
  49132. selector: "visitSendNode:",
  49133. protocol: 'visiting',
  49134. fn: function (aNode){
  49135. var self=this;
  49136. var receiver,args,message,result;
  49137. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  49138. return $core.withContext(function($ctx1) {
  49139. //>>excludeEnd("ctx");
  49140. var $1;
  49141. args=$recv($recv(aNode)._arguments())._collect_((function(each){
  49142. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  49143. return $core.withContext(function($ctx2) {
  49144. //>>excludeEnd("ctx");
  49145. return self._pop();
  49146. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  49147. $ctx2.sendIdx["pop"]=1;
  49148. //>>excludeEnd("ctx");
  49149. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  49150. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  49151. //>>excludeEnd("ctx");
  49152. }));
  49153. receiver=self._pop();
  49154. message=self._messageFromSendNode_arguments_(aNode,$recv(args)._reversed());
  49155. result=self._sendMessage_to_superSend_(message,receiver,$recv(aNode)._superSend());
  49156. $1=$recv($recv(aNode)._isCascadeSendNode())._and_((function(){
  49157. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  49158. return $core.withContext(function($ctx2) {
  49159. //>>excludeEnd("ctx");
  49160. return $recv($recv(aNode)._isLastChild())._not();
  49161. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  49162. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
  49163. //>>excludeEnd("ctx");
  49164. }));
  49165. if($core.assert($1)){
  49166. self._push_(receiver);
  49167. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  49168. $ctx1.sendIdx["push:"]=1;
  49169. //>>excludeEnd("ctx");
  49170. } else {
  49171. self._push_(result);
  49172. };
  49173. return self;
  49174. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  49175. }, function($ctx1) {$ctx1.fill(self,"visitSendNode:",{aNode:aNode,receiver:receiver,args:args,message:message,result:result},$globals.ASTInterpreter)});
  49176. //>>excludeEnd("ctx");
  49177. },
  49178. //>>excludeStart("ide", pragmas.excludeIdeData);
  49179. args: ["aNode"],
  49180. source: "visitSendNode: aNode\x0a\x09| receiver args message result |\x0a\x09\x0a\x09args := aNode arguments collect: [ :each | self pop ].\x0a\x09receiver := self pop.\x0a\x09\x0a\x09message := self\x0a\x09\x09messageFromSendNode: aNode\x0a\x09\x09arguments: args reversed.\x0a\x09\x0a\x09result := self sendMessage: message to: receiver superSend: aNode superSend.\x0a\x09\x0a\x09\x22For cascade sends, push the reciever if the send is not the last one\x22\x0a\x09(aNode isCascadeSendNode and: [ aNode isLastChild not ])\x0a\x09\x09ifTrue: [ self push: receiver ]\x0a\x09\x09ifFalse: [ self push: result ]",
  49181. referencedClasses: [],
  49182. //>>excludeEnd("ide");
  49183. messageSends: ["collect:", "arguments", "pop", "messageFromSendNode:arguments:", "reversed", "sendMessage:to:superSend:", "superSend", "ifTrue:ifFalse:", "and:", "isCascadeSendNode", "not", "isLastChild", "push:"]
  49184. }),
  49185. $globals.ASTInterpreter);
  49186. $core.addMethod(
  49187. $core.method({
  49188. selector: "visitSequenceNode:",
  49189. protocol: 'visiting',
  49190. fn: function (aNode){
  49191. var self=this;
  49192. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  49193. return $core.withContext(function($ctx1) {
  49194. //>>excludeEnd("ctx");
  49195. $recv($recv(aNode)._temps())._do_((function(each){
  49196. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  49197. return $core.withContext(function($ctx2) {
  49198. //>>excludeEnd("ctx");
  49199. return $recv(self._context())._defineLocal_(each);
  49200. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  49201. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  49202. //>>excludeEnd("ctx");
  49203. }));
  49204. return self;
  49205. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  49206. }, function($ctx1) {$ctx1.fill(self,"visitSequenceNode:",{aNode:aNode},$globals.ASTInterpreter)});
  49207. //>>excludeEnd("ctx");
  49208. },
  49209. //>>excludeStart("ide", pragmas.excludeIdeData);
  49210. args: ["aNode"],
  49211. source: "visitSequenceNode: aNode\x0a\x09aNode temps do: [ :each |\x0a\x09\x09self context defineLocal: each ]",
  49212. referencedClasses: [],
  49213. //>>excludeEnd("ide");
  49214. messageSends: ["do:", "temps", "defineLocal:", "context"]
  49215. }),
  49216. $globals.ASTInterpreter);
  49217. $core.addMethod(
  49218. $core.method({
  49219. selector: "visitValueNode:",
  49220. protocol: 'visiting',
  49221. fn: function (aNode){
  49222. var self=this;
  49223. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  49224. return $core.withContext(function($ctx1) {
  49225. //>>excludeEnd("ctx");
  49226. self._push_($recv(aNode)._value());
  49227. return self;
  49228. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  49229. }, function($ctx1) {$ctx1.fill(self,"visitValueNode:",{aNode:aNode},$globals.ASTInterpreter)});
  49230. //>>excludeEnd("ctx");
  49231. },
  49232. //>>excludeStart("ide", pragmas.excludeIdeData);
  49233. args: ["aNode"],
  49234. source: "visitValueNode: aNode\x0a\x09self push: aNode value",
  49235. referencedClasses: [],
  49236. //>>excludeEnd("ide");
  49237. messageSends: ["push:", "value"]
  49238. }),
  49239. $globals.ASTInterpreter);
  49240. $core.addMethod(
  49241. $core.method({
  49242. selector: "visitVariableNode:",
  49243. protocol: 'visiting',
  49244. fn: function (aNode){
  49245. var self=this;
  49246. function $PlatformInterface(){return $globals.PlatformInterface||(typeof PlatformInterface=="undefined"?nil:PlatformInterface)}
  49247. function $Smalltalk(){return $globals.Smalltalk||(typeof Smalltalk=="undefined"?nil:Smalltalk)}
  49248. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  49249. return $core.withContext(function($ctx1) {
  49250. //>>excludeEnd("ctx");
  49251. var $2,$1,$5,$6,$4,$3,$8,$10,$9,$11,$12,$13,$15,$14,$16,$17,$7;
  49252. $2=$recv(aNode)._binding();
  49253. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  49254. $ctx1.sendIdx["binding"]=1;
  49255. //>>excludeEnd("ctx");
  49256. $1=$recv($2)._isUnknownVar();
  49257. if($core.assert($1)){
  49258. $5=$recv($PlatformInterface())._globals();
  49259. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  49260. $ctx1.sendIdx["globals"]=1;
  49261. //>>excludeEnd("ctx");
  49262. $6=$recv(aNode)._value();
  49263. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  49264. $ctx1.sendIdx["value"]=1;
  49265. //>>excludeEnd("ctx");
  49266. $4=$recv($5)._at_ifAbsent_($6,(function(){
  49267. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  49268. return $core.withContext(function($ctx2) {
  49269. //>>excludeEnd("ctx");
  49270. return self._error_("Unknown variable");
  49271. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  49272. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
  49273. //>>excludeEnd("ctx");
  49274. }));
  49275. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  49276. $ctx1.sendIdx["at:ifAbsent:"]=1;
  49277. //>>excludeEnd("ctx");
  49278. $3=self._push_($4);
  49279. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  49280. $ctx1.sendIdx["push:"]=1;
  49281. //>>excludeEnd("ctx");
  49282. return $3;
  49283. };
  49284. $8=$recv($recv(aNode)._binding())._isInstanceVar();
  49285. if($core.assert($8)){
  49286. $10=self._context();
  49287. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  49288. $ctx1.sendIdx["context"]=1;
  49289. //>>excludeEnd("ctx");
  49290. $9=$recv($10)._receiver();
  49291. $11=$recv(aNode)._value();
  49292. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  49293. $ctx1.sendIdx["value"]=2;
  49294. //>>excludeEnd("ctx");
  49295. $7=$recv($9)._instVarAt_($11);
  49296. } else {
  49297. $12=self._context();
  49298. $13=$recv(aNode)._value();
  49299. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  49300. $ctx1.sendIdx["value"]=3;
  49301. //>>excludeEnd("ctx");
  49302. $7=$recv($12)._localAt_ifAbsent_($13,(function(){
  49303. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  49304. return $core.withContext(function($ctx2) {
  49305. //>>excludeEnd("ctx");
  49306. $15=$recv(aNode)._value();
  49307. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  49308. $ctx2.sendIdx["value"]=4;
  49309. //>>excludeEnd("ctx");
  49310. $14=$recv($15)._isCapitalized();
  49311. if($core.assert($14)){
  49312. $16=$recv($Smalltalk())._globals();
  49313. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  49314. $ctx2.sendIdx["globals"]=2;
  49315. //>>excludeEnd("ctx");
  49316. $17=$recv(aNode)._value();
  49317. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  49318. $ctx2.sendIdx["value"]=5;
  49319. //>>excludeEnd("ctx");
  49320. return $recv($16)._at_ifAbsent_($17,(function(){
  49321. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  49322. return $core.withContext(function($ctx3) {
  49323. //>>excludeEnd("ctx");
  49324. return $recv($recv($PlatformInterface())._globals())._at_($recv(aNode)._value());
  49325. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  49326. }, function($ctx3) {$ctx3.fillBlock({},$ctx2,7)});
  49327. //>>excludeEnd("ctx");
  49328. }));
  49329. };
  49330. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  49331. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,5)});
  49332. //>>excludeEnd("ctx");
  49333. }));
  49334. };
  49335. self._push_($7);
  49336. return self;
  49337. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  49338. }, function($ctx1) {$ctx1.fill(self,"visitVariableNode:",{aNode:aNode},$globals.ASTInterpreter)});
  49339. //>>excludeEnd("ctx");
  49340. },
  49341. //>>excludeStart("ide", pragmas.excludeIdeData);
  49342. args: ["aNode"],
  49343. source: "visitVariableNode: aNode\x0a\x09aNode binding isUnknownVar ifTrue: [\x0a\x09\x09^ self push: (PlatformInterface globals at: aNode value ifAbsent: [ self error: 'Unknown variable' ]) ].\x0a\x09\x09\x0a\x09self push: (aNode binding isInstanceVar\x0a\x09\x09ifTrue: [ self context receiver instVarAt: aNode value ]\x0a\x09\x09ifFalse: [ self context \x0a\x09\x09\x09localAt: aNode value\x0a\x09\x09\x09ifAbsent: [\x0a\x09\x09\x09\x09aNode value isCapitalized\x0a\x09\x09\x09\x09\x09ifTrue: [\x0a\x09\x09\x09\x09\x09\x09Smalltalk globals \x0a\x09\x09\x09\x09\x09\x09\x09at: aNode value \x0a\x09\x09\x09\x09\x09\x09\x09ifAbsent: [ PlatformInterface globals at: aNode value ] ] ] ])",
  49344. referencedClasses: ["PlatformInterface", "Smalltalk"],
  49345. //>>excludeEnd("ide");
  49346. messageSends: ["ifTrue:", "isUnknownVar", "binding", "push:", "at:ifAbsent:", "globals", "value", "error:", "ifTrue:ifFalse:", "isInstanceVar", "instVarAt:", "receiver", "context", "localAt:ifAbsent:", "isCapitalized", "at:"]
  49347. }),
  49348. $globals.ASTInterpreter);
  49349. $core.addClass('ASTInterpreterError', $globals.Error, [], 'Compiler-Interpreter');
  49350. //>>excludeStart("ide", pragmas.excludeIdeData);
  49351. $globals.ASTInterpreterError.comment="I get signaled when an AST interpreter is unable to interpret a node.";
  49352. //>>excludeEnd("ide");
  49353. $core.addClass('ASTPCNodeVisitor', $globals.NodeVisitor, ['context', 'index', 'selector', 'currentNode'], 'Compiler-Interpreter');
  49354. //>>excludeStart("ide", pragmas.excludeIdeData);
  49355. $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`";
  49356. //>>excludeEnd("ide");
  49357. $core.addMethod(
  49358. $core.method({
  49359. selector: "context",
  49360. protocol: 'accessing',
  49361. fn: function (){
  49362. var self=this;
  49363. var $1;
  49364. $1=self["@context"];
  49365. return $1;
  49366. },
  49367. //>>excludeStart("ide", pragmas.excludeIdeData);
  49368. args: [],
  49369. source: "context\x0a\x09^ context",
  49370. referencedClasses: [],
  49371. //>>excludeEnd("ide");
  49372. messageSends: []
  49373. }),
  49374. $globals.ASTPCNodeVisitor);
  49375. $core.addMethod(
  49376. $core.method({
  49377. selector: "context:",
  49378. protocol: 'accessing',
  49379. fn: function (aContext){
  49380. var self=this;
  49381. self["@context"]=aContext;
  49382. return self;
  49383. },
  49384. //>>excludeStart("ide", pragmas.excludeIdeData);
  49385. args: ["aContext"],
  49386. source: "context: aContext\x0a\x09context := aContext",
  49387. referencedClasses: [],
  49388. //>>excludeEnd("ide");
  49389. messageSends: []
  49390. }),
  49391. $globals.ASTPCNodeVisitor);
  49392. $core.addMethod(
  49393. $core.method({
  49394. selector: "currentNode",
  49395. protocol: 'accessing',
  49396. fn: function (){
  49397. var self=this;
  49398. var $1;
  49399. $1=self["@currentNode"];
  49400. return $1;
  49401. },
  49402. //>>excludeStart("ide", pragmas.excludeIdeData);
  49403. args: [],
  49404. source: "currentNode\x0a\x09^ currentNode",
  49405. referencedClasses: [],
  49406. //>>excludeEnd("ide");
  49407. messageSends: []
  49408. }),
  49409. $globals.ASTPCNodeVisitor);
  49410. $core.addMethod(
  49411. $core.method({
  49412. selector: "increaseIndex",
  49413. protocol: 'accessing',
  49414. fn: function (){
  49415. var self=this;
  49416. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  49417. return $core.withContext(function($ctx1) {
  49418. //>>excludeEnd("ctx");
  49419. self["@index"]=$recv(self._index()).__plus((1));
  49420. return self;
  49421. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  49422. }, function($ctx1) {$ctx1.fill(self,"increaseIndex",{},$globals.ASTPCNodeVisitor)});
  49423. //>>excludeEnd("ctx");
  49424. },
  49425. //>>excludeStart("ide", pragmas.excludeIdeData);
  49426. args: [],
  49427. source: "increaseIndex\x0a\x09index := self index + 1",
  49428. referencedClasses: [],
  49429. //>>excludeEnd("ide");
  49430. messageSends: ["+", "index"]
  49431. }),
  49432. $globals.ASTPCNodeVisitor);
  49433. $core.addMethod(
  49434. $core.method({
  49435. selector: "index",
  49436. protocol: 'accessing',
  49437. fn: function (){
  49438. var self=this;
  49439. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  49440. return $core.withContext(function($ctx1) {
  49441. //>>excludeEnd("ctx");
  49442. var $2,$1,$receiver;
  49443. $2=self["@index"];
  49444. if(($receiver = $2) == null || $receiver.isNil){
  49445. self["@index"]=(0);
  49446. $1=self["@index"];
  49447. } else {
  49448. $1=$2;
  49449. };
  49450. return $1;
  49451. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  49452. }, function($ctx1) {$ctx1.fill(self,"index",{},$globals.ASTPCNodeVisitor)});
  49453. //>>excludeEnd("ctx");
  49454. },
  49455. //>>excludeStart("ide", pragmas.excludeIdeData);
  49456. args: [],
  49457. source: "index\x0a\x09^ index ifNil: [ index := 0 ]",
  49458. referencedClasses: [],
  49459. //>>excludeEnd("ide");
  49460. messageSends: ["ifNil:"]
  49461. }),
  49462. $globals.ASTPCNodeVisitor);
  49463. $core.addMethod(
  49464. $core.method({
  49465. selector: "selector",
  49466. protocol: 'accessing',
  49467. fn: function (){
  49468. var self=this;
  49469. var $1;
  49470. $1=self["@selector"];
  49471. return $1;
  49472. },
  49473. //>>excludeStart("ide", pragmas.excludeIdeData);
  49474. args: [],
  49475. source: "selector\x0a\x09^ selector",
  49476. referencedClasses: [],
  49477. //>>excludeEnd("ide");
  49478. messageSends: []
  49479. }),
  49480. $globals.ASTPCNodeVisitor);
  49481. $core.addMethod(
  49482. $core.method({
  49483. selector: "selector:",
  49484. protocol: 'accessing',
  49485. fn: function (aString){
  49486. var self=this;
  49487. self["@selector"]=aString;
  49488. return self;
  49489. },
  49490. //>>excludeStart("ide", pragmas.excludeIdeData);
  49491. args: ["aString"],
  49492. source: "selector: aString\x0a\x09selector := aString",
  49493. referencedClasses: [],
  49494. //>>excludeEnd("ide");
  49495. messageSends: []
  49496. }),
  49497. $globals.ASTPCNodeVisitor);
  49498. $core.addMethod(
  49499. $core.method({
  49500. selector: "visitJSStatementNode:",
  49501. protocol: 'visiting',
  49502. fn: function (aNode){
  49503. var self=this;
  49504. self["@currentNode"]=aNode;
  49505. return self;
  49506. },
  49507. //>>excludeStart("ide", pragmas.excludeIdeData);
  49508. args: ["aNode"],
  49509. 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",
  49510. referencedClasses: [],
  49511. //>>excludeEnd("ide");
  49512. messageSends: []
  49513. }),
  49514. $globals.ASTPCNodeVisitor);
  49515. $core.addMethod(
  49516. $core.method({
  49517. selector: "visitSendNode:",
  49518. protocol: 'visiting',
  49519. fn: function (aNode){
  49520. var self=this;
  49521. var sendIndex;
  49522. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  49523. return $core.withContext(function($ctx1) {
  49524. //>>excludeEnd("ctx");
  49525. var $1,$2,$4,$3,$5;
  49526. $1=self._context();
  49527. $2=self._selector();
  49528. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  49529. $ctx1.sendIdx["selector"]=1;
  49530. //>>excludeEnd("ctx");
  49531. sendIndex=$recv($1)._sendIndexAt_($2);
  49532. (
  49533. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  49534. $ctx1.supercall = true,
  49535. //>>excludeEnd("ctx");
  49536. $globals.ASTPCNodeVisitor.superclass.fn.prototype._visitSendNode_.apply($recv(self), [aNode]));
  49537. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  49538. $ctx1.supercall = false;
  49539. //>>excludeEnd("ctx");;
  49540. $4=self._selector();
  49541. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  49542. $ctx1.sendIdx["selector"]=2;
  49543. //>>excludeEnd("ctx");
  49544. $3=$recv($4).__eq($recv(aNode)._selector());
  49545. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  49546. $ctx1.sendIdx["="]=1;
  49547. //>>excludeEnd("ctx");
  49548. if($core.assert($3)){
  49549. $5=$recv(self._index()).__eq(sendIndex);
  49550. if($core.assert($5)){
  49551. self["@currentNode"]=aNode;
  49552. self["@currentNode"];
  49553. };
  49554. self._increaseIndex();
  49555. };
  49556. return self;
  49557. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  49558. }, function($ctx1) {$ctx1.fill(self,"visitSendNode:",{aNode:aNode,sendIndex:sendIndex},$globals.ASTPCNodeVisitor)});
  49559. //>>excludeEnd("ctx");
  49560. },
  49561. //>>excludeStart("ide", pragmas.excludeIdeData);
  49562. args: ["aNode"],
  49563. source: "visitSendNode: aNode\x0a\x09| sendIndex |\x0a\x09sendIndex := self context sendIndexAt: self selector.\x0a\x09\x0a\x09super visitSendNode: aNode.\x0a\x09\x0a\x09self selector = aNode selector ifTrue: [\x0a\x09\x09self index = sendIndex ifTrue: [ currentNode := aNode ].\x0a\x09\x09self increaseIndex ]",
  49564. referencedClasses: [],
  49565. //>>excludeEnd("ide");
  49566. messageSends: ["sendIndexAt:", "context", "selector", "visitSendNode:", "ifTrue:", "=", "index", "increaseIndex"]
  49567. }),
  49568. $globals.ASTPCNodeVisitor);
  49569. $core.addMethod(
  49570. $core.method({
  49571. selector: "isSteppingNode",
  49572. protocol: '*Compiler-Interpreter',
  49573. fn: function (){
  49574. var self=this;
  49575. return true;
  49576. },
  49577. //>>excludeStart("ide", pragmas.excludeIdeData);
  49578. args: [],
  49579. source: "isSteppingNode\x0a\x09^ true",
  49580. referencedClasses: [],
  49581. //>>excludeEnd("ide");
  49582. messageSends: []
  49583. }),
  49584. $globals.AssignmentNode);
  49585. $core.addMethod(
  49586. $core.method({
  49587. selector: "isSteppingNode",
  49588. protocol: '*Compiler-Interpreter',
  49589. fn: function (){
  49590. var self=this;
  49591. return true;
  49592. },
  49593. //>>excludeStart("ide", pragmas.excludeIdeData);
  49594. args: [],
  49595. source: "isSteppingNode\x0a\x09^ true",
  49596. referencedClasses: [],
  49597. //>>excludeEnd("ide");
  49598. messageSends: []
  49599. }),
  49600. $globals.BlockNode);
  49601. $core.addMethod(
  49602. $core.method({
  49603. selector: "isSteppingNode",
  49604. protocol: '*Compiler-Interpreter',
  49605. fn: function (){
  49606. var self=this;
  49607. return true;
  49608. },
  49609. //>>excludeStart("ide", pragmas.excludeIdeData);
  49610. args: [],
  49611. source: "isSteppingNode\x0a\x09^ true",
  49612. referencedClasses: [],
  49613. //>>excludeEnd("ide");
  49614. messageSends: []
  49615. }),
  49616. $globals.DynamicArrayNode);
  49617. $core.addMethod(
  49618. $core.method({
  49619. selector: "isSteppingNode",
  49620. protocol: '*Compiler-Interpreter',
  49621. fn: function (){
  49622. var self=this;
  49623. return true;
  49624. },
  49625. //>>excludeStart("ide", pragmas.excludeIdeData);
  49626. args: [],
  49627. source: "isSteppingNode\x0a\x09^ true",
  49628. referencedClasses: [],
  49629. //>>excludeEnd("ide");
  49630. messageSends: []
  49631. }),
  49632. $globals.DynamicDictionaryNode);
  49633. $core.addMethod(
  49634. $core.method({
  49635. selector: "isSteppingNode",
  49636. protocol: '*Compiler-Interpreter',
  49637. fn: function (){
  49638. var self=this;
  49639. return true;
  49640. },
  49641. //>>excludeStart("ide", pragmas.excludeIdeData);
  49642. args: [],
  49643. source: "isSteppingNode\x0a\x09^ true",
  49644. referencedClasses: [],
  49645. //>>excludeEnd("ide");
  49646. messageSends: []
  49647. }),
  49648. $globals.JSStatementNode);
  49649. $core.addMethod(
  49650. $core.method({
  49651. selector: "isSteppingNode",
  49652. protocol: '*Compiler-Interpreter',
  49653. fn: function (){
  49654. var self=this;
  49655. return false;
  49656. },
  49657. //>>excludeStart("ide", pragmas.excludeIdeData);
  49658. args: [],
  49659. source: "isSteppingNode\x0a\x09^ false",
  49660. referencedClasses: [],
  49661. //>>excludeEnd("ide");
  49662. messageSends: []
  49663. }),
  49664. $globals.Node);
  49665. $core.addMethod(
  49666. $core.method({
  49667. selector: "isSteppingNode",
  49668. protocol: '*Compiler-Interpreter',
  49669. fn: function (){
  49670. var self=this;
  49671. return true;
  49672. },
  49673. //>>excludeStart("ide", pragmas.excludeIdeData);
  49674. args: [],
  49675. source: "isSteppingNode\x0a\x09^ true",
  49676. referencedClasses: [],
  49677. //>>excludeEnd("ide");
  49678. messageSends: []
  49679. }),
  49680. $globals.SendNode);
  49681. });
  49682. define("amber/parser", ["./boot"], function($boot) {
  49683. var $globals = $boot.globals, nil = $boot.nil;
  49684. $globals.SmalltalkParser = (function() {
  49685. /*
  49686. * Generated by PEG.js 0.8.0.
  49687. *
  49688. * http://pegjs.majda.cz/
  49689. */
  49690. function peg$subclass(child, parent) {
  49691. function ctor() { this.constructor = child; }
  49692. ctor.prototype = parent.prototype;
  49693. child.prototype = new ctor();
  49694. }
  49695. function SyntaxError(message, expected, found, offset, line, column) {
  49696. this.message = message;
  49697. this.expected = expected;
  49698. this.found = found;
  49699. this.offset = offset;
  49700. this.line = line;
  49701. this.column = column;
  49702. this.name = "SyntaxError";
  49703. }
  49704. peg$subclass(SyntaxError, Error);
  49705. function parse(input) {
  49706. var options = arguments.length > 1 ? arguments[1] : {},
  49707. peg$FAILED = {},
  49708. peg$startRuleFunctions = { start: peg$parsestart },
  49709. peg$startRuleFunction = peg$parsestart,
  49710. peg$c0 = [],
  49711. peg$c1 = peg$FAILED,
  49712. peg$c2 = /^[ \t\x0B\f\xA0\uFEFF\n\r\u2028\u2029]/,
  49713. peg$c3 = { type: "class", value: "[ \\t\\x0B\\f\\xA0\\uFEFF\\n\\r\\u2028\\u2029]", description: "[ \\t\\x0B\\f\\xA0\\uFEFF\\n\\r\\u2028\\u2029]" },
  49714. peg$c4 = "\"",
  49715. peg$c5 = { type: "literal", value: "\"", description: "\"\\\"\"" },
  49716. peg$c6 = /^[^"]/,
  49717. peg$c7 = { type: "class", value: "[^\"]", description: "[^\"]" },
  49718. peg$c8 = /^[a-zA-Z]/,
  49719. peg$c9 = { type: "class", value: "[a-zA-Z]", description: "[a-zA-Z]" },
  49720. peg$c10 = /^[a-zA-Z0-9]/,
  49721. peg$c11 = { type: "class", value: "[a-zA-Z0-9]", description: "[a-zA-Z0-9]" },
  49722. peg$c12 = function(first, others) {return first + others.join("");},
  49723. peg$c13 = ":",
  49724. peg$c14 = { type: "literal", value: ":", description: "\":\"" },
  49725. peg$c15 = function(first, last) {return first + last;},
  49726. peg$c16 = /^[a-zA-Z0-9:]/,
  49727. peg$c17 = { type: "class", value: "[a-zA-Z0-9:]", description: "[a-zA-Z0-9:]" },
  49728. peg$c18 = /^[A-Z]/,
  49729. peg$c19 = { type: "class", value: "[A-Z]", description: "[A-Z]" },
  49730. peg$c20 = "'",
  49731. peg$c21 = { type: "literal", value: "'", description: "\"'\"" },
  49732. peg$c22 = "''",
  49733. peg$c23 = { type: "literal", value: "''", description: "\"''\"" },
  49734. peg$c24 = function() {return "'";},
  49735. peg$c25 = /^[^']/,
  49736. peg$c26 = { type: "class", value: "[^']", description: "[^']" },
  49737. peg$c27 = function(val) {
  49738. return $globals.ValueNode._new()
  49739. ._position_((line()).__at(column()))
  49740. ._source_(text())
  49741. ._value_(val.join(""));
  49742. },
  49743. peg$c28 = "$",
  49744. peg$c29 = { type: "literal", value: "$", description: "\"$\"" },
  49745. peg$c30 = { type: "any", description: "any character" },
  49746. peg$c31 = function(char) {
  49747. return $globals.ValueNode._new()
  49748. ._position_((line()).__at(column()))
  49749. ._source_(text())
  49750. ._value_(char);
  49751. },
  49752. peg$c32 = "#",
  49753. peg$c33 = { type: "literal", value: "#", description: "\"#\"" },
  49754. peg$c34 = function(rest) {return rest;},
  49755. peg$c35 = function(node) {return node._value();},
  49756. peg$c36 = function(val) {
  49757. return $globals.ValueNode._new()
  49758. ._position_((line()).__at(column()))
  49759. ._source_(text())
  49760. ._value_(val);
  49761. },
  49762. peg$c37 = function(n) {
  49763. return $globals.ValueNode._new()
  49764. ._position_((line()).__at(column()))
  49765. ._source_(text())
  49766. ._value_(n);
  49767. },
  49768. peg$c38 = "e",
  49769. peg$c39 = { type: "literal", value: "e", description: "\"e\"" },
  49770. peg$c40 = function(n) {return parseFloat(n.join(""));},
  49771. peg$c41 = null,
  49772. peg$c42 = "-",
  49773. peg$c43 = { type: "literal", value: "-", description: "\"-\"" },
  49774. peg$c44 = "16r",
  49775. peg$c45 = { type: "literal", value: "16r", description: "\"16r\"" },
  49776. peg$c46 = /^[0-9a-fA-F]/,
  49777. peg$c47 = { type: "class", value: "[0-9a-fA-F]", description: "[0-9a-fA-F]" },
  49778. peg$c48 = function(neg, num) {return parseInt(((neg || '') + num.join("")), 16);},
  49779. peg$c49 = /^[0-9]/,
  49780. peg$c50 = { type: "class", value: "[0-9]", description: "[0-9]" },
  49781. peg$c51 = ".",
  49782. peg$c52 = { type: "literal", value: ".", description: "\".\"" },
  49783. peg$c53 = function(neg, digits, dec) {return parseFloat(((neg || '') + digits.join("") + "." + dec.join("")), 10);},
  49784. peg$c54 = function(neg, digits) {return (parseInt((neg || '') + digits.join(""), 10));},
  49785. peg$c55 = "#(",
  49786. peg$c56 = { type: "literal", value: "#(", description: "\"#(\"" },
  49787. peg$c57 = "(",
  49788. peg$c58 = { type: "literal", value: "(", description: "\"(\"" },
  49789. peg$c59 = function(lit) {return lit._value();},
  49790. peg$c60 = ")",
  49791. peg$c61 = { type: "literal", value: ")", description: "\")\"" },
  49792. peg$c62 = function(lits) {
  49793. return $globals.ValueNode._new()
  49794. ._position_((line()).__at(column()))
  49795. ._source_(text())
  49796. ._value_(lits);
  49797. },
  49798. peg$c63 = "{",
  49799. peg$c64 = { type: "literal", value: "{", description: "\"{\"" },
  49800. peg$c65 = "}",
  49801. peg$c66 = { type: "literal", value: "}", description: "\"}\"" },
  49802. peg$c67 = function(expressions) {
  49803. return $globals.DynamicArrayNode._new()
  49804. ._position_((line()).__at(column()))
  49805. ._source_(text())
  49806. ._nodes_(expressions || []);
  49807. },
  49808. peg$c68 = "#{",
  49809. peg$c69 = { type: "literal", value: "#{", description: "\"#{\"" },
  49810. peg$c70 = function(expressions) {
  49811. return $globals.DynamicDictionaryNode._new()
  49812. ._position_((line()).__at(column()))
  49813. ._source_(text())
  49814. ._nodes_(expressions || []);
  49815. },
  49816. peg$c71 = "true",
  49817. peg$c72 = { type: "literal", value: "true", description: "\"true\"" },
  49818. peg$c73 = function() {return true;},
  49819. peg$c74 = "false",
  49820. peg$c75 = { type: "literal", value: "false", description: "\"false\"" },
  49821. peg$c76 = function() {return false;},
  49822. peg$c77 = "nil",
  49823. peg$c78 = { type: "literal", value: "nil", description: "\"nil\"" },
  49824. peg$c79 = function() {return nil;},
  49825. peg$c80 = function(val) {
  49826. return $globals.ValueNode._new()
  49827. ._position_((line()).__at(column()))
  49828. ._source_(text())
  49829. ._value_(val);
  49830. },
  49831. peg$c81 = function(identifier) {
  49832. return $globals.VariableNode._new()
  49833. ._position_((line()).__at(column()))
  49834. ._source_(text())
  49835. ._value_(identifier);
  49836. },
  49837. peg$c82 = function(key, arg) {return {key:key, arg:arg};},
  49838. peg$c83 = /^[\\+*\/=><,@%~|&\-]/,
  49839. peg$c84 = { type: "class", value: "[\\\\+*\\/=><,@%~|&\\-]", description: "[\\\\+*\\/=><,@%~|&\\-]" },
  49840. peg$c85 = function(bin) {return bin.join("");},
  49841. peg$c86 = function(pairs) {
  49842. var keywords = [];
  49843. var params = [];
  49844. var i = 0;
  49845. for(i = 0; i < pairs.length; i++){
  49846. keywords.push(pairs[i].key);
  49847. }
  49848. for(i = 0; i < pairs.length; i++){
  49849. params.push(pairs[i].arg);
  49850. }
  49851. return [keywords.join(""), params];
  49852. },
  49853. peg$c87 = function(selector, arg) {return [selector, [arg]];},
  49854. peg$c88 = function(selector) {return [selector, []];},
  49855. peg$c89 = function(expression) {return expression;},
  49856. peg$c90 = function(first, others) { return [first].concat(others); },
  49857. peg$c91 = ":=",
  49858. peg$c92 = { type: "literal", value: ":=", description: "\":=\"" },
  49859. peg$c93 = function(variable, expression) {
  49860. return $globals.AssignmentNode._new()
  49861. ._position_((line()).__at(column()))
  49862. ._source_(text())
  49863. ._left_(variable)
  49864. ._right_(expression);
  49865. },
  49866. peg$c94 = "^",
  49867. peg$c95 = { type: "literal", value: "^", description: "\"^\"" },
  49868. peg$c96 = function(expression) {
  49869. return $globals.ReturnNode._new()
  49870. ._position_((line()).__at(column()))
  49871. ._source_(text())
  49872. ._nodes_([expression]);
  49873. },
  49874. peg$c97 = "|",
  49875. peg$c98 = { type: "literal", value: "|", description: "\"|\"" },
  49876. peg$c99 = function(variable) {return variable;},
  49877. peg$c100 = function(vars) {return vars;},
  49878. peg$c101 = function(param) {return param;},
  49879. peg$c102 = function(params) {return params;},
  49880. peg$c103 = function(ret) {return [ret];},
  49881. peg$c104 = function(exps, ret) {
  49882. var expressions = exps;
  49883. expressions.push(ret);
  49884. return expressions;
  49885. },
  49886. peg$c105 = function(expressions) {
  49887. return expressions || [];
  49888. },
  49889. peg$c106 = function(temps, statements) {
  49890. return $globals.SequenceNode._new()
  49891. ._position_((line()).__at(column()))
  49892. ._source_(text())
  49893. ._temps_(temps || [])
  49894. ._nodes_(statements || []);
  49895. },
  49896. peg$c107 = "[",
  49897. peg$c108 = { type: "literal", value: "[", description: "\"[\"" },
  49898. peg$c109 = "]",
  49899. peg$c110 = { type: "literal", value: "]", description: "\"]\"" },
  49900. peg$c111 = function(params, sequence) {
  49901. return $globals.BlockNode._new()
  49902. ._position_((line()).__at(column()))
  49903. ._source_(text())
  49904. ._parameters_(params || [])
  49905. ._nodes_([sequence._asBlockSequenceNode()]);
  49906. },
  49907. peg$c112 = void 0,
  49908. peg$c113 = function(selector) {
  49909. return $globals.SendNode._new()
  49910. ._position_((line()).__at(column()))
  49911. ._source_(text())
  49912. ._selector_(selector);
  49913. },
  49914. peg$c114 = function(message, tail) {
  49915. if(tail) {
  49916. return tail._valueForReceiver_(message);
  49917. }
  49918. else {
  49919. return message;
  49920. }
  49921. },
  49922. peg$c115 = function(receiver, tail) {
  49923. if(tail) {
  49924. return tail._valueForReceiver_(receiver);
  49925. }
  49926. else {
  49927. return receiver;
  49928. }
  49929. },
  49930. peg$c116 = function(selector, arg) {
  49931. return $globals.SendNode._new()
  49932. ._position_((line()).__at(column()))
  49933. ._source_(text())
  49934. ._selector_(selector)
  49935. ._arguments_([arg]);
  49936. },
  49937. peg$c117 = function(message, tail) {
  49938. if(tail) {
  49939. return tail._valueForReceiver_(message);
  49940. }
  49941. else {
  49942. return message;
  49943. }
  49944. },
  49945. peg$c118 = function(pairs) {
  49946. var selector = [];
  49947. var args = [];
  49948. for(var i = 0; i < pairs.length; i++) {
  49949. selector.push(pairs[i].key);
  49950. args.push(pairs[i].arg);
  49951. }
  49952. return $globals.SendNode._new()
  49953. ._position_((line()).__at(column()))
  49954. ._source_(text())
  49955. ._selector_(selector.join(""))
  49956. ._arguments_(args);
  49957. },
  49958. peg$c119 = function(receiver, tail) {
  49959. return tail._valueForReceiver_(receiver);
  49960. },
  49961. peg$c120 = ";",
  49962. peg$c121 = { type: "literal", value: ";", description: "\";\"" },
  49963. peg$c122 = function(mess) {return mess;},
  49964. peg$c123 = function(send, messages) {
  49965. var cascade = [];
  49966. cascade.push(send);
  49967. for(var i = 0; i < messages.length; i++) {
  49968. cascade.push(messages[i]);
  49969. }
  49970. return $globals.CascadeNode._new()
  49971. ._position_((line()).__at(column()))
  49972. ._source_(text())
  49973. ._receiver_(send._receiver())
  49974. ._nodes_(cascade);
  49975. },
  49976. peg$c124 = "<",
  49977. peg$c125 = { type: "literal", value: "<", description: "\"<\"" },
  49978. peg$c126 = ">>",
  49979. peg$c127 = { type: "literal", value: ">>", description: "\">>\"" },
  49980. peg$c128 = function() {return ">";},
  49981. peg$c129 = /^[^>]/,
  49982. peg$c130 = { type: "class", value: "[^>]", description: "[^>]" },
  49983. peg$c131 = ">",
  49984. peg$c132 = { type: "literal", value: ">", description: "\">\"" },
  49985. peg$c133 = function(val) {
  49986. return $globals.JSStatementNode._new()
  49987. ._position_((line()).__at(column()))
  49988. ._source_(val.join(""))
  49989. },
  49990. peg$c134 = function(pattern, sequence) {
  49991. return $globals.MethodNode._new()
  49992. ._position_((line()).__at(column()))
  49993. ._source_(text())
  49994. ._selector_(pattern[0])
  49995. ._arguments_(pattern[1])
  49996. ._nodes_([sequence]);
  49997. },
  49998. peg$c135 = function(send) { return send._selector() === "->" },
  49999. peg$c136 = function(send) { return [send._receiver(), send._arguments()[0]]; },
  50000. peg$c137 = function(first, others) { return first.concat.apply(first, others); },
  50001. peg$currPos = 0,
  50002. peg$reportedPos = 0,
  50003. peg$cachedPos = 0,
  50004. peg$cachedPosDetails = { line: 1, column: 1, seenCR: false },
  50005. peg$maxFailPos = 0,
  50006. peg$maxFailExpected = [],
  50007. peg$silentFails = 0,
  50008. peg$cache = {},
  50009. peg$result;
  50010. if ("startRule" in options) {
  50011. if (!(options.startRule in peg$startRuleFunctions)) {
  50012. throw new Error("Can't start parsing from rule \"" + options.startRule + "\".");
  50013. }
  50014. peg$startRuleFunction = peg$startRuleFunctions[options.startRule];
  50015. }
  50016. function text() {
  50017. return input.substring(peg$reportedPos, peg$currPos);
  50018. }
  50019. function offset() {
  50020. return peg$reportedPos;
  50021. }
  50022. function line() {
  50023. return peg$computePosDetails(peg$reportedPos).line;
  50024. }
  50025. function column() {
  50026. return peg$computePosDetails(peg$reportedPos).column;
  50027. }
  50028. function expected(description) {
  50029. throw peg$buildException(
  50030. null,
  50031. [{ type: "other", description: description }],
  50032. peg$reportedPos
  50033. );
  50034. }
  50035. function error(message) {
  50036. throw peg$buildException(message, null, peg$reportedPos);
  50037. }
  50038. function peg$computePosDetails(pos) {
  50039. function advance(details, startPos, endPos) {
  50040. var p, ch;
  50041. for (p = startPos; p < endPos; p++) {
  50042. ch = input.charAt(p);
  50043. if (ch === "\n") {
  50044. if (!details.seenCR) { details.line++; }
  50045. details.column = 1;
  50046. details.seenCR = false;
  50047. } else if (ch === "\r" || ch === "\u2028" || ch === "\u2029") {
  50048. details.line++;
  50049. details.column = 1;
  50050. details.seenCR = true;
  50051. } else {
  50052. details.column++;
  50053. details.seenCR = false;
  50054. }
  50055. }
  50056. }
  50057. if (peg$cachedPos !== pos) {
  50058. if (peg$cachedPos > pos) {
  50059. peg$cachedPos = 0;
  50060. peg$cachedPosDetails = { line: 1, column: 1, seenCR: false };
  50061. }
  50062. advance(peg$cachedPosDetails, peg$cachedPos, pos);
  50063. peg$cachedPos = pos;
  50064. }
  50065. return peg$cachedPosDetails;
  50066. }
  50067. function peg$fail(expected) {
  50068. if (peg$currPos < peg$maxFailPos) { return; }
  50069. if (peg$currPos > peg$maxFailPos) {
  50070. peg$maxFailPos = peg$currPos;
  50071. peg$maxFailExpected = [];
  50072. }
  50073. peg$maxFailExpected.push(expected);
  50074. }
  50075. function peg$buildException(message, expected, pos) {
  50076. function cleanupExpected(expected) {
  50077. var i = 1;
  50078. expected.sort(function(a, b) {
  50079. if (a.description < b.description) {
  50080. return -1;
  50081. } else if (a.description > b.description) {
  50082. return 1;
  50083. } else {
  50084. return 0;
  50085. }
  50086. });
  50087. while (i < expected.length) {
  50088. if (expected[i - 1] === expected[i]) {
  50089. expected.splice(i, 1);
  50090. } else {
  50091. i++;
  50092. }
  50093. }
  50094. }
  50095. function buildMessage(expected, found) {
  50096. function stringEscape(s) {
  50097. function hex(ch) { return ch.charCodeAt(0).toString(16).toUpperCase(); }
  50098. return s
  50099. .replace(/\\/g, '\\\\')
  50100. .replace(/"/g, '\\"')
  50101. .replace(/\x08/g, '\\b')
  50102. .replace(/\t/g, '\\t')
  50103. .replace(/\n/g, '\\n')
  50104. .replace(/\f/g, '\\f')
  50105. .replace(/\r/g, '\\r')
  50106. .replace(/[\x00-\x07\x0B\x0E\x0F]/g, function(ch) { return '\\x0' + hex(ch); })
  50107. .replace(/[\x10-\x1F\x80-\xFF]/g, function(ch) { return '\\x' + hex(ch); })
  50108. .replace(/[\u0180-\u0FFF]/g, function(ch) { return '\\u0' + hex(ch); })
  50109. .replace(/[\u1080-\uFFFF]/g, function(ch) { return '\\u' + hex(ch); });
  50110. }
  50111. var expectedDescs = new Array(expected.length),
  50112. expectedDesc, foundDesc, i;
  50113. for (i = 0; i < expected.length; i++) {
  50114. expectedDescs[i] = expected[i].description;
  50115. }
  50116. expectedDesc = expected.length > 1
  50117. ? expectedDescs.slice(0, -1).join(", ")
  50118. + " or "
  50119. + expectedDescs[expected.length - 1]
  50120. : expectedDescs[0];
  50121. foundDesc = found ? "\"" + stringEscape(found) + "\"" : "end of input";
  50122. return "Expected " + expectedDesc + " but " + foundDesc + " found.";
  50123. }
  50124. var posDetails = peg$computePosDetails(pos),
  50125. found = pos < input.length ? input.charAt(pos) : null;
  50126. if (expected !== null) {
  50127. cleanupExpected(expected);
  50128. }
  50129. return new SyntaxError(
  50130. message !== null ? message : buildMessage(expected, found),
  50131. expected,
  50132. found,
  50133. pos,
  50134. posDetails.line,
  50135. posDetails.column
  50136. );
  50137. }
  50138. function peg$parsestart() {
  50139. var s0;
  50140. var key = peg$currPos * 60 + 0,
  50141. cached = peg$cache[key];
  50142. if (cached) {
  50143. peg$currPos = cached.nextPos;
  50144. return cached.result;
  50145. }
  50146. s0 = peg$parsemethod();
  50147. peg$cache[key] = { nextPos: peg$currPos, result: s0 };
  50148. return s0;
  50149. }
  50150. function peg$parseseparator() {
  50151. var s0, s1;
  50152. var key = peg$currPos * 60 + 1,
  50153. cached = peg$cache[key];
  50154. if (cached) {
  50155. peg$currPos = cached.nextPos;
  50156. return cached.result;
  50157. }
  50158. s0 = [];
  50159. if (peg$c2.test(input.charAt(peg$currPos))) {
  50160. s1 = input.charAt(peg$currPos);
  50161. peg$currPos++;
  50162. } else {
  50163. s1 = peg$FAILED;
  50164. if (peg$silentFails === 0) { peg$fail(peg$c3); }
  50165. }
  50166. if (s1 !== peg$FAILED) {
  50167. while (s1 !== peg$FAILED) {
  50168. s0.push(s1);
  50169. if (peg$c2.test(input.charAt(peg$currPos))) {
  50170. s1 = input.charAt(peg$currPos);
  50171. peg$currPos++;
  50172. } else {
  50173. s1 = peg$FAILED;
  50174. if (peg$silentFails === 0) { peg$fail(peg$c3); }
  50175. }
  50176. }
  50177. } else {
  50178. s0 = peg$c1;
  50179. }
  50180. peg$cache[key] = { nextPos: peg$currPos, result: s0 };
  50181. return s0;
  50182. }
  50183. function peg$parsecomments() {
  50184. var s0, s1, s2, s3, s4;
  50185. var key = peg$currPos * 60 + 2,
  50186. cached = peg$cache[key];
  50187. if (cached) {
  50188. peg$currPos = cached.nextPos;
  50189. return cached.result;
  50190. }
  50191. s0 = [];
  50192. s1 = peg$currPos;
  50193. if (input.charCodeAt(peg$currPos) === 34) {
  50194. s2 = peg$c4;
  50195. peg$currPos++;
  50196. } else {
  50197. s2 = peg$FAILED;
  50198. if (peg$silentFails === 0) { peg$fail(peg$c5); }
  50199. }
  50200. if (s2 !== peg$FAILED) {
  50201. s3 = [];
  50202. if (peg$c6.test(input.charAt(peg$currPos))) {
  50203. s4 = input.charAt(peg$currPos);
  50204. peg$currPos++;
  50205. } else {
  50206. s4 = peg$FAILED;
  50207. if (peg$silentFails === 0) { peg$fail(peg$c7); }
  50208. }
  50209. while (s4 !== peg$FAILED) {
  50210. s3.push(s4);
  50211. if (peg$c6.test(input.charAt(peg$currPos))) {
  50212. s4 = input.charAt(peg$currPos);
  50213. peg$currPos++;
  50214. } else {
  50215. s4 = peg$FAILED;
  50216. if (peg$silentFails === 0) { peg$fail(peg$c7); }
  50217. }
  50218. }
  50219. if (s3 !== peg$FAILED) {
  50220. if (input.charCodeAt(peg$currPos) === 34) {
  50221. s4 = peg$c4;
  50222. peg$currPos++;
  50223. } else {
  50224. s4 = peg$FAILED;
  50225. if (peg$silentFails === 0) { peg$fail(peg$c5); }
  50226. }
  50227. if (s4 !== peg$FAILED) {
  50228. s2 = [s2, s3, s4];
  50229. s1 = s2;
  50230. } else {
  50231. peg$currPos = s1;
  50232. s1 = peg$c1;
  50233. }
  50234. } else {
  50235. peg$currPos = s1;
  50236. s1 = peg$c1;
  50237. }
  50238. } else {
  50239. peg$currPos = s1;
  50240. s1 = peg$c1;
  50241. }
  50242. if (s1 !== peg$FAILED) {
  50243. while (s1 !== peg$FAILED) {
  50244. s0.push(s1);
  50245. s1 = peg$currPos;
  50246. if (input.charCodeAt(peg$currPos) === 34) {
  50247. s2 = peg$c4;
  50248. peg$currPos++;
  50249. } else {
  50250. s2 = peg$FAILED;
  50251. if (peg$silentFails === 0) { peg$fail(peg$c5); }
  50252. }
  50253. if (s2 !== peg$FAILED) {
  50254. s3 = [];
  50255. if (peg$c6.test(input.charAt(peg$currPos))) {
  50256. s4 = input.charAt(peg$currPos);
  50257. peg$currPos++;
  50258. } else {
  50259. s4 = peg$FAILED;
  50260. if (peg$silentFails === 0) { peg$fail(peg$c7); }
  50261. }
  50262. while (s4 !== peg$FAILED) {
  50263. s3.push(s4);
  50264. if (peg$c6.test(input.charAt(peg$currPos))) {
  50265. s4 = input.charAt(peg$currPos);
  50266. peg$currPos++;
  50267. } else {
  50268. s4 = peg$FAILED;
  50269. if (peg$silentFails === 0) { peg$fail(peg$c7); }
  50270. }
  50271. }
  50272. if (s3 !== peg$FAILED) {
  50273. if (input.charCodeAt(peg$currPos) === 34) {
  50274. s4 = peg$c4;
  50275. peg$currPos++;
  50276. } else {
  50277. s4 = peg$FAILED;
  50278. if (peg$silentFails === 0) { peg$fail(peg$c5); }
  50279. }
  50280. if (s4 !== peg$FAILED) {
  50281. s2 = [s2, s3, s4];
  50282. s1 = s2;
  50283. } else {
  50284. peg$currPos = s1;
  50285. s1 = peg$c1;
  50286. }
  50287. } else {
  50288. peg$currPos = s1;
  50289. s1 = peg$c1;
  50290. }
  50291. } else {
  50292. peg$currPos = s1;
  50293. s1 = peg$c1;
  50294. }
  50295. }
  50296. } else {
  50297. s0 = peg$c1;
  50298. }
  50299. peg$cache[key] = { nextPos: peg$currPos, result: s0 };
  50300. return s0;
  50301. }
  50302. function peg$parsews() {
  50303. var s0, s1;
  50304. var key = peg$currPos * 60 + 3,
  50305. cached = peg$cache[key];
  50306. if (cached) {
  50307. peg$currPos = cached.nextPos;
  50308. return cached.result;
  50309. }
  50310. s0 = [];
  50311. s1 = peg$parseseparator();
  50312. if (s1 === peg$FAILED) {
  50313. s1 = peg$parsecomments();
  50314. }
  50315. while (s1 !== peg$FAILED) {
  50316. s0.push(s1);
  50317. s1 = peg$parseseparator();
  50318. if (s1 === peg$FAILED) {
  50319. s1 = peg$parsecomments();
  50320. }
  50321. }
  50322. peg$cache[key] = { nextPos: peg$currPos, result: s0 };
  50323. return s0;
  50324. }
  50325. function peg$parseidentifier() {
  50326. var s0, s1, s2, s3;
  50327. var key = peg$currPos * 60 + 4,
  50328. cached = peg$cache[key];
  50329. if (cached) {
  50330. peg$currPos = cached.nextPos;
  50331. return cached.result;
  50332. }
  50333. s0 = peg$currPos;
  50334. if (peg$c8.test(input.charAt(peg$currPos))) {
  50335. s1 = input.charAt(peg$currPos);
  50336. peg$currPos++;
  50337. } else {
  50338. s1 = peg$FAILED;
  50339. if (peg$silentFails === 0) { peg$fail(peg$c9); }
  50340. }
  50341. if (s1 !== peg$FAILED) {
  50342. s2 = [];
  50343. if (peg$c10.test(input.charAt(peg$currPos))) {
  50344. s3 = input.charAt(peg$currPos);
  50345. peg$currPos++;
  50346. } else {
  50347. s3 = peg$FAILED;
  50348. if (peg$silentFails === 0) { peg$fail(peg$c11); }
  50349. }
  50350. while (s3 !== peg$FAILED) {
  50351. s2.push(s3);
  50352. if (peg$c10.test(input.charAt(peg$currPos))) {
  50353. s3 = input.charAt(peg$currPos);
  50354. peg$currPos++;
  50355. } else {
  50356. s3 = peg$FAILED;
  50357. if (peg$silentFails === 0) { peg$fail(peg$c11); }
  50358. }
  50359. }
  50360. if (s2 !== peg$FAILED) {
  50361. peg$reportedPos = s0;
  50362. s1 = peg$c12(s1, s2);
  50363. s0 = s1;
  50364. } else {
  50365. peg$currPos = s0;
  50366. s0 = peg$c1;
  50367. }
  50368. } else {
  50369. peg$currPos = s0;
  50370. s0 = peg$c1;
  50371. }
  50372. peg$cache[key] = { nextPos: peg$currPos, result: s0 };
  50373. return s0;
  50374. }
  50375. function peg$parsekeyword() {
  50376. var s0, s1, s2;
  50377. var key = peg$currPos * 60 + 5,
  50378. cached = peg$cache[key];
  50379. if (cached) {
  50380. peg$currPos = cached.nextPos;
  50381. return cached.result;
  50382. }
  50383. s0 = peg$currPos;
  50384. s1 = peg$parseidentifier();
  50385. if (s1 !== peg$FAILED) {
  50386. if (input.charCodeAt(peg$currPos) === 58) {
  50387. s2 = peg$c13;
  50388. peg$currPos++;
  50389. } else {
  50390. s2 = peg$FAILED;
  50391. if (peg$silentFails === 0) { peg$fail(peg$c14); }
  50392. }
  50393. if (s2 !== peg$FAILED) {
  50394. peg$reportedPos = s0;
  50395. s1 = peg$c15(s1, s2);
  50396. s0 = s1;
  50397. } else {
  50398. peg$currPos = s0;
  50399. s0 = peg$c1;
  50400. }
  50401. } else {
  50402. peg$currPos = s0;
  50403. s0 = peg$c1;
  50404. }
  50405. peg$cache[key] = { nextPos: peg$currPos, result: s0 };
  50406. return s0;
  50407. }
  50408. function peg$parseselector() {
  50409. var s0, s1, s2, s3;
  50410. var key = peg$currPos * 60 + 6,
  50411. cached = peg$cache[key];
  50412. if (cached) {
  50413. peg$currPos = cached.nextPos;
  50414. return cached.result;
  50415. }
  50416. s0 = peg$currPos;
  50417. if (peg$c8.test(input.charAt(peg$currPos))) {
  50418. s1 = input.charAt(peg$currPos);
  50419. peg$currPos++;
  50420. } else {
  50421. s1 = peg$FAILED;
  50422. if (peg$silentFails === 0) { peg$fail(peg$c9); }
  50423. }
  50424. if (s1 !== peg$FAILED) {
  50425. s2 = [];
  50426. if (peg$c16.test(input.charAt(peg$currPos))) {
  50427. s3 = input.charAt(peg$currPos);
  50428. peg$currPos++;
  50429. } else {
  50430. s3 = peg$FAILED;
  50431. if (peg$silentFails === 0) { peg$fail(peg$c17); }
  50432. }
  50433. while (s3 !== peg$FAILED) {
  50434. s2.push(s3);
  50435. if (peg$c16.test(input.charAt(peg$currPos))) {
  50436. s3 = input.charAt(peg$currPos);
  50437. peg$currPos++;
  50438. } else {
  50439. s3 = peg$FAILED;
  50440. if (peg$silentFails === 0) { peg$fail(peg$c17); }
  50441. }
  50442. }
  50443. if (s2 !== peg$FAILED) {
  50444. peg$reportedPos = s0;
  50445. s1 = peg$c12(s1, s2);
  50446. s0 = s1;
  50447. } else {
  50448. peg$currPos = s0;
  50449. s0 = peg$c1;
  50450. }
  50451. } else {
  50452. peg$currPos = s0;
  50453. s0 = peg$c1;
  50454. }
  50455. peg$cache[key] = { nextPos: peg$currPos, result: s0 };
  50456. return s0;
  50457. }
  50458. function peg$parseclassName() {
  50459. var s0, s1, s2, s3;
  50460. var key = peg$currPos * 60 + 7,
  50461. cached = peg$cache[key];
  50462. if (cached) {
  50463. peg$currPos = cached.nextPos;
  50464. return cached.result;
  50465. }
  50466. s0 = peg$currPos;
  50467. if (peg$c18.test(input.charAt(peg$currPos))) {
  50468. s1 = input.charAt(peg$currPos);
  50469. peg$currPos++;
  50470. } else {
  50471. s1 = peg$FAILED;
  50472. if (peg$silentFails === 0) { peg$fail(peg$c19); }
  50473. }
  50474. if (s1 !== peg$FAILED) {
  50475. s2 = [];
  50476. if (peg$c10.test(input.charAt(peg$currPos))) {
  50477. s3 = input.charAt(peg$currPos);
  50478. peg$currPos++;
  50479. } else {
  50480. s3 = peg$FAILED;
  50481. if (peg$silentFails === 0) { peg$fail(peg$c11); }
  50482. }
  50483. while (s3 !== peg$FAILED) {
  50484. s2.push(s3);
  50485. if (peg$c10.test(input.charAt(peg$currPos))) {
  50486. s3 = input.charAt(peg$currPos);
  50487. peg$currPos++;
  50488. } else {
  50489. s3 = peg$FAILED;
  50490. if (peg$silentFails === 0) { peg$fail(peg$c11); }
  50491. }
  50492. }
  50493. if (s2 !== peg$FAILED) {
  50494. peg$reportedPos = s0;
  50495. s1 = peg$c12(s1, s2);
  50496. s0 = s1;
  50497. } else {
  50498. peg$currPos = s0;
  50499. s0 = peg$c1;
  50500. }
  50501. } else {
  50502. peg$currPos = s0;
  50503. s0 = peg$c1;
  50504. }
  50505. peg$cache[key] = { nextPos: peg$currPos, result: s0 };
  50506. return s0;
  50507. }
  50508. function peg$parsestring() {
  50509. var s0, s1, s2, s3, s4;
  50510. var key = peg$currPos * 60 + 8,
  50511. cached = peg$cache[key];
  50512. if (cached) {
  50513. peg$currPos = cached.nextPos;
  50514. return cached.result;
  50515. }
  50516. s0 = peg$currPos;
  50517. if (input.charCodeAt(peg$currPos) === 39) {
  50518. s1 = peg$c20;
  50519. peg$currPos++;
  50520. } else {
  50521. s1 = peg$FAILED;
  50522. if (peg$silentFails === 0) { peg$fail(peg$c21); }
  50523. }
  50524. if (s1 !== peg$FAILED) {
  50525. s2 = [];
  50526. s3 = peg$currPos;
  50527. if (input.substr(peg$currPos, 2) === peg$c22) {
  50528. s4 = peg$c22;
  50529. peg$currPos += 2;
  50530. } else {
  50531. s4 = peg$FAILED;
  50532. if (peg$silentFails === 0) { peg$fail(peg$c23); }
  50533. }
  50534. if (s4 !== peg$FAILED) {
  50535. peg$reportedPos = s3;
  50536. s4 = peg$c24();
  50537. }
  50538. s3 = s4;
  50539. if (s3 === peg$FAILED) {
  50540. if (peg$c25.test(input.charAt(peg$currPos))) {
  50541. s3 = input.charAt(peg$currPos);
  50542. peg$currPos++;
  50543. } else {
  50544. s3 = peg$FAILED;
  50545. if (peg$silentFails === 0) { peg$fail(peg$c26); }
  50546. }
  50547. }
  50548. while (s3 !== peg$FAILED) {
  50549. s2.push(s3);
  50550. s3 = peg$currPos;
  50551. if (input.substr(peg$currPos, 2) === peg$c22) {
  50552. s4 = peg$c22;
  50553. peg$currPos += 2;
  50554. } else {
  50555. s4 = peg$FAILED;
  50556. if (peg$silentFails === 0) { peg$fail(peg$c23); }
  50557. }
  50558. if (s4 !== peg$FAILED) {
  50559. peg$reportedPos = s3;
  50560. s4 = peg$c24();
  50561. }
  50562. s3 = s4;
  50563. if (s3 === peg$FAILED) {
  50564. if (peg$c25.test(input.charAt(peg$currPos))) {
  50565. s3 = input.charAt(peg$currPos);
  50566. peg$currPos++;
  50567. } else {
  50568. s3 = peg$FAILED;
  50569. if (peg$silentFails === 0) { peg$fail(peg$c26); }
  50570. }
  50571. }
  50572. }
  50573. if (s2 !== peg$FAILED) {
  50574. if (input.charCodeAt(peg$currPos) === 39) {
  50575. s3 = peg$c20;
  50576. peg$currPos++;
  50577. } else {
  50578. s3 = peg$FAILED;
  50579. if (peg$silentFails === 0) { peg$fail(peg$c21); }
  50580. }
  50581. if (s3 !== peg$FAILED) {
  50582. peg$reportedPos = s0;
  50583. s1 = peg$c27(s2);
  50584. s0 = s1;
  50585. } else {
  50586. peg$currPos = s0;
  50587. s0 = peg$c1;
  50588. }
  50589. } else {
  50590. peg$currPos = s0;
  50591. s0 = peg$c1;
  50592. }
  50593. } else {
  50594. peg$currPos = s0;
  50595. s0 = peg$c1;
  50596. }
  50597. peg$cache[key] = { nextPos: peg$currPos, result: s0 };
  50598. return s0;
  50599. }
  50600. function peg$parsecharacter() {
  50601. var s0, s1, s2;
  50602. var key = peg$currPos * 60 + 9,
  50603. cached = peg$cache[key];
  50604. if (cached) {
  50605. peg$currPos = cached.nextPos;
  50606. return cached.result;
  50607. }
  50608. s0 = peg$currPos;
  50609. if (input.charCodeAt(peg$currPos) === 36) {
  50610. s1 = peg$c28;
  50611. peg$currPos++;
  50612. } else {
  50613. s1 = peg$FAILED;
  50614. if (peg$silentFails === 0) { peg$fail(peg$c29); }
  50615. }
  50616. if (s1 !== peg$FAILED) {
  50617. if (input.length > peg$currPos) {
  50618. s2 = input.charAt(peg$currPos);
  50619. peg$currPos++;
  50620. } else {
  50621. s2 = peg$FAILED;
  50622. if (peg$silentFails === 0) { peg$fail(peg$c30); }
  50623. }
  50624. if (s2 !== peg$FAILED) {
  50625. peg$reportedPos = s0;
  50626. s1 = peg$c31(s2);
  50627. s0 = s1;
  50628. } else {
  50629. peg$currPos = s0;
  50630. s0 = peg$c1;
  50631. }
  50632. } else {
  50633. peg$currPos = s0;
  50634. s0 = peg$c1;
  50635. }
  50636. peg$cache[key] = { nextPos: peg$currPos, result: s0 };
  50637. return s0;
  50638. }
  50639. function peg$parsesymbol() {
  50640. var s0, s1, s2;
  50641. var key = peg$currPos * 60 + 10,
  50642. cached = peg$cache[key];
  50643. if (cached) {
  50644. peg$currPos = cached.nextPos;
  50645. return cached.result;
  50646. }
  50647. s0 = peg$currPos;
  50648. if (input.charCodeAt(peg$currPos) === 35) {
  50649. s1 = peg$c32;
  50650. peg$currPos++;
  50651. } else {
  50652. s1 = peg$FAILED;
  50653. if (peg$silentFails === 0) { peg$fail(peg$c33); }
  50654. }
  50655. if (s1 !== peg$FAILED) {
  50656. s2 = peg$parsebareSymbol();
  50657. if (s2 !== peg$FAILED) {
  50658. peg$reportedPos = s0;
  50659. s1 = peg$c34(s2);
  50660. s0 = s1;
  50661. } else {
  50662. peg$currPos = s0;
  50663. s0 = peg$c1;
  50664. }
  50665. } else {
  50666. peg$currPos = s0;
  50667. s0 = peg$c1;
  50668. }
  50669. peg$cache[key] = { nextPos: peg$currPos, result: s0 };
  50670. return s0;
  50671. }
  50672. function peg$parsebareSymbol() {
  50673. var s0, s1, s2;
  50674. var key = peg$currPos * 60 + 11,
  50675. cached = peg$cache[key];
  50676. if (cached) {
  50677. peg$currPos = cached.nextPos;
  50678. return cached.result;
  50679. }
  50680. s0 = peg$currPos;
  50681. s1 = peg$parseselector();
  50682. if (s1 === peg$FAILED) {
  50683. s1 = peg$parsebinarySelector();
  50684. if (s1 === peg$FAILED) {
  50685. s1 = peg$currPos;
  50686. s2 = peg$parsestring();
  50687. if (s2 !== peg$FAILED) {
  50688. peg$reportedPos = s1;
  50689. s2 = peg$c35(s2);
  50690. }
  50691. s1 = s2;
  50692. }
  50693. }
  50694. if (s1 !== peg$FAILED) {
  50695. peg$reportedPos = s0;
  50696. s1 = peg$c36(s1);
  50697. }
  50698. s0 = s1;
  50699. peg$cache[key] = { nextPos: peg$currPos, result: s0 };
  50700. return s0;
  50701. }
  50702. function peg$parsenumber() {
  50703. var s0, s1;
  50704. var key = peg$currPos * 60 + 12,
  50705. cached = peg$cache[key];
  50706. if (cached) {
  50707. peg$currPos = cached.nextPos;
  50708. return cached.result;
  50709. }
  50710. s0 = peg$currPos;
  50711. s1 = peg$parsenumberExp();
  50712. if (s1 === peg$FAILED) {
  50713. s1 = peg$parsehex();
  50714. if (s1 === peg$FAILED) {
  50715. s1 = peg$parsefloat();
  50716. if (s1 === peg$FAILED) {
  50717. s1 = peg$parseinteger();
  50718. }
  50719. }
  50720. }
  50721. if (s1 !== peg$FAILED) {
  50722. peg$reportedPos = s0;
  50723. s1 = peg$c37(s1);
  50724. }
  50725. s0 = s1;
  50726. peg$cache[key] = { nextPos: peg$currPos, result: s0 };
  50727. return s0;
  50728. }
  50729. function peg$parsenumberExp() {
  50730. var s0, s1, s2, s3, s4;
  50731. var key = peg$currPos * 60 + 13,
  50732. cached = peg$cache[key];
  50733. if (cached) {
  50734. peg$currPos = cached.nextPos;
  50735. return cached.result;
  50736. }
  50737. s0 = peg$currPos;
  50738. s1 = peg$currPos;
  50739. s2 = peg$parsefloat();
  50740. if (s2 === peg$FAILED) {
  50741. s2 = peg$parseinteger();
  50742. }
  50743. if (s2 !== peg$FAILED) {
  50744. if (input.charCodeAt(peg$currPos) === 101) {
  50745. s3 = peg$c38;
  50746. peg$currPos++;
  50747. } else {
  50748. s3 = peg$FAILED;
  50749. if (peg$silentFails === 0) { peg$fail(peg$c39); }
  50750. }
  50751. if (s3 !== peg$FAILED) {
  50752. s4 = peg$parseinteger();
  50753. if (s4 !== peg$FAILED) {
  50754. s2 = [s2, s3, s4];
  50755. s1 = s2;
  50756. } else {
  50757. peg$currPos = s1;
  50758. s1 = peg$c1;
  50759. }
  50760. } else {
  50761. peg$currPos = s1;
  50762. s1 = peg$c1;
  50763. }
  50764. } else {
  50765. peg$currPos = s1;
  50766. s1 = peg$c1;
  50767. }
  50768. if (s1 !== peg$FAILED) {
  50769. peg$reportedPos = s0;
  50770. s1 = peg$c40(s1);
  50771. }
  50772. s0 = s1;
  50773. peg$cache[key] = { nextPos: peg$currPos, result: s0 };
  50774. return s0;
  50775. }
  50776. function peg$parsehex() {
  50777. var s0, s1, s2, s3, s4;
  50778. var key = peg$currPos * 60 + 14,
  50779. cached = peg$cache[key];
  50780. if (cached) {
  50781. peg$currPos = cached.nextPos;
  50782. return cached.result;
  50783. }
  50784. s0 = peg$currPos;
  50785. if (input.charCodeAt(peg$currPos) === 45) {
  50786. s1 = peg$c42;
  50787. peg$currPos++;
  50788. } else {
  50789. s1 = peg$FAILED;
  50790. if (peg$silentFails === 0) { peg$fail(peg$c43); }
  50791. }
  50792. if (s1 === peg$FAILED) {
  50793. s1 = peg$c41;
  50794. }
  50795. if (s1 !== peg$FAILED) {
  50796. if (input.substr(peg$currPos, 3) === peg$c44) {
  50797. s2 = peg$c44;
  50798. peg$currPos += 3;
  50799. } else {
  50800. s2 = peg$FAILED;
  50801. if (peg$silentFails === 0) { peg$fail(peg$c45); }
  50802. }
  50803. if (s2 !== peg$FAILED) {
  50804. s3 = [];
  50805. if (peg$c46.test(input.charAt(peg$currPos))) {
  50806. s4 = input.charAt(peg$currPos);
  50807. peg$currPos++;
  50808. } else {
  50809. s4 = peg$FAILED;
  50810. if (peg$silentFails === 0) { peg$fail(peg$c47); }
  50811. }
  50812. if (s4 !== peg$FAILED) {
  50813. while (s4 !== peg$FAILED) {
  50814. s3.push(s4);
  50815. if (peg$c46.test(input.charAt(peg$currPos))) {
  50816. s4 = input.charAt(peg$currPos);
  50817. peg$currPos++;
  50818. } else {
  50819. s4 = peg$FAILED;
  50820. if (peg$silentFails === 0) { peg$fail(peg$c47); }
  50821. }
  50822. }
  50823. } else {
  50824. s3 = peg$c1;
  50825. }
  50826. if (s3 !== peg$FAILED) {
  50827. peg$reportedPos = s0;
  50828. s1 = peg$c48(s1, s3);
  50829. s0 = s1;
  50830. } else {
  50831. peg$currPos = s0;
  50832. s0 = peg$c1;
  50833. }
  50834. } else {
  50835. peg$currPos = s0;
  50836. s0 = peg$c1;
  50837. }
  50838. } else {
  50839. peg$currPos = s0;
  50840. s0 = peg$c1;
  50841. }
  50842. peg$cache[key] = { nextPos: peg$currPos, result: s0 };
  50843. return s0;
  50844. }
  50845. function peg$parsefloat() {
  50846. var s0, s1, s2, s3, s4, s5;
  50847. var key = peg$currPos * 60 + 15,
  50848. cached = peg$cache[key];
  50849. if (cached) {
  50850. peg$currPos = cached.nextPos;
  50851. return cached.result;
  50852. }
  50853. s0 = peg$currPos;
  50854. if (input.charCodeAt(peg$currPos) === 45) {
  50855. s1 = peg$c42;
  50856. peg$currPos++;
  50857. } else {
  50858. s1 = peg$FAILED;
  50859. if (peg$silentFails === 0) { peg$fail(peg$c43); }
  50860. }
  50861. if (s1 === peg$FAILED) {
  50862. s1 = peg$c41;
  50863. }
  50864. if (s1 !== peg$FAILED) {
  50865. s2 = [];
  50866. if (peg$c49.test(input.charAt(peg$currPos))) {
  50867. s3 = input.charAt(peg$currPos);
  50868. peg$currPos++;
  50869. } else {
  50870. s3 = peg$FAILED;
  50871. if (peg$silentFails === 0) { peg$fail(peg$c50); }
  50872. }
  50873. if (s3 !== peg$FAILED) {
  50874. while (s3 !== peg$FAILED) {
  50875. s2.push(s3);
  50876. if (peg$c49.test(input.charAt(peg$currPos))) {
  50877. s3 = input.charAt(peg$currPos);
  50878. peg$currPos++;
  50879. } else {
  50880. s3 = peg$FAILED;
  50881. if (peg$silentFails === 0) { peg$fail(peg$c50); }
  50882. }
  50883. }
  50884. } else {
  50885. s2 = peg$c1;
  50886. }
  50887. if (s2 !== peg$FAILED) {
  50888. if (input.charCodeAt(peg$currPos) === 46) {
  50889. s3 = peg$c51;
  50890. peg$currPos++;
  50891. } else {
  50892. s3 = peg$FAILED;
  50893. if (peg$silentFails === 0) { peg$fail(peg$c52); }
  50894. }
  50895. if (s3 !== peg$FAILED) {
  50896. s4 = [];
  50897. if (peg$c49.test(input.charAt(peg$currPos))) {
  50898. s5 = input.charAt(peg$currPos);
  50899. peg$currPos++;
  50900. } else {
  50901. s5 = peg$FAILED;
  50902. if (peg$silentFails === 0) { peg$fail(peg$c50); }
  50903. }
  50904. if (s5 !== peg$FAILED) {
  50905. while (s5 !== peg$FAILED) {
  50906. s4.push(s5);
  50907. if (peg$c49.test(input.charAt(peg$currPos))) {
  50908. s5 = input.charAt(peg$currPos);
  50909. peg$currPos++;
  50910. } else {
  50911. s5 = peg$FAILED;
  50912. if (peg$silentFails === 0) { peg$fail(peg$c50); }
  50913. }
  50914. }
  50915. } else {
  50916. s4 = peg$c1;
  50917. }
  50918. if (s4 !== peg$FAILED) {
  50919. peg$reportedPos = s0;
  50920. s1 = peg$c53(s1, s2, s4);
  50921. s0 = s1;
  50922. } else {
  50923. peg$currPos = s0;
  50924. s0 = peg$c1;
  50925. }
  50926. } else {
  50927. peg$currPos = s0;
  50928. s0 = peg$c1;
  50929. }
  50930. } else {
  50931. peg$currPos = s0;
  50932. s0 = peg$c1;
  50933. }
  50934. } else {
  50935. peg$currPos = s0;
  50936. s0 = peg$c1;
  50937. }
  50938. peg$cache[key] = { nextPos: peg$currPos, result: s0 };
  50939. return s0;
  50940. }
  50941. function peg$parseinteger() {
  50942. var s0, s1, s2, s3;
  50943. var key = peg$currPos * 60 + 16,
  50944. cached = peg$cache[key];
  50945. if (cached) {
  50946. peg$currPos = cached.nextPos;
  50947. return cached.result;
  50948. }
  50949. s0 = peg$currPos;
  50950. if (input.charCodeAt(peg$currPos) === 45) {
  50951. s1 = peg$c42;
  50952. peg$currPos++;
  50953. } else {
  50954. s1 = peg$FAILED;
  50955. if (peg$silentFails === 0) { peg$fail(peg$c43); }
  50956. }
  50957. if (s1 === peg$FAILED) {
  50958. s1 = peg$c41;
  50959. }
  50960. if (s1 !== peg$FAILED) {
  50961. s2 = [];
  50962. if (peg$c49.test(input.charAt(peg$currPos))) {
  50963. s3 = input.charAt(peg$currPos);
  50964. peg$currPos++;
  50965. } else {
  50966. s3 = peg$FAILED;
  50967. if (peg$silentFails === 0) { peg$fail(peg$c50); }
  50968. }
  50969. if (s3 !== peg$FAILED) {
  50970. while (s3 !== peg$FAILED) {
  50971. s2.push(s3);
  50972. if (peg$c49.test(input.charAt(peg$currPos))) {
  50973. s3 = input.charAt(peg$currPos);
  50974. peg$currPos++;
  50975. } else {
  50976. s3 = peg$FAILED;
  50977. if (peg$silentFails === 0) { peg$fail(peg$c50); }
  50978. }
  50979. }
  50980. } else {
  50981. s2 = peg$c1;
  50982. }
  50983. if (s2 !== peg$FAILED) {
  50984. peg$reportedPos = s0;
  50985. s1 = peg$c54(s1, s2);
  50986. s0 = s1;
  50987. } else {
  50988. peg$currPos = s0;
  50989. s0 = peg$c1;
  50990. }
  50991. } else {
  50992. peg$currPos = s0;
  50993. s0 = peg$c1;
  50994. }
  50995. peg$cache[key] = { nextPos: peg$currPos, result: s0 };
  50996. return s0;
  50997. }
  50998. function peg$parseliteralArray() {
  50999. var s0, s1, s2;
  51000. var key = peg$currPos * 60 + 17,
  51001. cached = peg$cache[key];
  51002. if (cached) {
  51003. peg$currPos = cached.nextPos;
  51004. return cached.result;
  51005. }
  51006. s0 = peg$currPos;
  51007. if (input.substr(peg$currPos, 2) === peg$c55) {
  51008. s1 = peg$c55;
  51009. peg$currPos += 2;
  51010. } else {
  51011. s1 = peg$FAILED;
  51012. if (peg$silentFails === 0) { peg$fail(peg$c56); }
  51013. }
  51014. if (s1 !== peg$FAILED) {
  51015. s2 = peg$parseliteralArrayRest();
  51016. if (s2 !== peg$FAILED) {
  51017. peg$reportedPos = s0;
  51018. s1 = peg$c34(s2);
  51019. s0 = s1;
  51020. } else {
  51021. peg$currPos = s0;
  51022. s0 = peg$c1;
  51023. }
  51024. } else {
  51025. peg$currPos = s0;
  51026. s0 = peg$c1;
  51027. }
  51028. peg$cache[key] = { nextPos: peg$currPos, result: s0 };
  51029. return s0;
  51030. }
  51031. function peg$parsebareLiteralArray() {
  51032. var s0, s1, s2;
  51033. var key = peg$currPos * 60 + 18,
  51034. cached = peg$cache[key];
  51035. if (cached) {
  51036. peg$currPos = cached.nextPos;
  51037. return cached.result;
  51038. }
  51039. s0 = peg$currPos;
  51040. if (input.charCodeAt(peg$currPos) === 40) {
  51041. s1 = peg$c57;
  51042. peg$currPos++;
  51043. } else {
  51044. s1 = peg$FAILED;
  51045. if (peg$silentFails === 0) { peg$fail(peg$c58); }
  51046. }
  51047. if (s1 !== peg$FAILED) {
  51048. s2 = peg$parseliteralArrayRest();
  51049. if (s2 !== peg$FAILED) {
  51050. peg$reportedPos = s0;
  51051. s1 = peg$c34(s2);
  51052. s0 = s1;
  51053. } else {
  51054. peg$currPos = s0;
  51055. s0 = peg$c1;
  51056. }
  51057. } else {
  51058. peg$currPos = s0;
  51059. s0 = peg$c1;
  51060. }
  51061. peg$cache[key] = { nextPos: peg$currPos, result: s0 };
  51062. return s0;
  51063. }
  51064. function peg$parseliteralArrayRest() {
  51065. var s0, s1, s2, s3, s4;
  51066. var key = peg$currPos * 60 + 19,
  51067. cached = peg$cache[key];
  51068. if (cached) {
  51069. peg$currPos = cached.nextPos;
  51070. return cached.result;
  51071. }
  51072. s0 = peg$currPos;
  51073. s1 = [];
  51074. s2 = peg$currPos;
  51075. s3 = peg$parsews();
  51076. if (s3 !== peg$FAILED) {
  51077. s4 = peg$parseparseTimeLiteral();
  51078. if (s4 === peg$FAILED) {
  51079. s4 = peg$parsebareLiteralArray();
  51080. if (s4 === peg$FAILED) {
  51081. s4 = peg$parsebareSymbol();
  51082. }
  51083. }
  51084. if (s4 !== peg$FAILED) {
  51085. peg$reportedPos = s2;
  51086. s3 = peg$c59(s4);
  51087. s2 = s3;
  51088. } else {
  51089. peg$currPos = s2;
  51090. s2 = peg$c1;
  51091. }
  51092. } else {
  51093. peg$currPos = s2;
  51094. s2 = peg$c1;
  51095. }
  51096. while (s2 !== peg$FAILED) {
  51097. s1.push(s2);
  51098. s2 = peg$currPos;
  51099. s3 = peg$parsews();
  51100. if (s3 !== peg$FAILED) {
  51101. s4 = peg$parseparseTimeLiteral();
  51102. if (s4 === peg$FAILED) {
  51103. s4 = peg$parsebareLiteralArray();
  51104. if (s4 === peg$FAILED) {
  51105. s4 = peg$parsebareSymbol();
  51106. }
  51107. }
  51108. if (s4 !== peg$FAILED) {
  51109. peg$reportedPos = s2;
  51110. s3 = peg$c59(s4);
  51111. s2 = s3;
  51112. } else {
  51113. peg$currPos = s2;
  51114. s2 = peg$c1;
  51115. }
  51116. } else {
  51117. peg$currPos = s2;
  51118. s2 = peg$c1;
  51119. }
  51120. }
  51121. if (s1 !== peg$FAILED) {
  51122. s2 = peg$parsews();
  51123. if (s2 !== peg$FAILED) {
  51124. if (input.charCodeAt(peg$currPos) === 41) {
  51125. s3 = peg$c60;
  51126. peg$currPos++;
  51127. } else {
  51128. s3 = peg$FAILED;
  51129. if (peg$silentFails === 0) { peg$fail(peg$c61); }
  51130. }
  51131. if (s3 !== peg$FAILED) {
  51132. peg$reportedPos = s0;
  51133. s1 = peg$c62(s1);
  51134. s0 = s1;
  51135. } else {
  51136. peg$currPos = s0;
  51137. s0 = peg$c1;
  51138. }
  51139. } else {
  51140. peg$currPos = s0;
  51141. s0 = peg$c1;
  51142. }
  51143. } else {
  51144. peg$currPos = s0;
  51145. s0 = peg$c1;
  51146. }
  51147. peg$cache[key] = { nextPos: peg$currPos, result: s0 };
  51148. return s0;
  51149. }
  51150. function peg$parsedynamicArray() {
  51151. var s0, s1, s2, s3, s4, s5, s6;
  51152. var key = peg$currPos * 60 + 20,
  51153. cached = peg$cache[key];
  51154. if (cached) {
  51155. peg$currPos = cached.nextPos;
  51156. return cached.result;
  51157. }
  51158. s0 = peg$currPos;
  51159. if (input.charCodeAt(peg$currPos) === 123) {
  51160. s1 = peg$c63;
  51161. peg$currPos++;
  51162. } else {
  51163. s1 = peg$FAILED;
  51164. if (peg$silentFails === 0) { peg$fail(peg$c64); }
  51165. }
  51166. if (s1 !== peg$FAILED) {
  51167. s2 = peg$parsews();
  51168. if (s2 !== peg$FAILED) {
  51169. s3 = peg$parseexpressions();
  51170. if (s3 === peg$FAILED) {
  51171. s3 = peg$c41;
  51172. }
  51173. if (s3 !== peg$FAILED) {
  51174. s4 = peg$parsews();
  51175. if (s4 !== peg$FAILED) {
  51176. if (input.charCodeAt(peg$currPos) === 46) {
  51177. s5 = peg$c51;
  51178. peg$currPos++;
  51179. } else {
  51180. s5 = peg$FAILED;
  51181. if (peg$silentFails === 0) { peg$fail(peg$c52); }
  51182. }
  51183. if (s5 === peg$FAILED) {
  51184. s5 = peg$c41;
  51185. }
  51186. if (s5 !== peg$FAILED) {
  51187. if (input.charCodeAt(peg$currPos) === 125) {
  51188. s6 = peg$c65;
  51189. peg$currPos++;
  51190. } else {
  51191. s6 = peg$FAILED;
  51192. if (peg$silentFails === 0) { peg$fail(peg$c66); }
  51193. }
  51194. if (s6 !== peg$FAILED) {
  51195. peg$reportedPos = s0;
  51196. s1 = peg$c67(s3);
  51197. s0 = s1;
  51198. } else {
  51199. peg$currPos = s0;
  51200. s0 = peg$c1;
  51201. }
  51202. } else {
  51203. peg$currPos = s0;
  51204. s0 = peg$c1;
  51205. }
  51206. } else {
  51207. peg$currPos = s0;
  51208. s0 = peg$c1;
  51209. }
  51210. } else {
  51211. peg$currPos = s0;
  51212. s0 = peg$c1;
  51213. }
  51214. } else {
  51215. peg$currPos = s0;
  51216. s0 = peg$c1;
  51217. }
  51218. } else {
  51219. peg$currPos = s0;
  51220. s0 = peg$c1;
  51221. }
  51222. peg$cache[key] = { nextPos: peg$currPos, result: s0 };
  51223. return s0;
  51224. }
  51225. function peg$parsedynamicDictionary() {
  51226. var s0, s1, s2, s3, s4, s5;
  51227. var key = peg$currPos * 60 + 21,
  51228. cached = peg$cache[key];
  51229. if (cached) {
  51230. peg$currPos = cached.nextPos;
  51231. return cached.result;
  51232. }
  51233. s0 = peg$currPos;
  51234. if (input.substr(peg$currPos, 2) === peg$c68) {
  51235. s1 = peg$c68;
  51236. peg$currPos += 2;
  51237. } else {
  51238. s1 = peg$FAILED;
  51239. if (peg$silentFails === 0) { peg$fail(peg$c69); }
  51240. }
  51241. if (s1 !== peg$FAILED) {
  51242. s2 = peg$parsews();
  51243. if (s2 !== peg$FAILED) {
  51244. s3 = peg$parseassociations();
  51245. if (s3 === peg$FAILED) {
  51246. s3 = peg$c41;
  51247. }
  51248. if (s3 !== peg$FAILED) {
  51249. s4 = peg$parsews();
  51250. if (s4 !== peg$FAILED) {
  51251. if (input.charCodeAt(peg$currPos) === 125) {
  51252. s5 = peg$c65;
  51253. peg$currPos++;
  51254. } else {
  51255. s5 = peg$FAILED;
  51256. if (peg$silentFails === 0) { peg$fail(peg$c66); }
  51257. }
  51258. if (s5 !== peg$FAILED) {
  51259. peg$reportedPos = s0;
  51260. s1 = peg$c70(s3);
  51261. s0 = s1;
  51262. } else {
  51263. peg$currPos = s0;
  51264. s0 = peg$c1;
  51265. }
  51266. } else {
  51267. peg$currPos = s0;
  51268. s0 = peg$c1;
  51269. }
  51270. } else {
  51271. peg$currPos = s0;
  51272. s0 = peg$c1;
  51273. }
  51274. } else {
  51275. peg$currPos = s0;
  51276. s0 = peg$c1;
  51277. }
  51278. } else {
  51279. peg$currPos = s0;
  51280. s0 = peg$c1;
  51281. }
  51282. peg$cache[key] = { nextPos: peg$currPos, result: s0 };
  51283. return s0;
  51284. }
  51285. function peg$parsepseudoVariable() {
  51286. var s0, s1, s2;
  51287. var key = peg$currPos * 60 + 22,
  51288. cached = peg$cache[key];
  51289. if (cached) {
  51290. peg$currPos = cached.nextPos;
  51291. return cached.result;
  51292. }
  51293. s0 = peg$currPos;
  51294. s1 = peg$currPos;
  51295. if (input.substr(peg$currPos, 4) === peg$c71) {
  51296. s2 = peg$c71;
  51297. peg$currPos += 4;
  51298. } else {
  51299. s2 = peg$FAILED;
  51300. if (peg$silentFails === 0) { peg$fail(peg$c72); }
  51301. }
  51302. if (s2 !== peg$FAILED) {
  51303. peg$reportedPos = s1;
  51304. s2 = peg$c73();
  51305. }
  51306. s1 = s2;
  51307. if (s1 === peg$FAILED) {
  51308. s1 = peg$currPos;
  51309. if (input.substr(peg$currPos, 5) === peg$c74) {
  51310. s2 = peg$c74;
  51311. peg$currPos += 5;
  51312. } else {
  51313. s2 = peg$FAILED;
  51314. if (peg$silentFails === 0) { peg$fail(peg$c75); }
  51315. }
  51316. if (s2 !== peg$FAILED) {
  51317. peg$reportedPos = s1;
  51318. s2 = peg$c76();
  51319. }
  51320. s1 = s2;
  51321. if (s1 === peg$FAILED) {
  51322. s1 = peg$currPos;
  51323. if (input.substr(peg$currPos, 3) === peg$c77) {
  51324. s2 = peg$c77;
  51325. peg$currPos += 3;
  51326. } else {
  51327. s2 = peg$FAILED;
  51328. if (peg$silentFails === 0) { peg$fail(peg$c78); }
  51329. }
  51330. if (s2 !== peg$FAILED) {
  51331. peg$reportedPos = s1;
  51332. s2 = peg$c79();
  51333. }
  51334. s1 = s2;
  51335. }
  51336. }
  51337. if (s1 !== peg$FAILED) {
  51338. peg$reportedPos = s0;
  51339. s1 = peg$c80(s1);
  51340. }
  51341. s0 = s1;
  51342. peg$cache[key] = { nextPos: peg$currPos, result: s0 };
  51343. return s0;
  51344. }
  51345. function peg$parseparseTimeLiteral() {
  51346. var s0;
  51347. var key = peg$currPos * 60 + 23,
  51348. cached = peg$cache[key];
  51349. if (cached) {
  51350. peg$currPos = cached.nextPos;
  51351. return cached.result;
  51352. }
  51353. s0 = peg$parsepseudoVariable();
  51354. if (s0 === peg$FAILED) {
  51355. s0 = peg$parsenumber();
  51356. if (s0 === peg$FAILED) {
  51357. s0 = peg$parseliteralArray();
  51358. if (s0 === peg$FAILED) {
  51359. s0 = peg$parsestring();
  51360. if (s0 === peg$FAILED) {
  51361. s0 = peg$parsesymbol();
  51362. if (s0 === peg$FAILED) {
  51363. s0 = peg$parsecharacter();
  51364. }
  51365. }
  51366. }
  51367. }
  51368. }
  51369. peg$cache[key] = { nextPos: peg$currPos, result: s0 };
  51370. return s0;
  51371. }
  51372. function peg$parseruntimeLiteral() {
  51373. var s0;
  51374. var key = peg$currPos * 60 + 24,
  51375. cached = peg$cache[key];
  51376. if (cached) {
  51377. peg$currPos = cached.nextPos;
  51378. return cached.result;
  51379. }
  51380. s0 = peg$parsedynamicDictionary();
  51381. if (s0 === peg$FAILED) {
  51382. s0 = peg$parsedynamicArray();
  51383. if (s0 === peg$FAILED) {
  51384. s0 = peg$parseblock();
  51385. }
  51386. }
  51387. peg$cache[key] = { nextPos: peg$currPos, result: s0 };
  51388. return s0;
  51389. }
  51390. function peg$parseliteral() {
  51391. var s0;
  51392. var key = peg$currPos * 60 + 25,
  51393. cached = peg$cache[key];
  51394. if (cached) {
  51395. peg$currPos = cached.nextPos;
  51396. return cached.result;
  51397. }
  51398. s0 = peg$parseruntimeLiteral();
  51399. if (s0 === peg$FAILED) {
  51400. s0 = peg$parseparseTimeLiteral();
  51401. }
  51402. peg$cache[key] = { nextPos: peg$currPos, result: s0 };
  51403. return s0;
  51404. }
  51405. function peg$parsevariable() {
  51406. var s0, s1;
  51407. var key = peg$currPos * 60 + 26,
  51408. cached = peg$cache[key];
  51409. if (cached) {
  51410. peg$currPos = cached.nextPos;
  51411. return cached.result;
  51412. }
  51413. s0 = peg$currPos;
  51414. s1 = peg$parseidentifier();
  51415. if (s1 !== peg$FAILED) {
  51416. peg$reportedPos = s0;
  51417. s1 = peg$c81(s1);
  51418. }
  51419. s0 = s1;
  51420. peg$cache[key] = { nextPos: peg$currPos, result: s0 };
  51421. return s0;
  51422. }
  51423. function peg$parsekeywordPair() {
  51424. var s0, s1, s2, s3, s4;
  51425. var key = peg$currPos * 60 + 27,
  51426. cached = peg$cache[key];
  51427. if (cached) {
  51428. peg$currPos = cached.nextPos;
  51429. return cached.result;
  51430. }
  51431. s0 = peg$currPos;
  51432. s1 = peg$parsews();
  51433. if (s1 !== peg$FAILED) {
  51434. s2 = peg$parsekeyword();
  51435. if (s2 !== peg$FAILED) {
  51436. s3 = peg$parsews();
  51437. if (s3 !== peg$FAILED) {
  51438. s4 = peg$parsebinarySend();
  51439. if (s4 !== peg$FAILED) {
  51440. peg$reportedPos = s0;
  51441. s1 = peg$c82(s2, s4);
  51442. s0 = s1;
  51443. } else {
  51444. peg$currPos = s0;
  51445. s0 = peg$c1;
  51446. }
  51447. } else {
  51448. peg$currPos = s0;
  51449. s0 = peg$c1;
  51450. }
  51451. } else {
  51452. peg$currPos = s0;
  51453. s0 = peg$c1;
  51454. }
  51455. } else {
  51456. peg$currPos = s0;
  51457. s0 = peg$c1;
  51458. }
  51459. peg$cache[key] = { nextPos: peg$currPos, result: s0 };
  51460. return s0;
  51461. }
  51462. function peg$parsebinarySelector() {
  51463. var s0, s1, s2;
  51464. var key = peg$currPos * 60 + 28,
  51465. cached = peg$cache[key];
  51466. if (cached) {
  51467. peg$currPos = cached.nextPos;
  51468. return cached.result;
  51469. }
  51470. s0 = peg$currPos;
  51471. s1 = [];
  51472. if (peg$c83.test(input.charAt(peg$currPos))) {
  51473. s2 = input.charAt(peg$currPos);
  51474. peg$currPos++;
  51475. } else {
  51476. s2 = peg$FAILED;
  51477. if (peg$silentFails === 0) { peg$fail(peg$c84); }
  51478. }
  51479. if (s2 !== peg$FAILED) {
  51480. while (s2 !== peg$FAILED) {
  51481. s1.push(s2);
  51482. if (peg$c83.test(input.charAt(peg$currPos))) {
  51483. s2 = input.charAt(peg$currPos);
  51484. peg$currPos++;
  51485. } else {
  51486. s2 = peg$FAILED;
  51487. if (peg$silentFails === 0) { peg$fail(peg$c84); }
  51488. }
  51489. }
  51490. } else {
  51491. s1 = peg$c1;
  51492. }
  51493. if (s1 !== peg$FAILED) {
  51494. peg$reportedPos = s0;
  51495. s1 = peg$c85(s1);
  51496. }
  51497. s0 = s1;
  51498. peg$cache[key] = { nextPos: peg$currPos, result: s0 };
  51499. return s0;
  51500. }
  51501. function peg$parsekeywordPattern() {
  51502. var s0, s1, s2, s3, s4, s5, s6;
  51503. var key = peg$currPos * 60 + 29,
  51504. cached = peg$cache[key];
  51505. if (cached) {
  51506. peg$currPos = cached.nextPos;
  51507. return cached.result;
  51508. }
  51509. s0 = peg$currPos;
  51510. s1 = [];
  51511. s2 = peg$currPos;
  51512. s3 = peg$parsews();
  51513. if (s3 !== peg$FAILED) {
  51514. s4 = peg$parsekeyword();
  51515. if (s4 !== peg$FAILED) {
  51516. s5 = peg$parsews();
  51517. if (s5 !== peg$FAILED) {
  51518. s6 = peg$parseidentifier();
  51519. if (s6 !== peg$FAILED) {
  51520. peg$reportedPos = s2;
  51521. s3 = peg$c82(s4, s6);
  51522. s2 = s3;
  51523. } else {
  51524. peg$currPos = s2;
  51525. s2 = peg$c1;
  51526. }
  51527. } else {
  51528. peg$currPos = s2;
  51529. s2 = peg$c1;
  51530. }
  51531. } else {
  51532. peg$currPos = s2;
  51533. s2 = peg$c1;
  51534. }
  51535. } else {
  51536. peg$currPos = s2;
  51537. s2 = peg$c1;
  51538. }
  51539. if (s2 !== peg$FAILED) {
  51540. while (s2 !== peg$FAILED) {
  51541. s1.push(s2);
  51542. s2 = peg$currPos;
  51543. s3 = peg$parsews();
  51544. if (s3 !== peg$FAILED) {
  51545. s4 = peg$parsekeyword();
  51546. if (s4 !== peg$FAILED) {
  51547. s5 = peg$parsews();
  51548. if (s5 !== peg$FAILED) {
  51549. s6 = peg$parseidentifier();
  51550. if (s6 !== peg$FAILED) {
  51551. peg$reportedPos = s2;
  51552. s3 = peg$c82(s4, s6);
  51553. s2 = s3;
  51554. } else {
  51555. peg$currPos = s2;
  51556. s2 = peg$c1;
  51557. }
  51558. } else {
  51559. peg$currPos = s2;
  51560. s2 = peg$c1;
  51561. }
  51562. } else {
  51563. peg$currPos = s2;
  51564. s2 = peg$c1;
  51565. }
  51566. } else {
  51567. peg$currPos = s2;
  51568. s2 = peg$c1;
  51569. }
  51570. }
  51571. } else {
  51572. s1 = peg$c1;
  51573. }
  51574. if (s1 !== peg$FAILED) {
  51575. peg$reportedPos = s0;
  51576. s1 = peg$c86(s1);
  51577. }
  51578. s0 = s1;
  51579. peg$cache[key] = { nextPos: peg$currPos, result: s0 };
  51580. return s0;
  51581. }
  51582. function peg$parsebinaryPattern() {
  51583. var s0, s1, s2, s3, s4;
  51584. var key = peg$currPos * 60 + 30,
  51585. cached = peg$cache[key];
  51586. if (cached) {
  51587. peg$currPos = cached.nextPos;
  51588. return cached.result;
  51589. }
  51590. s0 = peg$currPos;
  51591. s1 = peg$parsews();
  51592. if (s1 !== peg$FAILED) {
  51593. s2 = peg$parsebinarySelector();
  51594. if (s2 !== peg$FAILED) {
  51595. s3 = peg$parsews();
  51596. if (s3 !== peg$FAILED) {
  51597. s4 = peg$parseidentifier();
  51598. if (s4 !== peg$FAILED) {
  51599. peg$reportedPos = s0;
  51600. s1 = peg$c87(s2, s4);
  51601. s0 = s1;
  51602. } else {
  51603. peg$currPos = s0;
  51604. s0 = peg$c1;
  51605. }
  51606. } else {
  51607. peg$currPos = s0;
  51608. s0 = peg$c1;
  51609. }
  51610. } else {
  51611. peg$currPos = s0;
  51612. s0 = peg$c1;
  51613. }
  51614. } else {
  51615. peg$currPos = s0;
  51616. s0 = peg$c1;
  51617. }
  51618. peg$cache[key] = { nextPos: peg$currPos, result: s0 };
  51619. return s0;
  51620. }
  51621. function peg$parseunaryPattern() {
  51622. var s0, s1, s2;
  51623. var key = peg$currPos * 60 + 31,
  51624. cached = peg$cache[key];
  51625. if (cached) {
  51626. peg$currPos = cached.nextPos;
  51627. return cached.result;
  51628. }
  51629. s0 = peg$currPos;
  51630. s1 = peg$parsews();
  51631. if (s1 !== peg$FAILED) {
  51632. s2 = peg$parseidentifier();
  51633. if (s2 !== peg$FAILED) {
  51634. peg$reportedPos = s0;
  51635. s1 = peg$c88(s2);
  51636. s0 = s1;
  51637. } else {
  51638. peg$currPos = s0;
  51639. s0 = peg$c1;
  51640. }
  51641. } else {
  51642. peg$currPos = s0;
  51643. s0 = peg$c1;
  51644. }
  51645. peg$cache[key] = { nextPos: peg$currPos, result: s0 };
  51646. return s0;
  51647. }
  51648. function peg$parseexpression() {
  51649. var s0;
  51650. var key = peg$currPos * 60 + 32,
  51651. cached = peg$cache[key];
  51652. if (cached) {
  51653. peg$currPos = cached.nextPos;
  51654. return cached.result;
  51655. }
  51656. s0 = peg$parseassignment();
  51657. if (s0 === peg$FAILED) {
  51658. s0 = peg$parsecascade();
  51659. if (s0 === peg$FAILED) {
  51660. s0 = peg$parsekeywordSend();
  51661. if (s0 === peg$FAILED) {
  51662. s0 = peg$parsebinarySend();
  51663. }
  51664. }
  51665. }
  51666. peg$cache[key] = { nextPos: peg$currPos, result: s0 };
  51667. return s0;
  51668. }
  51669. function peg$parseexpressionList() {
  51670. var s0, s1, s2, s3, s4;
  51671. var key = peg$currPos * 60 + 33,
  51672. cached = peg$cache[key];
  51673. if (cached) {
  51674. peg$currPos = cached.nextPos;
  51675. return cached.result;
  51676. }
  51677. s0 = peg$currPos;
  51678. s1 = peg$parsews();
  51679. if (s1 !== peg$FAILED) {
  51680. if (input.charCodeAt(peg$currPos) === 46) {
  51681. s2 = peg$c51;
  51682. peg$currPos++;
  51683. } else {
  51684. s2 = peg$FAILED;
  51685. if (peg$silentFails === 0) { peg$fail(peg$c52); }
  51686. }
  51687. if (s2 !== peg$FAILED) {
  51688. s3 = peg$parsews();
  51689. if (s3 !== peg$FAILED) {
  51690. s4 = peg$parseexpression();
  51691. if (s4 !== peg$FAILED) {
  51692. peg$reportedPos = s0;
  51693. s1 = peg$c89(s4);
  51694. s0 = s1;
  51695. } else {
  51696. peg$currPos = s0;
  51697. s0 = peg$c1;
  51698. }
  51699. } else {
  51700. peg$currPos = s0;
  51701. s0 = peg$c1;
  51702. }
  51703. } else {
  51704. peg$currPos = s0;
  51705. s0 = peg$c1;
  51706. }
  51707. } else {
  51708. peg$currPos = s0;
  51709. s0 = peg$c1;
  51710. }
  51711. peg$cache[key] = { nextPos: peg$currPos, result: s0 };
  51712. return s0;
  51713. }
  51714. function peg$parseexpressions() {
  51715. var s0, s1, s2, s3;
  51716. var key = peg$currPos * 60 + 34,
  51717. cached = peg$cache[key];
  51718. if (cached) {
  51719. peg$currPos = cached.nextPos;
  51720. return cached.result;
  51721. }
  51722. s0 = peg$currPos;
  51723. s1 = peg$parseexpression();
  51724. if (s1 !== peg$FAILED) {
  51725. s2 = [];
  51726. s3 = peg$parseexpressionList();
  51727. while (s3 !== peg$FAILED) {
  51728. s2.push(s3);
  51729. s3 = peg$parseexpressionList();
  51730. }
  51731. if (s2 !== peg$FAILED) {
  51732. peg$reportedPos = s0;
  51733. s1 = peg$c90(s1, s2);
  51734. s0 = s1;
  51735. } else {
  51736. peg$currPos = s0;
  51737. s0 = peg$c1;
  51738. }
  51739. } else {
  51740. peg$currPos = s0;
  51741. s0 = peg$c1;
  51742. }
  51743. peg$cache[key] = { nextPos: peg$currPos, result: s0 };
  51744. return s0;
  51745. }
  51746. function peg$parseassignment() {
  51747. var s0, s1, s2, s3, s4, s5;
  51748. var key = peg$currPos * 60 + 35,
  51749. cached = peg$cache[key];
  51750. if (cached) {
  51751. peg$currPos = cached.nextPos;
  51752. return cached.result;
  51753. }
  51754. s0 = peg$currPos;
  51755. s1 = peg$parsevariable();
  51756. if (s1 !== peg$FAILED) {
  51757. s2 = peg$parsews();
  51758. if (s2 !== peg$FAILED) {
  51759. if (input.substr(peg$currPos, 2) === peg$c91) {
  51760. s3 = peg$c91;
  51761. peg$currPos += 2;
  51762. } else {
  51763. s3 = peg$FAILED;
  51764. if (peg$silentFails === 0) { peg$fail(peg$c92); }
  51765. }
  51766. if (s3 !== peg$FAILED) {
  51767. s4 = peg$parsews();
  51768. if (s4 !== peg$FAILED) {
  51769. s5 = peg$parseexpression();
  51770. if (s5 !== peg$FAILED) {
  51771. peg$reportedPos = s0;
  51772. s1 = peg$c93(s1, s5);
  51773. s0 = s1;
  51774. } else {
  51775. peg$currPos = s0;
  51776. s0 = peg$c1;
  51777. }
  51778. } else {
  51779. peg$currPos = s0;
  51780. s0 = peg$c1;
  51781. }
  51782. } else {
  51783. peg$currPos = s0;
  51784. s0 = peg$c1;
  51785. }
  51786. } else {
  51787. peg$currPos = s0;
  51788. s0 = peg$c1;
  51789. }
  51790. } else {
  51791. peg$currPos = s0;
  51792. s0 = peg$c1;
  51793. }
  51794. peg$cache[key] = { nextPos: peg$currPos, result: s0 };
  51795. return s0;
  51796. }
  51797. function peg$parseret() {
  51798. var s0, s1, s2, s3, s4, s5;
  51799. var key = peg$currPos * 60 + 36,
  51800. cached = peg$cache[key];
  51801. if (cached) {
  51802. peg$currPos = cached.nextPos;
  51803. return cached.result;
  51804. }
  51805. s0 = peg$currPos;
  51806. if (input.charCodeAt(peg$currPos) === 94) {
  51807. s1 = peg$c94;
  51808. peg$currPos++;
  51809. } else {
  51810. s1 = peg$FAILED;
  51811. if (peg$silentFails === 0) { peg$fail(peg$c95); }
  51812. }
  51813. if (s1 !== peg$FAILED) {
  51814. s2 = peg$parsews();
  51815. if (s2 !== peg$FAILED) {
  51816. s3 = peg$parseexpression();
  51817. if (s3 !== peg$FAILED) {
  51818. s4 = peg$parsews();
  51819. if (s4 !== peg$FAILED) {
  51820. if (input.charCodeAt(peg$currPos) === 46) {
  51821. s5 = peg$c51;
  51822. peg$currPos++;
  51823. } else {
  51824. s5 = peg$FAILED;
  51825. if (peg$silentFails === 0) { peg$fail(peg$c52); }
  51826. }
  51827. if (s5 === peg$FAILED) {
  51828. s5 = peg$c41;
  51829. }
  51830. if (s5 !== peg$FAILED) {
  51831. peg$reportedPos = s0;
  51832. s1 = peg$c96(s3);
  51833. s0 = s1;
  51834. } else {
  51835. peg$currPos = s0;
  51836. s0 = peg$c1;
  51837. }
  51838. } else {
  51839. peg$currPos = s0;
  51840. s0 = peg$c1;
  51841. }
  51842. } else {
  51843. peg$currPos = s0;
  51844. s0 = peg$c1;
  51845. }
  51846. } else {
  51847. peg$currPos = s0;
  51848. s0 = peg$c1;
  51849. }
  51850. } else {
  51851. peg$currPos = s0;
  51852. s0 = peg$c1;
  51853. }
  51854. peg$cache[key] = { nextPos: peg$currPos, result: s0 };
  51855. return s0;
  51856. }
  51857. function peg$parsetemps() {
  51858. var s0, s1, s2, s3, s4, s5;
  51859. var key = peg$currPos * 60 + 37,
  51860. cached = peg$cache[key];
  51861. if (cached) {
  51862. peg$currPos = cached.nextPos;
  51863. return cached.result;
  51864. }
  51865. s0 = peg$currPos;
  51866. if (input.charCodeAt(peg$currPos) === 124) {
  51867. s1 = peg$c97;
  51868. peg$currPos++;
  51869. } else {
  51870. s1 = peg$FAILED;
  51871. if (peg$silentFails === 0) { peg$fail(peg$c98); }
  51872. }
  51873. if (s1 !== peg$FAILED) {
  51874. s2 = [];
  51875. s3 = peg$currPos;
  51876. s4 = peg$parsews();
  51877. if (s4 !== peg$FAILED) {
  51878. s5 = peg$parseidentifier();
  51879. if (s5 !== peg$FAILED) {
  51880. peg$reportedPos = s3;
  51881. s4 = peg$c99(s5);
  51882. s3 = s4;
  51883. } else {
  51884. peg$currPos = s3;
  51885. s3 = peg$c1;
  51886. }
  51887. } else {
  51888. peg$currPos = s3;
  51889. s3 = peg$c1;
  51890. }
  51891. while (s3 !== peg$FAILED) {
  51892. s2.push(s3);
  51893. s3 = peg$currPos;
  51894. s4 = peg$parsews();
  51895. if (s4 !== peg$FAILED) {
  51896. s5 = peg$parseidentifier();
  51897. if (s5 !== peg$FAILED) {
  51898. peg$reportedPos = s3;
  51899. s4 = peg$c99(s5);
  51900. s3 = s4;
  51901. } else {
  51902. peg$currPos = s3;
  51903. s3 = peg$c1;
  51904. }
  51905. } else {
  51906. peg$currPos = s3;
  51907. s3 = peg$c1;
  51908. }
  51909. }
  51910. if (s2 !== peg$FAILED) {
  51911. s3 = peg$parsews();
  51912. if (s3 !== peg$FAILED) {
  51913. if (input.charCodeAt(peg$currPos) === 124) {
  51914. s4 = peg$c97;
  51915. peg$currPos++;
  51916. } else {
  51917. s4 = peg$FAILED;
  51918. if (peg$silentFails === 0) { peg$fail(peg$c98); }
  51919. }
  51920. if (s4 !== peg$FAILED) {
  51921. peg$reportedPos = s0;
  51922. s1 = peg$c100(s2);
  51923. s0 = s1;
  51924. } else {
  51925. peg$currPos = s0;
  51926. s0 = peg$c1;
  51927. }
  51928. } else {
  51929. peg$currPos = s0;
  51930. s0 = peg$c1;
  51931. }
  51932. } else {
  51933. peg$currPos = s0;
  51934. s0 = peg$c1;
  51935. }
  51936. } else {
  51937. peg$currPos = s0;
  51938. s0 = peg$c1;
  51939. }
  51940. peg$cache[key] = { nextPos: peg$currPos, result: s0 };
  51941. return s0;
  51942. }
  51943. function peg$parseblockParamList() {
  51944. var s0, s1, s2, s3, s4, s5, s6;
  51945. var key = peg$currPos * 60 + 38,
  51946. cached = peg$cache[key];
  51947. if (cached) {
  51948. peg$currPos = cached.nextPos;
  51949. return cached.result;
  51950. }
  51951. s0 = peg$currPos;
  51952. s1 = [];
  51953. s2 = peg$currPos;
  51954. s3 = peg$parsews();
  51955. if (s3 !== peg$FAILED) {
  51956. if (input.charCodeAt(peg$currPos) === 58) {
  51957. s4 = peg$c13;
  51958. peg$currPos++;
  51959. } else {
  51960. s4 = peg$FAILED;
  51961. if (peg$silentFails === 0) { peg$fail(peg$c14); }
  51962. }
  51963. if (s4 !== peg$FAILED) {
  51964. s5 = peg$parsews();
  51965. if (s5 !== peg$FAILED) {
  51966. s6 = peg$parseidentifier();
  51967. if (s6 !== peg$FAILED) {
  51968. peg$reportedPos = s2;
  51969. s3 = peg$c101(s6);
  51970. s2 = s3;
  51971. } else {
  51972. peg$currPos = s2;
  51973. s2 = peg$c1;
  51974. }
  51975. } else {
  51976. peg$currPos = s2;
  51977. s2 = peg$c1;
  51978. }
  51979. } else {
  51980. peg$currPos = s2;
  51981. s2 = peg$c1;
  51982. }
  51983. } else {
  51984. peg$currPos = s2;
  51985. s2 = peg$c1;
  51986. }
  51987. if (s2 !== peg$FAILED) {
  51988. while (s2 !== peg$FAILED) {
  51989. s1.push(s2);
  51990. s2 = peg$currPos;
  51991. s3 = peg$parsews();
  51992. if (s3 !== peg$FAILED) {
  51993. if (input.charCodeAt(peg$currPos) === 58) {
  51994. s4 = peg$c13;
  51995. peg$currPos++;
  51996. } else {
  51997. s4 = peg$FAILED;
  51998. if (peg$silentFails === 0) { peg$fail(peg$c14); }
  51999. }
  52000. if (s4 !== peg$FAILED) {
  52001. s5 = peg$parsews();
  52002. if (s5 !== peg$FAILED) {
  52003. s6 = peg$parseidentifier();
  52004. if (s6 !== peg$FAILED) {
  52005. peg$reportedPos = s2;
  52006. s3 = peg$c101(s6);
  52007. s2 = s3;
  52008. } else {
  52009. peg$currPos = s2;
  52010. s2 = peg$c1;
  52011. }
  52012. } else {
  52013. peg$currPos = s2;
  52014. s2 = peg$c1;
  52015. }
  52016. } else {
  52017. peg$currPos = s2;
  52018. s2 = peg$c1;
  52019. }
  52020. } else {
  52021. peg$currPos = s2;
  52022. s2 = peg$c1;
  52023. }
  52024. }
  52025. } else {
  52026. s1 = peg$c1;
  52027. }
  52028. if (s1 !== peg$FAILED) {
  52029. s2 = peg$parsews();
  52030. if (s2 !== peg$FAILED) {
  52031. if (input.charCodeAt(peg$currPos) === 124) {
  52032. s3 = peg$c97;
  52033. peg$currPos++;
  52034. } else {
  52035. s3 = peg$FAILED;
  52036. if (peg$silentFails === 0) { peg$fail(peg$c98); }
  52037. }
  52038. if (s3 !== peg$FAILED) {
  52039. peg$reportedPos = s0;
  52040. s1 = peg$c102(s1);
  52041. s0 = s1;
  52042. } else {
  52043. peg$currPos = s0;
  52044. s0 = peg$c1;
  52045. }
  52046. } else {
  52047. peg$currPos = s0;
  52048. s0 = peg$c1;
  52049. }
  52050. } else {
  52051. peg$currPos = s0;
  52052. s0 = peg$c1;
  52053. }
  52054. peg$cache[key] = { nextPos: peg$currPos, result: s0 };
  52055. return s0;
  52056. }
  52057. function peg$parsesubexpression() {
  52058. var s0, s1, s2, s3, s4, s5;
  52059. var key = peg$currPos * 60 + 39,
  52060. cached = peg$cache[key];
  52061. if (cached) {
  52062. peg$currPos = cached.nextPos;
  52063. return cached.result;
  52064. }
  52065. s0 = peg$currPos;
  52066. if (input.charCodeAt(peg$currPos) === 40) {
  52067. s1 = peg$c57;
  52068. peg$currPos++;
  52069. } else {
  52070. s1 = peg$FAILED;
  52071. if (peg$silentFails === 0) { peg$fail(peg$c58); }
  52072. }
  52073. if (s1 !== peg$FAILED) {
  52074. s2 = peg$parsews();
  52075. if (s2 !== peg$FAILED) {
  52076. s3 = peg$parseexpression();
  52077. if (s3 !== peg$FAILED) {
  52078. s4 = peg$parsews();
  52079. if (s4 !== peg$FAILED) {
  52080. if (input.charCodeAt(peg$currPos) === 41) {
  52081. s5 = peg$c60;
  52082. peg$currPos++;
  52083. } else {
  52084. s5 = peg$FAILED;
  52085. if (peg$silentFails === 0) { peg$fail(peg$c61); }
  52086. }
  52087. if (s5 !== peg$FAILED) {
  52088. peg$reportedPos = s0;
  52089. s1 = peg$c89(s3);
  52090. s0 = s1;
  52091. } else {
  52092. peg$currPos = s0;
  52093. s0 = peg$c1;
  52094. }
  52095. } else {
  52096. peg$currPos = s0;
  52097. s0 = peg$c1;
  52098. }
  52099. } else {
  52100. peg$currPos = s0;
  52101. s0 = peg$c1;
  52102. }
  52103. } else {
  52104. peg$currPos = s0;
  52105. s0 = peg$c1;
  52106. }
  52107. } else {
  52108. peg$currPos = s0;
  52109. s0 = peg$c1;
  52110. }
  52111. peg$cache[key] = { nextPos: peg$currPos, result: s0 };
  52112. return s0;
  52113. }
  52114. function peg$parsestatements() {
  52115. var s0, s1, s2, s3, s4, s5, s6, s7;
  52116. var key = peg$currPos * 60 + 40,
  52117. cached = peg$cache[key];
  52118. if (cached) {
  52119. peg$currPos = cached.nextPos;
  52120. return cached.result;
  52121. }
  52122. s0 = peg$currPos;
  52123. s1 = peg$parseret();
  52124. if (s1 !== peg$FAILED) {
  52125. s2 = [];
  52126. if (input.charCodeAt(peg$currPos) === 46) {
  52127. s3 = peg$c51;
  52128. peg$currPos++;
  52129. } else {
  52130. s3 = peg$FAILED;
  52131. if (peg$silentFails === 0) { peg$fail(peg$c52); }
  52132. }
  52133. while (s3 !== peg$FAILED) {
  52134. s2.push(s3);
  52135. if (input.charCodeAt(peg$currPos) === 46) {
  52136. s3 = peg$c51;
  52137. peg$currPos++;
  52138. } else {
  52139. s3 = peg$FAILED;
  52140. if (peg$silentFails === 0) { peg$fail(peg$c52); }
  52141. }
  52142. }
  52143. if (s2 !== peg$FAILED) {
  52144. peg$reportedPos = s0;
  52145. s1 = peg$c103(s1);
  52146. s0 = s1;
  52147. } else {
  52148. peg$currPos = s0;
  52149. s0 = peg$c1;
  52150. }
  52151. } else {
  52152. peg$currPos = s0;
  52153. s0 = peg$c1;
  52154. }
  52155. if (s0 === peg$FAILED) {
  52156. s0 = peg$currPos;
  52157. s1 = peg$parseexpressions();
  52158. if (s1 !== peg$FAILED) {
  52159. s2 = peg$parsews();
  52160. if (s2 !== peg$FAILED) {
  52161. s3 = [];
  52162. if (input.charCodeAt(peg$currPos) === 46) {
  52163. s4 = peg$c51;
  52164. peg$currPos++;
  52165. } else {
  52166. s4 = peg$FAILED;
  52167. if (peg$silentFails === 0) { peg$fail(peg$c52); }
  52168. }
  52169. if (s4 !== peg$FAILED) {
  52170. while (s4 !== peg$FAILED) {
  52171. s3.push(s4);
  52172. if (input.charCodeAt(peg$currPos) === 46) {
  52173. s4 = peg$c51;
  52174. peg$currPos++;
  52175. } else {
  52176. s4 = peg$FAILED;
  52177. if (peg$silentFails === 0) { peg$fail(peg$c52); }
  52178. }
  52179. }
  52180. } else {
  52181. s3 = peg$c1;
  52182. }
  52183. if (s3 !== peg$FAILED) {
  52184. s4 = peg$parsews();
  52185. if (s4 !== peg$FAILED) {
  52186. s5 = peg$parseret();
  52187. if (s5 !== peg$FAILED) {
  52188. s6 = [];
  52189. if (input.charCodeAt(peg$currPos) === 46) {
  52190. s7 = peg$c51;
  52191. peg$currPos++;
  52192. } else {
  52193. s7 = peg$FAILED;
  52194. if (peg$silentFails === 0) { peg$fail(peg$c52); }
  52195. }
  52196. while (s7 !== peg$FAILED) {
  52197. s6.push(s7);
  52198. if (input.charCodeAt(peg$currPos) === 46) {
  52199. s7 = peg$c51;
  52200. peg$currPos++;
  52201. } else {
  52202. s7 = peg$FAILED;
  52203. if (peg$silentFails === 0) { peg$fail(peg$c52); }
  52204. }
  52205. }
  52206. if (s6 !== peg$FAILED) {
  52207. peg$reportedPos = s0;
  52208. s1 = peg$c104(s1, s5);
  52209. s0 = s1;
  52210. } else {
  52211. peg$currPos = s0;
  52212. s0 = peg$c1;
  52213. }
  52214. } else {
  52215. peg$currPos = s0;
  52216. s0 = peg$c1;
  52217. }
  52218. } else {
  52219. peg$currPos = s0;
  52220. s0 = peg$c1;
  52221. }
  52222. } else {
  52223. peg$currPos = s0;
  52224. s0 = peg$c1;
  52225. }
  52226. } else {
  52227. peg$currPos = s0;
  52228. s0 = peg$c1;
  52229. }
  52230. } else {
  52231. peg$currPos = s0;
  52232. s0 = peg$c1;
  52233. }
  52234. if (s0 === peg$FAILED) {
  52235. s0 = peg$currPos;
  52236. s1 = peg$parseexpressions();
  52237. if (s1 === peg$FAILED) {
  52238. s1 = peg$c41;
  52239. }
  52240. if (s1 !== peg$FAILED) {
  52241. s2 = [];
  52242. if (input.charCodeAt(peg$currPos) === 46) {
  52243. s3 = peg$c51;
  52244. peg$currPos++;
  52245. } else {
  52246. s3 = peg$FAILED;
  52247. if (peg$silentFails === 0) { peg$fail(peg$c52); }
  52248. }
  52249. while (s3 !== peg$FAILED) {
  52250. s2.push(s3);
  52251. if (input.charCodeAt(peg$currPos) === 46) {
  52252. s3 = peg$c51;
  52253. peg$currPos++;
  52254. } else {
  52255. s3 = peg$FAILED;
  52256. if (peg$silentFails === 0) { peg$fail(peg$c52); }
  52257. }
  52258. }
  52259. if (s2 !== peg$FAILED) {
  52260. peg$reportedPos = s0;
  52261. s1 = peg$c105(s1);
  52262. s0 = s1;
  52263. } else {
  52264. peg$currPos = s0;
  52265. s0 = peg$c1;
  52266. }
  52267. } else {
  52268. peg$currPos = s0;
  52269. s0 = peg$c1;
  52270. }
  52271. }
  52272. }
  52273. peg$cache[key] = { nextPos: peg$currPos, result: s0 };
  52274. return s0;
  52275. }
  52276. function peg$parsesequence() {
  52277. var s0;
  52278. var key = peg$currPos * 60 + 41,
  52279. cached = peg$cache[key];
  52280. if (cached) {
  52281. peg$currPos = cached.nextPos;
  52282. return cached.result;
  52283. }
  52284. s0 = peg$parsejsStatement();
  52285. if (s0 === peg$FAILED) {
  52286. s0 = peg$parsestSequence();
  52287. }
  52288. peg$cache[key] = { nextPos: peg$currPos, result: s0 };
  52289. return s0;
  52290. }
  52291. function peg$parsestSequence() {
  52292. var s0, s1, s2, s3, s4;
  52293. var key = peg$currPos * 60 + 42,
  52294. cached = peg$cache[key];
  52295. if (cached) {
  52296. peg$currPos = cached.nextPos;
  52297. return cached.result;
  52298. }
  52299. s0 = peg$currPos;
  52300. s1 = peg$parsetemps();
  52301. if (s1 === peg$FAILED) {
  52302. s1 = peg$c41;
  52303. }
  52304. if (s1 !== peg$FAILED) {
  52305. s2 = peg$parsews();
  52306. if (s2 !== peg$FAILED) {
  52307. s3 = peg$parsestatements();
  52308. if (s3 === peg$FAILED) {
  52309. s3 = peg$c41;
  52310. }
  52311. if (s3 !== peg$FAILED) {
  52312. s4 = peg$parsews();
  52313. if (s4 !== peg$FAILED) {
  52314. peg$reportedPos = s0;
  52315. s1 = peg$c106(s1, s3);
  52316. s0 = s1;
  52317. } else {
  52318. peg$currPos = s0;
  52319. s0 = peg$c1;
  52320. }
  52321. } else {
  52322. peg$currPos = s0;
  52323. s0 = peg$c1;
  52324. }
  52325. } else {
  52326. peg$currPos = s0;
  52327. s0 = peg$c1;
  52328. }
  52329. } else {
  52330. peg$currPos = s0;
  52331. s0 = peg$c1;
  52332. }
  52333. peg$cache[key] = { nextPos: peg$currPos, result: s0 };
  52334. return s0;
  52335. }
  52336. function peg$parseblock() {
  52337. var s0, s1, s2, s3, s4, s5, s6;
  52338. var key = peg$currPos * 60 + 43,
  52339. cached = peg$cache[key];
  52340. if (cached) {
  52341. peg$currPos = cached.nextPos;
  52342. return cached.result;
  52343. }
  52344. s0 = peg$currPos;
  52345. if (input.charCodeAt(peg$currPos) === 91) {
  52346. s1 = peg$c107;
  52347. peg$currPos++;
  52348. } else {
  52349. s1 = peg$FAILED;
  52350. if (peg$silentFails === 0) { peg$fail(peg$c108); }
  52351. }
  52352. if (s1 !== peg$FAILED) {
  52353. s2 = peg$parseblockParamList();
  52354. if (s2 === peg$FAILED) {
  52355. s2 = peg$c41;
  52356. }
  52357. if (s2 !== peg$FAILED) {
  52358. s3 = peg$parsews();
  52359. if (s3 !== peg$FAILED) {
  52360. s4 = peg$parsesequence();
  52361. if (s4 === peg$FAILED) {
  52362. s4 = peg$c41;
  52363. }
  52364. if (s4 !== peg$FAILED) {
  52365. s5 = peg$parsews();
  52366. if (s5 !== peg$FAILED) {
  52367. if (input.charCodeAt(peg$currPos) === 93) {
  52368. s6 = peg$c109;
  52369. peg$currPos++;
  52370. } else {
  52371. s6 = peg$FAILED;
  52372. if (peg$silentFails === 0) { peg$fail(peg$c110); }
  52373. }
  52374. if (s6 !== peg$FAILED) {
  52375. peg$reportedPos = s0;
  52376. s1 = peg$c111(s2, s4);
  52377. s0 = s1;
  52378. } else {
  52379. peg$currPos = s0;
  52380. s0 = peg$c1;
  52381. }
  52382. } else {
  52383. peg$currPos = s0;
  52384. s0 = peg$c1;
  52385. }
  52386. } else {
  52387. peg$currPos = s0;
  52388. s0 = peg$c1;
  52389. }
  52390. } else {
  52391. peg$currPos = s0;
  52392. s0 = peg$c1;
  52393. }
  52394. } else {
  52395. peg$currPos = s0;
  52396. s0 = peg$c1;
  52397. }
  52398. } else {
  52399. peg$currPos = s0;
  52400. s0 = peg$c1;
  52401. }
  52402. peg$cache[key] = { nextPos: peg$currPos, result: s0 };
  52403. return s0;
  52404. }
  52405. function peg$parseoperand() {
  52406. var s0;
  52407. var key = peg$currPos * 60 + 44,
  52408. cached = peg$cache[key];
  52409. if (cached) {
  52410. peg$currPos = cached.nextPos;
  52411. return cached.result;
  52412. }
  52413. s0 = peg$parseliteral();
  52414. if (s0 === peg$FAILED) {
  52415. s0 = peg$parsevariable();
  52416. if (s0 === peg$FAILED) {
  52417. s0 = peg$parsesubexpression();
  52418. }
  52419. }
  52420. peg$cache[key] = { nextPos: peg$currPos, result: s0 };
  52421. return s0;
  52422. }
  52423. function peg$parseunaryMessage() {
  52424. var s0, s1, s2, s3, s4;
  52425. var key = peg$currPos * 60 + 45,
  52426. cached = peg$cache[key];
  52427. if (cached) {
  52428. peg$currPos = cached.nextPos;
  52429. return cached.result;
  52430. }
  52431. s0 = peg$currPos;
  52432. s1 = peg$parsews();
  52433. if (s1 !== peg$FAILED) {
  52434. s2 = peg$parseidentifier();
  52435. if (s2 !== peg$FAILED) {
  52436. s3 = peg$currPos;
  52437. peg$silentFails++;
  52438. if (input.charCodeAt(peg$currPos) === 58) {
  52439. s4 = peg$c13;
  52440. peg$currPos++;
  52441. } else {
  52442. s4 = peg$FAILED;
  52443. if (peg$silentFails === 0) { peg$fail(peg$c14); }
  52444. }
  52445. peg$silentFails--;
  52446. if (s4 === peg$FAILED) {
  52447. s3 = peg$c112;
  52448. } else {
  52449. peg$currPos = s3;
  52450. s3 = peg$c1;
  52451. }
  52452. if (s3 !== peg$FAILED) {
  52453. peg$reportedPos = s0;
  52454. s1 = peg$c113(s2);
  52455. s0 = s1;
  52456. } else {
  52457. peg$currPos = s0;
  52458. s0 = peg$c1;
  52459. }
  52460. } else {
  52461. peg$currPos = s0;
  52462. s0 = peg$c1;
  52463. }
  52464. } else {
  52465. peg$currPos = s0;
  52466. s0 = peg$c1;
  52467. }
  52468. peg$cache[key] = { nextPos: peg$currPos, result: s0 };
  52469. return s0;
  52470. }
  52471. function peg$parseunaryTail() {
  52472. var s0, s1, s2, s3, s4;
  52473. var key = peg$currPos * 60 + 46,
  52474. cached = peg$cache[key];
  52475. if (cached) {
  52476. peg$currPos = cached.nextPos;
  52477. return cached.result;
  52478. }
  52479. s0 = peg$currPos;
  52480. s1 = peg$parseunaryMessage();
  52481. if (s1 !== peg$FAILED) {
  52482. s2 = peg$parsews();
  52483. if (s2 !== peg$FAILED) {
  52484. s3 = peg$parseunaryTail();
  52485. if (s3 === peg$FAILED) {
  52486. s3 = peg$c41;
  52487. }
  52488. if (s3 !== peg$FAILED) {
  52489. s4 = peg$parsews();
  52490. if (s4 !== peg$FAILED) {
  52491. peg$reportedPos = s0;
  52492. s1 = peg$c114(s1, s3);
  52493. s0 = s1;
  52494. } else {
  52495. peg$currPos = s0;
  52496. s0 = peg$c1;
  52497. }
  52498. } else {
  52499. peg$currPos = s0;
  52500. s0 = peg$c1;
  52501. }
  52502. } else {
  52503. peg$currPos = s0;
  52504. s0 = peg$c1;
  52505. }
  52506. } else {
  52507. peg$currPos = s0;
  52508. s0 = peg$c1;
  52509. }
  52510. peg$cache[key] = { nextPos: peg$currPos, result: s0 };
  52511. return s0;
  52512. }
  52513. function peg$parseunarySend() {
  52514. var s0, s1, s2, s3;
  52515. var key = peg$currPos * 60 + 47,
  52516. cached = peg$cache[key];
  52517. if (cached) {
  52518. peg$currPos = cached.nextPos;
  52519. return cached.result;
  52520. }
  52521. s0 = peg$currPos;
  52522. s1 = peg$parseoperand();
  52523. if (s1 !== peg$FAILED) {
  52524. s2 = peg$parsews();
  52525. if (s2 !== peg$FAILED) {
  52526. s3 = peg$parseunaryTail();
  52527. if (s3 === peg$FAILED) {
  52528. s3 = peg$c41;
  52529. }
  52530. if (s3 !== peg$FAILED) {
  52531. peg$reportedPos = s0;
  52532. s1 = peg$c115(s1, s3);
  52533. s0 = s1;
  52534. } else {
  52535. peg$currPos = s0;
  52536. s0 = peg$c1;
  52537. }
  52538. } else {
  52539. peg$currPos = s0;
  52540. s0 = peg$c1;
  52541. }
  52542. } else {
  52543. peg$currPos = s0;
  52544. s0 = peg$c1;
  52545. }
  52546. peg$cache[key] = { nextPos: peg$currPos, result: s0 };
  52547. return s0;
  52548. }
  52549. function peg$parsebinaryMessage() {
  52550. var s0, s1, s2, s3, s4;
  52551. var key = peg$currPos * 60 + 48,
  52552. cached = peg$cache[key];
  52553. if (cached) {
  52554. peg$currPos = cached.nextPos;
  52555. return cached.result;
  52556. }
  52557. s0 = peg$currPos;
  52558. s1 = peg$parsews();
  52559. if (s1 !== peg$FAILED) {
  52560. s2 = peg$parsebinarySelector();
  52561. if (s2 !== peg$FAILED) {
  52562. s3 = peg$parsews();
  52563. if (s3 !== peg$FAILED) {
  52564. s4 = peg$parseunarySend();
  52565. if (s4 === peg$FAILED) {
  52566. s4 = peg$parseoperand();
  52567. }
  52568. if (s4 !== peg$FAILED) {
  52569. peg$reportedPos = s0;
  52570. s1 = peg$c116(s2, s4);
  52571. s0 = s1;
  52572. } else {
  52573. peg$currPos = s0;
  52574. s0 = peg$c1;
  52575. }
  52576. } else {
  52577. peg$currPos = s0;
  52578. s0 = peg$c1;
  52579. }
  52580. } else {
  52581. peg$currPos = s0;
  52582. s0 = peg$c1;
  52583. }
  52584. } else {
  52585. peg$currPos = s0;
  52586. s0 = peg$c1;
  52587. }
  52588. peg$cache[key] = { nextPos: peg$currPos, result: s0 };
  52589. return s0;
  52590. }
  52591. function peg$parsebinaryTail() {
  52592. var s0, s1, s2;
  52593. var key = peg$currPos * 60 + 49,
  52594. cached = peg$cache[key];
  52595. if (cached) {
  52596. peg$currPos = cached.nextPos;
  52597. return cached.result;
  52598. }
  52599. s0 = peg$currPos;
  52600. s1 = peg$parsebinaryMessage();
  52601. if (s1 !== peg$FAILED) {
  52602. s2 = peg$parsebinaryTail();
  52603. if (s2 === peg$FAILED) {
  52604. s2 = peg$c41;
  52605. }
  52606. if (s2 !== peg$FAILED) {
  52607. peg$reportedPos = s0;
  52608. s1 = peg$c117(s1, s2);
  52609. s0 = s1;
  52610. } else {
  52611. peg$currPos = s0;
  52612. s0 = peg$c1;
  52613. }
  52614. } else {
  52615. peg$currPos = s0;
  52616. s0 = peg$c1;
  52617. }
  52618. peg$cache[key] = { nextPos: peg$currPos, result: s0 };
  52619. return s0;
  52620. }
  52621. function peg$parsebinarySend() {
  52622. var s0, s1, s2;
  52623. var key = peg$currPos * 60 + 50,
  52624. cached = peg$cache[key];
  52625. if (cached) {
  52626. peg$currPos = cached.nextPos;
  52627. return cached.result;
  52628. }
  52629. s0 = peg$currPos;
  52630. s1 = peg$parseunarySend();
  52631. if (s1 !== peg$FAILED) {
  52632. s2 = peg$parsebinaryTail();
  52633. if (s2 === peg$FAILED) {
  52634. s2 = peg$c41;
  52635. }
  52636. if (s2 !== peg$FAILED) {
  52637. peg$reportedPos = s0;
  52638. s1 = peg$c115(s1, s2);
  52639. s0 = s1;
  52640. } else {
  52641. peg$currPos = s0;
  52642. s0 = peg$c1;
  52643. }
  52644. } else {
  52645. peg$currPos = s0;
  52646. s0 = peg$c1;
  52647. }
  52648. peg$cache[key] = { nextPos: peg$currPos, result: s0 };
  52649. return s0;
  52650. }
  52651. function peg$parsekeywordMessage() {
  52652. var s0, s1, s2;
  52653. var key = peg$currPos * 60 + 51,
  52654. cached = peg$cache[key];
  52655. if (cached) {
  52656. peg$currPos = cached.nextPos;
  52657. return cached.result;
  52658. }
  52659. s0 = peg$currPos;
  52660. s1 = [];
  52661. s2 = peg$parsekeywordPair();
  52662. if (s2 !== peg$FAILED) {
  52663. while (s2 !== peg$FAILED) {
  52664. s1.push(s2);
  52665. s2 = peg$parsekeywordPair();
  52666. }
  52667. } else {
  52668. s1 = peg$c1;
  52669. }
  52670. if (s1 !== peg$FAILED) {
  52671. peg$reportedPos = s0;
  52672. s1 = peg$c118(s1);
  52673. }
  52674. s0 = s1;
  52675. peg$cache[key] = { nextPos: peg$currPos, result: s0 };
  52676. return s0;
  52677. }
  52678. function peg$parsekeywordSend() {
  52679. var s0, s1, s2;
  52680. var key = peg$currPos * 60 + 52,
  52681. cached = peg$cache[key];
  52682. if (cached) {
  52683. peg$currPos = cached.nextPos;
  52684. return cached.result;
  52685. }
  52686. s0 = peg$currPos;
  52687. s1 = peg$parsebinarySend();
  52688. if (s1 !== peg$FAILED) {
  52689. s2 = peg$parsekeywordMessage();
  52690. if (s2 !== peg$FAILED) {
  52691. peg$reportedPos = s0;
  52692. s1 = peg$c119(s1, s2);
  52693. s0 = s1;
  52694. } else {
  52695. peg$currPos = s0;
  52696. s0 = peg$c1;
  52697. }
  52698. } else {
  52699. peg$currPos = s0;
  52700. s0 = peg$c1;
  52701. }
  52702. peg$cache[key] = { nextPos: peg$currPos, result: s0 };
  52703. return s0;
  52704. }
  52705. function peg$parsemessage() {
  52706. var s0;
  52707. var key = peg$currPos * 60 + 53,
  52708. cached = peg$cache[key];
  52709. if (cached) {
  52710. peg$currPos = cached.nextPos;
  52711. return cached.result;
  52712. }
  52713. s0 = peg$parsebinaryMessage();
  52714. if (s0 === peg$FAILED) {
  52715. s0 = peg$parseunaryMessage();
  52716. if (s0 === peg$FAILED) {
  52717. s0 = peg$parsekeywordMessage();
  52718. }
  52719. }
  52720. peg$cache[key] = { nextPos: peg$currPos, result: s0 };
  52721. return s0;
  52722. }
  52723. function peg$parsecascade() {
  52724. var s0, s1, s2, s3, s4, s5, s6, s7, s8;
  52725. var key = peg$currPos * 60 + 54,
  52726. cached = peg$cache[key];
  52727. if (cached) {
  52728. peg$currPos = cached.nextPos;
  52729. return cached.result;
  52730. }
  52731. s0 = peg$currPos;
  52732. s1 = peg$parsews();
  52733. if (s1 !== peg$FAILED) {
  52734. s2 = peg$parsekeywordSend();
  52735. if (s2 === peg$FAILED) {
  52736. s2 = peg$parsebinarySend();
  52737. }
  52738. if (s2 !== peg$FAILED) {
  52739. s3 = [];
  52740. s4 = peg$currPos;
  52741. s5 = peg$parsews();
  52742. if (s5 !== peg$FAILED) {
  52743. if (input.charCodeAt(peg$currPos) === 59) {
  52744. s6 = peg$c120;
  52745. peg$currPos++;
  52746. } else {
  52747. s6 = peg$FAILED;
  52748. if (peg$silentFails === 0) { peg$fail(peg$c121); }
  52749. }
  52750. if (s6 !== peg$FAILED) {
  52751. s7 = peg$parsews();
  52752. if (s7 !== peg$FAILED) {
  52753. s8 = peg$parsemessage();
  52754. if (s8 !== peg$FAILED) {
  52755. peg$reportedPos = s4;
  52756. s5 = peg$c122(s8);
  52757. s4 = s5;
  52758. } else {
  52759. peg$currPos = s4;
  52760. s4 = peg$c1;
  52761. }
  52762. } else {
  52763. peg$currPos = s4;
  52764. s4 = peg$c1;
  52765. }
  52766. } else {
  52767. peg$currPos = s4;
  52768. s4 = peg$c1;
  52769. }
  52770. } else {
  52771. peg$currPos = s4;
  52772. s4 = peg$c1;
  52773. }
  52774. if (s4 !== peg$FAILED) {
  52775. while (s4 !== peg$FAILED) {
  52776. s3.push(s4);
  52777. s4 = peg$currPos;
  52778. s5 = peg$parsews();
  52779. if (s5 !== peg$FAILED) {
  52780. if (input.charCodeAt(peg$currPos) === 59) {
  52781. s6 = peg$c120;
  52782. peg$currPos++;
  52783. } else {
  52784. s6 = peg$FAILED;
  52785. if (peg$silentFails === 0) { peg$fail(peg$c121); }
  52786. }
  52787. if (s6 !== peg$FAILED) {
  52788. s7 = peg$parsews();
  52789. if (s7 !== peg$FAILED) {
  52790. s8 = peg$parsemessage();
  52791. if (s8 !== peg$FAILED) {
  52792. peg$reportedPos = s4;
  52793. s5 = peg$c122(s8);
  52794. s4 = s5;
  52795. } else {
  52796. peg$currPos = s4;
  52797. s4 = peg$c1;
  52798. }
  52799. } else {
  52800. peg$currPos = s4;
  52801. s4 = peg$c1;
  52802. }
  52803. } else {
  52804. peg$currPos = s4;
  52805. s4 = peg$c1;
  52806. }
  52807. } else {
  52808. peg$currPos = s4;
  52809. s4 = peg$c1;
  52810. }
  52811. }
  52812. } else {
  52813. s3 = peg$c1;
  52814. }
  52815. if (s3 !== peg$FAILED) {
  52816. peg$reportedPos = s0;
  52817. s1 = peg$c123(s2, s3);
  52818. s0 = s1;
  52819. } else {
  52820. peg$currPos = s0;
  52821. s0 = peg$c1;
  52822. }
  52823. } else {
  52824. peg$currPos = s0;
  52825. s0 = peg$c1;
  52826. }
  52827. } else {
  52828. peg$currPos = s0;
  52829. s0 = peg$c1;
  52830. }
  52831. peg$cache[key] = { nextPos: peg$currPos, result: s0 };
  52832. return s0;
  52833. }
  52834. function peg$parsejsStatement() {
  52835. var s0, s1, s2, s3, s4;
  52836. var key = peg$currPos * 60 + 55,
  52837. cached = peg$cache[key];
  52838. if (cached) {
  52839. peg$currPos = cached.nextPos;
  52840. return cached.result;
  52841. }
  52842. s0 = peg$currPos;
  52843. if (input.charCodeAt(peg$currPos) === 60) {
  52844. s1 = peg$c124;
  52845. peg$currPos++;
  52846. } else {
  52847. s1 = peg$FAILED;
  52848. if (peg$silentFails === 0) { peg$fail(peg$c125); }
  52849. }
  52850. if (s1 !== peg$FAILED) {
  52851. s2 = [];
  52852. s3 = peg$currPos;
  52853. if (input.substr(peg$currPos, 2) === peg$c126) {
  52854. s4 = peg$c126;
  52855. peg$currPos += 2;
  52856. } else {
  52857. s4 = peg$FAILED;
  52858. if (peg$silentFails === 0) { peg$fail(peg$c127); }
  52859. }
  52860. if (s4 !== peg$FAILED) {
  52861. peg$reportedPos = s3;
  52862. s4 = peg$c128();
  52863. }
  52864. s3 = s4;
  52865. if (s3 === peg$FAILED) {
  52866. if (peg$c129.test(input.charAt(peg$currPos))) {
  52867. s3 = input.charAt(peg$currPos);
  52868. peg$currPos++;
  52869. } else {
  52870. s3 = peg$FAILED;
  52871. if (peg$silentFails === 0) { peg$fail(peg$c130); }
  52872. }
  52873. }
  52874. while (s3 !== peg$FAILED) {
  52875. s2.push(s3);
  52876. s3 = peg$currPos;
  52877. if (input.substr(peg$currPos, 2) === peg$c126) {
  52878. s4 = peg$c126;
  52879. peg$currPos += 2;
  52880. } else {
  52881. s4 = peg$FAILED;
  52882. if (peg$silentFails === 0) { peg$fail(peg$c127); }
  52883. }
  52884. if (s4 !== peg$FAILED) {
  52885. peg$reportedPos = s3;
  52886. s4 = peg$c128();
  52887. }
  52888. s3 = s4;
  52889. if (s3 === peg$FAILED) {
  52890. if (peg$c129.test(input.charAt(peg$currPos))) {
  52891. s3 = input.charAt(peg$currPos);
  52892. peg$currPos++;
  52893. } else {
  52894. s3 = peg$FAILED;
  52895. if (peg$silentFails === 0) { peg$fail(peg$c130); }
  52896. }
  52897. }
  52898. }
  52899. if (s2 !== peg$FAILED) {
  52900. if (input.charCodeAt(peg$currPos) === 62) {
  52901. s3 = peg$c131;
  52902. peg$currPos++;
  52903. } else {
  52904. s3 = peg$FAILED;
  52905. if (peg$silentFails === 0) { peg$fail(peg$c132); }
  52906. }
  52907. if (s3 !== peg$FAILED) {
  52908. peg$reportedPos = s0;
  52909. s1 = peg$c133(s2);
  52910. s0 = s1;
  52911. } else {
  52912. peg$currPos = s0;
  52913. s0 = peg$c1;
  52914. }
  52915. } else {
  52916. peg$currPos = s0;
  52917. s0 = peg$c1;
  52918. }
  52919. } else {
  52920. peg$currPos = s0;
  52921. s0 = peg$c1;
  52922. }
  52923. peg$cache[key] = { nextPos: peg$currPos, result: s0 };
  52924. return s0;
  52925. }
  52926. function peg$parsemethod() {
  52927. var s0, s1, s2, s3, s4;
  52928. var key = peg$currPos * 60 + 56,
  52929. cached = peg$cache[key];
  52930. if (cached) {
  52931. peg$currPos = cached.nextPos;
  52932. return cached.result;
  52933. }
  52934. s0 = peg$currPos;
  52935. s1 = peg$parsekeywordPattern();
  52936. if (s1 === peg$FAILED) {
  52937. s1 = peg$parsebinaryPattern();
  52938. if (s1 === peg$FAILED) {
  52939. s1 = peg$parseunaryPattern();
  52940. }
  52941. }
  52942. if (s1 !== peg$FAILED) {
  52943. s2 = peg$parsews();
  52944. if (s2 !== peg$FAILED) {
  52945. s3 = peg$parsesequence();
  52946. if (s3 === peg$FAILED) {
  52947. s3 = peg$c41;
  52948. }
  52949. if (s3 !== peg$FAILED) {
  52950. s4 = peg$parsews();
  52951. if (s4 !== peg$FAILED) {
  52952. peg$reportedPos = s0;
  52953. s1 = peg$c134(s1, s3);
  52954. s0 = s1;
  52955. } else {
  52956. peg$currPos = s0;
  52957. s0 = peg$c1;
  52958. }
  52959. } else {
  52960. peg$currPos = s0;
  52961. s0 = peg$c1;
  52962. }
  52963. } else {
  52964. peg$currPos = s0;
  52965. s0 = peg$c1;
  52966. }
  52967. } else {
  52968. peg$currPos = s0;
  52969. s0 = peg$c1;
  52970. }
  52971. peg$cache[key] = { nextPos: peg$currPos, result: s0 };
  52972. return s0;
  52973. }
  52974. function peg$parseassociationSend() {
  52975. var s0, s1, s2;
  52976. var key = peg$currPos * 60 + 57,
  52977. cached = peg$cache[key];
  52978. if (cached) {
  52979. peg$currPos = cached.nextPos;
  52980. return cached.result;
  52981. }
  52982. s0 = peg$currPos;
  52983. s1 = peg$parsebinarySend();
  52984. if (s1 !== peg$FAILED) {
  52985. peg$reportedPos = peg$currPos;
  52986. s2 = peg$c135(s1);
  52987. if (s2) {
  52988. s2 = peg$c112;
  52989. } else {
  52990. s2 = peg$c1;
  52991. }
  52992. if (s2 !== peg$FAILED) {
  52993. peg$reportedPos = s0;
  52994. s1 = peg$c136(s1);
  52995. s0 = s1;
  52996. } else {
  52997. peg$currPos = s0;
  52998. s0 = peg$c1;
  52999. }
  53000. } else {
  53001. peg$currPos = s0;
  53002. s0 = peg$c1;
  53003. }
  53004. peg$cache[key] = { nextPos: peg$currPos, result: s0 };
  53005. return s0;
  53006. }
  53007. function peg$parseassociationList() {
  53008. var s0, s1, s2, s3, s4;
  53009. var key = peg$currPos * 60 + 58,
  53010. cached = peg$cache[key];
  53011. if (cached) {
  53012. peg$currPos = cached.nextPos;
  53013. return cached.result;
  53014. }
  53015. s0 = peg$currPos;
  53016. s1 = peg$parsews();
  53017. if (s1 !== peg$FAILED) {
  53018. if (input.charCodeAt(peg$currPos) === 46) {
  53019. s2 = peg$c51;
  53020. peg$currPos++;
  53021. } else {
  53022. s2 = peg$FAILED;
  53023. if (peg$silentFails === 0) { peg$fail(peg$c52); }
  53024. }
  53025. if (s2 !== peg$FAILED) {
  53026. s3 = peg$parsews();
  53027. if (s3 !== peg$FAILED) {
  53028. s4 = peg$parseassociationSend();
  53029. if (s4 !== peg$FAILED) {
  53030. peg$reportedPos = s0;
  53031. s1 = peg$c89(s4);
  53032. s0 = s1;
  53033. } else {
  53034. peg$currPos = s0;
  53035. s0 = peg$c1;
  53036. }
  53037. } else {
  53038. peg$currPos = s0;
  53039. s0 = peg$c1;
  53040. }
  53041. } else {
  53042. peg$currPos = s0;
  53043. s0 = peg$c1;
  53044. }
  53045. } else {
  53046. peg$currPos = s0;
  53047. s0 = peg$c1;
  53048. }
  53049. peg$cache[key] = { nextPos: peg$currPos, result: s0 };
  53050. return s0;
  53051. }
  53052. function peg$parseassociations() {
  53053. var s0, s1, s2, s3;
  53054. var key = peg$currPos * 60 + 59,
  53055. cached = peg$cache[key];
  53056. if (cached) {
  53057. peg$currPos = cached.nextPos;
  53058. return cached.result;
  53059. }
  53060. s0 = peg$currPos;
  53061. s1 = peg$parseassociationSend();
  53062. if (s1 !== peg$FAILED) {
  53063. s2 = [];
  53064. s3 = peg$parseassociationList();
  53065. while (s3 !== peg$FAILED) {
  53066. s2.push(s3);
  53067. s3 = peg$parseassociationList();
  53068. }
  53069. if (s2 !== peg$FAILED) {
  53070. peg$reportedPos = s0;
  53071. s1 = peg$c137(s1, s2);
  53072. s0 = s1;
  53073. } else {
  53074. peg$currPos = s0;
  53075. s0 = peg$c1;
  53076. }
  53077. } else {
  53078. peg$currPos = s0;
  53079. s0 = peg$c1;
  53080. }
  53081. peg$cache[key] = { nextPos: peg$currPos, result: s0 };
  53082. return s0;
  53083. }
  53084. peg$result = peg$startRuleFunction();
  53085. if (peg$result !== peg$FAILED && peg$currPos === input.length) {
  53086. return peg$result;
  53087. } else {
  53088. if (peg$result !== peg$FAILED && peg$currPos < input.length) {
  53089. peg$fail({ type: "end", description: "end of input" });
  53090. }
  53091. throw peg$buildException(null, peg$maxFailExpected, peg$maxFailPos);
  53092. }
  53093. }
  53094. return {
  53095. SyntaxError: SyntaxError,
  53096. parse: parse
  53097. };
  53098. })();
  53099. });
  53100. define("amber_core/SUnit", ["amber/boot", "amber_core/Kernel-Objects", "amber_core/Kernel-Exceptions", "amber_core/Kernel-Classes", "amber_core/Kernel-Infrastructure"], function($boot){
  53101. var $core=$boot.api,nil=$boot.nil,$recv=$boot.asReceiver,$globals=$boot.globals;
  53102. var smalltalk=$core,_st=$recv,globals=$globals;
  53103. $core.addPackage('SUnit');
  53104. $core.packages["SUnit"].transport = {"type":"amd","amdNamespace":"amber_core"};
  53105. $core.addClass('ResultAnnouncement', $globals.Object, ['result'], 'SUnit');
  53106. //>>excludeStart("ide", pragmas.excludeIdeData);
  53107. $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.";
  53108. //>>excludeEnd("ide");
  53109. $core.addMethod(
  53110. $core.method({
  53111. selector: "result",
  53112. protocol: 'accessing',
  53113. fn: function (){
  53114. var self=this;
  53115. var $1;
  53116. $1=self["@result"];
  53117. return $1;
  53118. },
  53119. //>>excludeStart("ide", pragmas.excludeIdeData);
  53120. args: [],
  53121. source: "result\x0a\x09^ result",
  53122. referencedClasses: [],
  53123. //>>excludeEnd("ide");
  53124. messageSends: []
  53125. }),
  53126. $globals.ResultAnnouncement);
  53127. $core.addMethod(
  53128. $core.method({
  53129. selector: "result:",
  53130. protocol: 'accessing',
  53131. fn: function (aTestResult){
  53132. var self=this;
  53133. self["@result"]=aTestResult;
  53134. return self;
  53135. },
  53136. //>>excludeStart("ide", pragmas.excludeIdeData);
  53137. args: ["aTestResult"],
  53138. source: "result: aTestResult\x0a\x09result := aTestResult",
  53139. referencedClasses: [],
  53140. //>>excludeEnd("ide");
  53141. messageSends: []
  53142. }),
  53143. $globals.ResultAnnouncement);
  53144. $core.addClass('TestCase', $globals.Object, ['testSelector', 'asyncTimeout', 'context'], 'SUnit');
  53145. //>>excludeStart("ide", pragmas.excludeIdeData);
  53146. $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.";
  53147. //>>excludeEnd("ide");
  53148. $core.addMethod(
  53149. $core.method({
  53150. selector: "assert:",
  53151. protocol: 'testing',
  53152. fn: function (aBoolean){
  53153. var self=this;
  53154. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53155. return $core.withContext(function($ctx1) {
  53156. //>>excludeEnd("ctx");
  53157. self._assert_description_(aBoolean,"Assertion failed");
  53158. return self;
  53159. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53160. }, function($ctx1) {$ctx1.fill(self,"assert:",{aBoolean:aBoolean},$globals.TestCase)});
  53161. //>>excludeEnd("ctx");
  53162. },
  53163. //>>excludeStart("ide", pragmas.excludeIdeData);
  53164. args: ["aBoolean"],
  53165. source: "assert: aBoolean\x0a\x09self assert: aBoolean description: 'Assertion failed'",
  53166. referencedClasses: [],
  53167. //>>excludeEnd("ide");
  53168. messageSends: ["assert:description:"]
  53169. }),
  53170. $globals.TestCase);
  53171. $core.addMethod(
  53172. $core.method({
  53173. selector: "assert:description:",
  53174. protocol: 'testing',
  53175. fn: function (aBoolean,aString){
  53176. var self=this;
  53177. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53178. return $core.withContext(function($ctx1) {
  53179. //>>excludeEnd("ctx");
  53180. if(!$core.assert(aBoolean)){
  53181. self._signalFailure_(aString);
  53182. };
  53183. return self;
  53184. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53185. }, function($ctx1) {$ctx1.fill(self,"assert:description:",{aBoolean:aBoolean,aString:aString},$globals.TestCase)});
  53186. //>>excludeEnd("ctx");
  53187. },
  53188. //>>excludeStart("ide", pragmas.excludeIdeData);
  53189. args: ["aBoolean", "aString"],
  53190. source: "assert: aBoolean description: aString\x0a\x09aBoolean ifFalse: [ self signalFailure: aString ]",
  53191. referencedClasses: [],
  53192. //>>excludeEnd("ide");
  53193. messageSends: ["ifFalse:", "signalFailure:"]
  53194. }),
  53195. $globals.TestCase);
  53196. $core.addMethod(
  53197. $core.method({
  53198. selector: "assert:equals:",
  53199. protocol: 'testing',
  53200. fn: function (actual,expected){
  53201. var self=this;
  53202. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53203. return $core.withContext(function($ctx1) {
  53204. //>>excludeEnd("ctx");
  53205. var $2,$6,$5,$4,$3,$1;
  53206. $2=$recv(actual).__eq(expected);
  53207. $6=$recv(expected)._printString();
  53208. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53209. $ctx1.sendIdx["printString"]=1;
  53210. //>>excludeEnd("ctx");
  53211. $5="Expected: ".__comma($6);
  53212. $4=$recv($5).__comma(" but was: ");
  53213. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53214. $ctx1.sendIdx[","]=2;
  53215. //>>excludeEnd("ctx");
  53216. $3=$recv($4).__comma($recv(actual)._printString());
  53217. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53218. $ctx1.sendIdx[","]=1;
  53219. //>>excludeEnd("ctx");
  53220. $1=self._assert_description_($2,$3);
  53221. return $1;
  53222. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53223. }, function($ctx1) {$ctx1.fill(self,"assert:equals:",{actual:actual,expected:expected},$globals.TestCase)});
  53224. //>>excludeEnd("ctx");
  53225. },
  53226. //>>excludeStart("ide", pragmas.excludeIdeData);
  53227. args: ["actual", "expected"],
  53228. source: "assert: actual equals: expected\x0a\x09^ self assert: (actual = expected) description: 'Expected: ', expected printString, ' but was: ', actual printString",
  53229. referencedClasses: [],
  53230. //>>excludeEnd("ide");
  53231. messageSends: ["assert:description:", "=", ",", "printString"]
  53232. }),
  53233. $globals.TestCase);
  53234. $core.addMethod(
  53235. $core.method({
  53236. selector: "async:",
  53237. protocol: 'async',
  53238. fn: function (aBlock){
  53239. var self=this;
  53240. var c;
  53241. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53242. return $core.withContext(function($ctx1) {
  53243. //>>excludeEnd("ctx");
  53244. var $2,$1;
  53245. self._errorIfNotAsync_("#async");
  53246. c=self["@context"];
  53247. $1=(function(){
  53248. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53249. return $core.withContext(function($ctx2) {
  53250. //>>excludeEnd("ctx");
  53251. $2=self._isAsync();
  53252. if($core.assert($2)){
  53253. return $recv(c)._execute_(aBlock);
  53254. };
  53255. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53256. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  53257. //>>excludeEnd("ctx");
  53258. });
  53259. return $1;
  53260. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53261. }, function($ctx1) {$ctx1.fill(self,"async:",{aBlock:aBlock,c:c},$globals.TestCase)});
  53262. //>>excludeEnd("ctx");
  53263. },
  53264. //>>excludeStart("ide", pragmas.excludeIdeData);
  53265. args: ["aBlock"],
  53266. source: "async: aBlock\x0a\x09| c |\x0a\x09self errorIfNotAsync: '#async'.\x0a\x09c := context.\x0a\x09^ [ self isAsync ifTrue: [ c execute: aBlock ] ]",
  53267. referencedClasses: [],
  53268. //>>excludeEnd("ide");
  53269. messageSends: ["errorIfNotAsync:", "ifTrue:", "isAsync", "execute:"]
  53270. }),
  53271. $globals.TestCase);
  53272. $core.addMethod(
  53273. $core.method({
  53274. selector: "context:",
  53275. protocol: 'accessing',
  53276. fn: function (aRunningTestContext){
  53277. var self=this;
  53278. self["@context"]=aRunningTestContext;
  53279. return self;
  53280. },
  53281. //>>excludeStart("ide", pragmas.excludeIdeData);
  53282. args: ["aRunningTestContext"],
  53283. source: "context: aRunningTestContext\x0a\x09context := aRunningTestContext",
  53284. referencedClasses: [],
  53285. //>>excludeEnd("ide");
  53286. messageSends: []
  53287. }),
  53288. $globals.TestCase);
  53289. $core.addMethod(
  53290. $core.method({
  53291. selector: "deny:",
  53292. protocol: 'testing',
  53293. fn: function (aBoolean){
  53294. var self=this;
  53295. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53296. return $core.withContext(function($ctx1) {
  53297. //>>excludeEnd("ctx");
  53298. self._assert_($recv(aBoolean)._not());
  53299. return self;
  53300. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53301. }, function($ctx1) {$ctx1.fill(self,"deny:",{aBoolean:aBoolean},$globals.TestCase)});
  53302. //>>excludeEnd("ctx");
  53303. },
  53304. //>>excludeStart("ide", pragmas.excludeIdeData);
  53305. args: ["aBoolean"],
  53306. source: "deny: aBoolean\x0a\x09self assert: aBoolean not",
  53307. referencedClasses: [],
  53308. //>>excludeEnd("ide");
  53309. messageSends: ["assert:", "not"]
  53310. }),
  53311. $globals.TestCase);
  53312. $core.addMethod(
  53313. $core.method({
  53314. selector: "errorIfNotAsync:",
  53315. protocol: 'error handling',
  53316. fn: function (aString){
  53317. var self=this;
  53318. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53319. return $core.withContext(function($ctx1) {
  53320. //>>excludeEnd("ctx");
  53321. var $1;
  53322. $1=self._isAsync();
  53323. if(!$core.assert($1)){
  53324. self._error_($recv(aString).__comma(" used without prior #timeout:"));
  53325. };
  53326. return self;
  53327. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53328. }, function($ctx1) {$ctx1.fill(self,"errorIfNotAsync:",{aString:aString},$globals.TestCase)});
  53329. //>>excludeEnd("ctx");
  53330. },
  53331. //>>excludeStart("ide", pragmas.excludeIdeData);
  53332. args: ["aString"],
  53333. source: "errorIfNotAsync: aString\x0a\x09self isAsync ifFalse: [\x0a\x09\x09self error: aString, ' used without prior #timeout:' ]",
  53334. referencedClasses: [],
  53335. //>>excludeEnd("ide");
  53336. messageSends: ["ifFalse:", "isAsync", "error:", ","]
  53337. }),
  53338. $globals.TestCase);
  53339. $core.addMethod(
  53340. $core.method({
  53341. selector: "finished",
  53342. protocol: 'async',
  53343. fn: function (){
  53344. var self=this;
  53345. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53346. return $core.withContext(function($ctx1) {
  53347. //>>excludeEnd("ctx");
  53348. self._errorIfNotAsync_("#finished");
  53349. self["@asyncTimeout"]=nil;
  53350. return self;
  53351. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53352. }, function($ctx1) {$ctx1.fill(self,"finished",{},$globals.TestCase)});
  53353. //>>excludeEnd("ctx");
  53354. },
  53355. //>>excludeStart("ide", pragmas.excludeIdeData);
  53356. args: [],
  53357. source: "finished\x0a\x09self errorIfNotAsync: '#finished'.\x0a\x09asyncTimeout := nil",
  53358. referencedClasses: [],
  53359. //>>excludeEnd("ide");
  53360. messageSends: ["errorIfNotAsync:"]
  53361. }),
  53362. $globals.TestCase);
  53363. $core.addMethod(
  53364. $core.method({
  53365. selector: "isAsync",
  53366. protocol: 'testing',
  53367. fn: function (){
  53368. var self=this;
  53369. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53370. return $core.withContext(function($ctx1) {
  53371. //>>excludeEnd("ctx");
  53372. var $1;
  53373. $1=$recv(self["@asyncTimeout"])._notNil();
  53374. return $1;
  53375. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53376. }, function($ctx1) {$ctx1.fill(self,"isAsync",{},$globals.TestCase)});
  53377. //>>excludeEnd("ctx");
  53378. },
  53379. //>>excludeStart("ide", pragmas.excludeIdeData);
  53380. args: [],
  53381. source: "isAsync\x0a\x09^ asyncTimeout notNil",
  53382. referencedClasses: [],
  53383. //>>excludeEnd("ide");
  53384. messageSends: ["notNil"]
  53385. }),
  53386. $globals.TestCase);
  53387. $core.addMethod(
  53388. $core.method({
  53389. selector: "performTest",
  53390. protocol: 'running',
  53391. fn: function (){
  53392. var self=this;
  53393. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53394. return $core.withContext(function($ctx1) {
  53395. //>>excludeEnd("ctx");
  53396. self["@asyncTimeout"]=nil;
  53397. self._perform_(self._selector());
  53398. return self;
  53399. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53400. }, function($ctx1) {$ctx1.fill(self,"performTest",{},$globals.TestCase)});
  53401. //>>excludeEnd("ctx");
  53402. },
  53403. //>>excludeStart("ide", pragmas.excludeIdeData);
  53404. args: [],
  53405. source: "performTest\x0a\x09asyncTimeout := nil.\x0a\x09self perform: self selector",
  53406. referencedClasses: [],
  53407. //>>excludeEnd("ide");
  53408. messageSends: ["perform:", "selector"]
  53409. }),
  53410. $globals.TestCase);
  53411. $core.addMethod(
  53412. $core.method({
  53413. selector: "runCase",
  53414. protocol: 'running',
  53415. fn: function (){
  53416. var self=this;
  53417. function $TestContext(){return $globals.TestContext||(typeof TestContext=="undefined"?nil:TestContext)}
  53418. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53419. return $core.withContext(function($ctx1) {
  53420. //>>excludeEnd("ctx");
  53421. $recv($recv($TestContext())._testCase_(self))._start();
  53422. return self;
  53423. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53424. }, function($ctx1) {$ctx1.fill(self,"runCase",{},$globals.TestCase)});
  53425. //>>excludeEnd("ctx");
  53426. },
  53427. //>>excludeStart("ide", pragmas.excludeIdeData);
  53428. args: [],
  53429. source: "runCase\x0a\x09\x22Runs a test case in isolated context, leaking all errors.\x22\x0a\x0a\x09(TestContext testCase: self) start",
  53430. referencedClasses: ["TestContext"],
  53431. //>>excludeEnd("ide");
  53432. messageSends: ["start", "testCase:"]
  53433. }),
  53434. $globals.TestCase);
  53435. $core.addMethod(
  53436. $core.method({
  53437. selector: "selector",
  53438. protocol: 'accessing',
  53439. fn: function (){
  53440. var self=this;
  53441. var $1;
  53442. $1=self["@testSelector"];
  53443. return $1;
  53444. },
  53445. //>>excludeStart("ide", pragmas.excludeIdeData);
  53446. args: [],
  53447. source: "selector\x0a\x09^ testSelector",
  53448. referencedClasses: [],
  53449. //>>excludeEnd("ide");
  53450. messageSends: []
  53451. }),
  53452. $globals.TestCase);
  53453. $core.addMethod(
  53454. $core.method({
  53455. selector: "setTestSelector:",
  53456. protocol: 'accessing',
  53457. fn: function (aSelector){
  53458. var self=this;
  53459. self["@testSelector"]=aSelector;
  53460. return self;
  53461. },
  53462. //>>excludeStart("ide", pragmas.excludeIdeData);
  53463. args: ["aSelector"],
  53464. source: "setTestSelector: aSelector\x0a\x09testSelector := aSelector",
  53465. referencedClasses: [],
  53466. //>>excludeEnd("ide");
  53467. messageSends: []
  53468. }),
  53469. $globals.TestCase);
  53470. $core.addMethod(
  53471. $core.method({
  53472. selector: "setUp",
  53473. protocol: 'running',
  53474. fn: function (){
  53475. var self=this;
  53476. return self;
  53477. },
  53478. //>>excludeStart("ide", pragmas.excludeIdeData);
  53479. args: [],
  53480. source: "setUp",
  53481. referencedClasses: [],
  53482. //>>excludeEnd("ide");
  53483. messageSends: []
  53484. }),
  53485. $globals.TestCase);
  53486. $core.addMethod(
  53487. $core.method({
  53488. selector: "should:",
  53489. protocol: 'testing',
  53490. fn: function (aBlock){
  53491. var self=this;
  53492. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53493. return $core.withContext(function($ctx1) {
  53494. //>>excludeEnd("ctx");
  53495. self._assert_($recv(aBlock)._value());
  53496. return self;
  53497. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53498. }, function($ctx1) {$ctx1.fill(self,"should:",{aBlock:aBlock},$globals.TestCase)});
  53499. //>>excludeEnd("ctx");
  53500. },
  53501. //>>excludeStart("ide", pragmas.excludeIdeData);
  53502. args: ["aBlock"],
  53503. source: "should: aBlock\x0a\x09self assert: aBlock value",
  53504. referencedClasses: [],
  53505. //>>excludeEnd("ide");
  53506. messageSends: ["assert:", "value"]
  53507. }),
  53508. $globals.TestCase);
  53509. $core.addMethod(
  53510. $core.method({
  53511. selector: "should:raise:",
  53512. protocol: 'testing',
  53513. fn: function (aBlock,anExceptionClass){
  53514. var self=this;
  53515. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53516. return $core.withContext(function($ctx1) {
  53517. //>>excludeEnd("ctx");
  53518. self._assert_($recv((function(){
  53519. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53520. return $core.withContext(function($ctx2) {
  53521. //>>excludeEnd("ctx");
  53522. $recv(aBlock)._value();
  53523. return false;
  53524. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53525. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  53526. //>>excludeEnd("ctx");
  53527. }))._on_do_(anExceptionClass,(function(ex){
  53528. return true;
  53529. })));
  53530. return self;
  53531. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53532. }, function($ctx1) {$ctx1.fill(self,"should:raise:",{aBlock:aBlock,anExceptionClass:anExceptionClass},$globals.TestCase)});
  53533. //>>excludeEnd("ctx");
  53534. },
  53535. //>>excludeStart("ide", pragmas.excludeIdeData);
  53536. args: ["aBlock", "anExceptionClass"],
  53537. source: "should: aBlock raise: anExceptionClass\x0a\x09self assert: ([ aBlock value. false ]\x0a\x09\x09on: anExceptionClass\x0a\x09\x09do: [ :ex | true ])",
  53538. referencedClasses: [],
  53539. //>>excludeEnd("ide");
  53540. messageSends: ["assert:", "on:do:", "value"]
  53541. }),
  53542. $globals.TestCase);
  53543. $core.addMethod(
  53544. $core.method({
  53545. selector: "shouldnt:raise:",
  53546. protocol: 'testing',
  53547. fn: function (aBlock,anExceptionClass){
  53548. var self=this;
  53549. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53550. return $core.withContext(function($ctx1) {
  53551. //>>excludeEnd("ctx");
  53552. self._assert_($recv((function(){
  53553. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53554. return $core.withContext(function($ctx2) {
  53555. //>>excludeEnd("ctx");
  53556. $recv(aBlock)._value();
  53557. return true;
  53558. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53559. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  53560. //>>excludeEnd("ctx");
  53561. }))._on_do_(anExceptionClass,(function(ex){
  53562. return false;
  53563. })));
  53564. return self;
  53565. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53566. }, function($ctx1) {$ctx1.fill(self,"shouldnt:raise:",{aBlock:aBlock,anExceptionClass:anExceptionClass},$globals.TestCase)});
  53567. //>>excludeEnd("ctx");
  53568. },
  53569. //>>excludeStart("ide", pragmas.excludeIdeData);
  53570. args: ["aBlock", "anExceptionClass"],
  53571. source: "shouldnt: aBlock raise: anExceptionClass\x0a\x09self assert: ([ aBlock value. true ]\x0a\x09\x09on: anExceptionClass\x0a\x09\x09do: [ :ex | false ])",
  53572. referencedClasses: [],
  53573. //>>excludeEnd("ide");
  53574. messageSends: ["assert:", "on:do:", "value"]
  53575. }),
  53576. $globals.TestCase);
  53577. $core.addMethod(
  53578. $core.method({
  53579. selector: "signalFailure:",
  53580. protocol: 'private',
  53581. fn: function (aString){
  53582. var self=this;
  53583. function $TestFailure(){return $globals.TestFailure||(typeof TestFailure=="undefined"?nil:TestFailure)}
  53584. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53585. return $core.withContext(function($ctx1) {
  53586. //>>excludeEnd("ctx");
  53587. var $1,$2;
  53588. $1=$recv($TestFailure())._new();
  53589. $recv($1)._messageText_(aString);
  53590. $2=$recv($1)._signal();
  53591. return self;
  53592. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53593. }, function($ctx1) {$ctx1.fill(self,"signalFailure:",{aString:aString},$globals.TestCase)});
  53594. //>>excludeEnd("ctx");
  53595. },
  53596. //>>excludeStart("ide", pragmas.excludeIdeData);
  53597. args: ["aString"],
  53598. source: "signalFailure: aString\x0a\x09TestFailure new\x0a\x09\x09messageText: aString;\x0a\x09\x09signal",
  53599. referencedClasses: ["TestFailure"],
  53600. //>>excludeEnd("ide");
  53601. messageSends: ["messageText:", "new", "signal"]
  53602. }),
  53603. $globals.TestCase);
  53604. $core.addMethod(
  53605. $core.method({
  53606. selector: "tearDown",
  53607. protocol: 'running',
  53608. fn: function (){
  53609. var self=this;
  53610. return self;
  53611. },
  53612. //>>excludeStart("ide", pragmas.excludeIdeData);
  53613. args: [],
  53614. source: "tearDown",
  53615. referencedClasses: [],
  53616. //>>excludeEnd("ide");
  53617. messageSends: []
  53618. }),
  53619. $globals.TestCase);
  53620. $core.addMethod(
  53621. $core.method({
  53622. selector: "timeout:",
  53623. protocol: 'async',
  53624. fn: function (aNumber){
  53625. var self=this;
  53626. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53627. return $core.withContext(function($ctx1) {
  53628. //>>excludeEnd("ctx");
  53629. var $1,$receiver;
  53630. $1=self["@asyncTimeout"];
  53631. if(($receiver = $1) == null || $receiver.isNil){
  53632. $1;
  53633. } else {
  53634. $recv(self["@asyncTimeout"])._clearTimeout();
  53635. };
  53636. self["@asyncTimeout"]=(0);
  53637. self["@asyncTimeout"]=$recv(self._async_((function(){
  53638. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53639. return $core.withContext(function($ctx2) {
  53640. //>>excludeEnd("ctx");
  53641. return self._assert_description_(false,"SUnit grace time exhausted");
  53642. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53643. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
  53644. //>>excludeEnd("ctx");
  53645. })))._valueWithTimeout_(aNumber);
  53646. return self;
  53647. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53648. }, function($ctx1) {$ctx1.fill(self,"timeout:",{aNumber:aNumber},$globals.TestCase)});
  53649. //>>excludeEnd("ctx");
  53650. },
  53651. //>>excludeStart("ide", pragmas.excludeIdeData);
  53652. args: ["aNumber"],
  53653. 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",
  53654. referencedClasses: [],
  53655. //>>excludeEnd("ide");
  53656. messageSends: ["ifNotNil:", "clearTimeout", "valueWithTimeout:", "async:", "assert:description:"]
  53657. }),
  53658. $globals.TestCase);
  53659. $core.addMethod(
  53660. $core.method({
  53661. selector: "allTestSelectors",
  53662. protocol: 'accessing',
  53663. fn: function (){
  53664. var self=this;
  53665. var selectors;
  53666. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53667. return $core.withContext(function($ctx1) {
  53668. //>>excludeEnd("ctx");
  53669. var $1,$2;
  53670. selectors=self._testSelectors();
  53671. $1=self._shouldInheritSelectors();
  53672. if($core.assert($1)){
  53673. $recv(selectors)._addAll_($recv(self._superclass())._allTestSelectors());
  53674. };
  53675. $2=selectors;
  53676. return $2;
  53677. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53678. }, function($ctx1) {$ctx1.fill(self,"allTestSelectors",{selectors:selectors},$globals.TestCase.klass)});
  53679. //>>excludeEnd("ctx");
  53680. },
  53681. //>>excludeStart("ide", pragmas.excludeIdeData);
  53682. args: [],
  53683. source: "allTestSelectors\x0a\x09| selectors |\x0a\x09selectors := self testSelectors.\x0a\x09self shouldInheritSelectors ifTrue: [\x0a\x09\x09selectors addAll: self superclass allTestSelectors ].\x0a\x09^ selectors",
  53684. referencedClasses: [],
  53685. //>>excludeEnd("ide");
  53686. messageSends: ["testSelectors", "ifTrue:", "shouldInheritSelectors", "addAll:", "allTestSelectors", "superclass"]
  53687. }),
  53688. $globals.TestCase.klass);
  53689. $core.addMethod(
  53690. $core.method({
  53691. selector: "buildSuite",
  53692. protocol: 'accessing',
  53693. fn: function (){
  53694. var self=this;
  53695. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53696. return $core.withContext(function($ctx1) {
  53697. //>>excludeEnd("ctx");
  53698. var $1;
  53699. $1=$recv(self._allTestSelectors())._collect_((function(each){
  53700. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53701. return $core.withContext(function($ctx2) {
  53702. //>>excludeEnd("ctx");
  53703. return self._selector_(each);
  53704. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53705. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  53706. //>>excludeEnd("ctx");
  53707. }));
  53708. return $1;
  53709. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53710. }, function($ctx1) {$ctx1.fill(self,"buildSuite",{},$globals.TestCase.klass)});
  53711. //>>excludeEnd("ctx");
  53712. },
  53713. //>>excludeStart("ide", pragmas.excludeIdeData);
  53714. args: [],
  53715. source: "buildSuite\x0a\x09^ self allTestSelectors collect: [ :each | self selector: each ]",
  53716. referencedClasses: [],
  53717. //>>excludeEnd("ide");
  53718. messageSends: ["collect:", "allTestSelectors", "selector:"]
  53719. }),
  53720. $globals.TestCase.klass);
  53721. $core.addMethod(
  53722. $core.method({
  53723. selector: "heliosClass",
  53724. protocol: 'helios',
  53725. fn: function (){
  53726. var self=this;
  53727. return "test";
  53728. },
  53729. //>>excludeStart("ide", pragmas.excludeIdeData);
  53730. args: [],
  53731. source: "heliosClass\x0a\x09^ 'test'",
  53732. referencedClasses: [],
  53733. //>>excludeEnd("ide");
  53734. messageSends: []
  53735. }),
  53736. $globals.TestCase.klass);
  53737. $core.addMethod(
  53738. $core.method({
  53739. selector: "isAbstract",
  53740. protocol: 'testing',
  53741. fn: function (){
  53742. var self=this;
  53743. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53744. return $core.withContext(function($ctx1) {
  53745. //>>excludeEnd("ctx");
  53746. var $1;
  53747. $1=$recv(self._name()).__eq("TestCase");
  53748. return $1;
  53749. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53750. }, function($ctx1) {$ctx1.fill(self,"isAbstract",{},$globals.TestCase.klass)});
  53751. //>>excludeEnd("ctx");
  53752. },
  53753. //>>excludeStart("ide", pragmas.excludeIdeData);
  53754. args: [],
  53755. source: "isAbstract\x0a\x09^ self name = 'TestCase'",
  53756. referencedClasses: [],
  53757. //>>excludeEnd("ide");
  53758. messageSends: ["=", "name"]
  53759. }),
  53760. $globals.TestCase.klass);
  53761. $core.addMethod(
  53762. $core.method({
  53763. selector: "lookupHierarchyRoot",
  53764. protocol: 'accessing',
  53765. fn: function (){
  53766. var self=this;
  53767. function $TestCase(){return $globals.TestCase||(typeof TestCase=="undefined"?nil:TestCase)}
  53768. return $TestCase();
  53769. },
  53770. //>>excludeStart("ide", pragmas.excludeIdeData);
  53771. args: [],
  53772. source: "lookupHierarchyRoot\x0a\x09^ TestCase",
  53773. referencedClasses: ["TestCase"],
  53774. //>>excludeEnd("ide");
  53775. messageSends: []
  53776. }),
  53777. $globals.TestCase.klass);
  53778. $core.addMethod(
  53779. $core.method({
  53780. selector: "selector:",
  53781. protocol: 'accessing',
  53782. fn: function (aSelector){
  53783. var self=this;
  53784. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53785. return $core.withContext(function($ctx1) {
  53786. //>>excludeEnd("ctx");
  53787. var $2,$3,$1;
  53788. $2=self._new();
  53789. $recv($2)._setTestSelector_(aSelector);
  53790. $3=$recv($2)._yourself();
  53791. $1=$3;
  53792. return $1;
  53793. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53794. }, function($ctx1) {$ctx1.fill(self,"selector:",{aSelector:aSelector},$globals.TestCase.klass)});
  53795. //>>excludeEnd("ctx");
  53796. },
  53797. //>>excludeStart("ide", pragmas.excludeIdeData);
  53798. args: ["aSelector"],
  53799. source: "selector: aSelector\x0a\x09^ self new\x0a\x09\x09setTestSelector: aSelector;\x0a\x09\x09yourself",
  53800. referencedClasses: [],
  53801. //>>excludeEnd("ide");
  53802. messageSends: ["setTestSelector:", "new", "yourself"]
  53803. }),
  53804. $globals.TestCase.klass);
  53805. $core.addMethod(
  53806. $core.method({
  53807. selector: "shouldInheritSelectors",
  53808. protocol: 'testing',
  53809. fn: function (){
  53810. var self=this;
  53811. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53812. return $core.withContext(function($ctx1) {
  53813. //>>excludeEnd("ctx");
  53814. var $1;
  53815. $1=self.__tild_eq(self._lookupHierarchyRoot());
  53816. return $1;
  53817. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53818. }, function($ctx1) {$ctx1.fill(self,"shouldInheritSelectors",{},$globals.TestCase.klass)});
  53819. //>>excludeEnd("ctx");
  53820. },
  53821. //>>excludeStart("ide", pragmas.excludeIdeData);
  53822. args: [],
  53823. source: "shouldInheritSelectors\x0a\x09^ self ~= self lookupHierarchyRoot",
  53824. referencedClasses: [],
  53825. //>>excludeEnd("ide");
  53826. messageSends: ["~=", "lookupHierarchyRoot"]
  53827. }),
  53828. $globals.TestCase.klass);
  53829. $core.addMethod(
  53830. $core.method({
  53831. selector: "testSelectors",
  53832. protocol: 'accessing',
  53833. fn: function (){
  53834. var self=this;
  53835. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53836. return $core.withContext(function($ctx1) {
  53837. //>>excludeEnd("ctx");
  53838. var $1;
  53839. $1=$recv($recv(self._methodDictionary())._keys())._select_((function(each){
  53840. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53841. return $core.withContext(function($ctx2) {
  53842. //>>excludeEnd("ctx");
  53843. return $recv(each)._match_("^test");
  53844. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53845. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  53846. //>>excludeEnd("ctx");
  53847. }));
  53848. return $1;
  53849. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53850. }, function($ctx1) {$ctx1.fill(self,"testSelectors",{},$globals.TestCase.klass)});
  53851. //>>excludeEnd("ctx");
  53852. },
  53853. //>>excludeStart("ide", pragmas.excludeIdeData);
  53854. args: [],
  53855. source: "testSelectors\x0a\x09^ self methodDictionary keys select: [ :each | each match: '^test' ]",
  53856. referencedClasses: [],
  53857. //>>excludeEnd("ide");
  53858. messageSends: ["select:", "keys", "methodDictionary", "match:"]
  53859. }),
  53860. $globals.TestCase.klass);
  53861. $core.addClass('TestContext', $globals.Object, ['testCase'], 'SUnit');
  53862. //>>excludeStart("ide", pragmas.excludeIdeData);
  53863. $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).";
  53864. //>>excludeEnd("ide");
  53865. $core.addMethod(
  53866. $core.method({
  53867. selector: "execute:",
  53868. protocol: 'running',
  53869. fn: function (aBlock){
  53870. var self=this;
  53871. var failed;
  53872. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53873. return $core.withContext(function($ctx1) {
  53874. //>>excludeEnd("ctx");
  53875. var $1,$2;
  53876. $recv(self["@testCase"])._context_(self);
  53877. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53878. $ctx1.sendIdx["context:"]=1;
  53879. //>>excludeEnd("ctx");
  53880. $recv((function(){
  53881. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53882. return $core.withContext(function($ctx2) {
  53883. //>>excludeEnd("ctx");
  53884. failed=true;
  53885. failed;
  53886. $recv(aBlock)._value();
  53887. failed=false;
  53888. return failed;
  53889. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53890. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  53891. //>>excludeEnd("ctx");
  53892. }))._ensure_((function(){
  53893. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53894. return $core.withContext(function($ctx2) {
  53895. //>>excludeEnd("ctx");
  53896. $recv(self["@testCase"])._context_(nil);
  53897. $1=$recv(failed)._and_((function(){
  53898. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53899. return $core.withContext(function($ctx3) {
  53900. //>>excludeEnd("ctx");
  53901. return $recv(self["@testCase"])._isAsync();
  53902. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53903. $ctx3.sendIdx["isAsync"]=1;
  53904. //>>excludeEnd("ctx");
  53905. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53906. }, function($ctx3) {$ctx3.fillBlock({},$ctx2,3)});
  53907. //>>excludeEnd("ctx");
  53908. }));
  53909. if($core.assert($1)){
  53910. $recv(self["@testCase"])._finished();
  53911. };
  53912. $2=$recv(self["@testCase"])._isAsync();
  53913. if(!$core.assert($2)){
  53914. return $recv(self["@testCase"])._tearDown();
  53915. };
  53916. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53917. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
  53918. //>>excludeEnd("ctx");
  53919. }));
  53920. return self;
  53921. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53922. }, function($ctx1) {$ctx1.fill(self,"execute:",{aBlock:aBlock,failed:failed},$globals.TestContext)});
  53923. //>>excludeEnd("ctx");
  53924. },
  53925. //>>excludeStart("ide", pragmas.excludeIdeData);
  53926. args: ["aBlock"],
  53927. source: "execute: aBlock\x0a\x09| failed |\x0a\x09\x0a\x09testCase context: self.\x0a\x09[\x0a\x09\x09failed := true.\x0a\x09\x09aBlock value.\x0a\x09\x09failed := false\x0a\x09]\x0a\x09\x09ensure: [\x0a\x09\x09\x09testCase context: nil.\x0a\x09\x09\x09\x0a\x09\x09\x09(failed and: [ testCase isAsync ]) ifTrue: [\x0a\x09\x09\x09\x09testCase finished ].\x0a\x09\x09\x09testCase isAsync ifFalse: [\x0a\x09\x09\x09\x09testCase tearDown ] ]",
  53928. referencedClasses: [],
  53929. //>>excludeEnd("ide");
  53930. messageSends: ["context:", "ensure:", "value", "ifTrue:", "and:", "isAsync", "finished", "ifFalse:", "tearDown"]
  53931. }),
  53932. $globals.TestContext);
  53933. $core.addMethod(
  53934. $core.method({
  53935. selector: "start",
  53936. protocol: 'running',
  53937. fn: function (){
  53938. var self=this;
  53939. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53940. return $core.withContext(function($ctx1) {
  53941. //>>excludeEnd("ctx");
  53942. self._execute_((function(){
  53943. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53944. return $core.withContext(function($ctx2) {
  53945. //>>excludeEnd("ctx");
  53946. $recv(self["@testCase"])._setUp();
  53947. return $recv(self["@testCase"])._performTest();
  53948. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53949. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  53950. //>>excludeEnd("ctx");
  53951. }));
  53952. return self;
  53953. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53954. }, function($ctx1) {$ctx1.fill(self,"start",{},$globals.TestContext)});
  53955. //>>excludeEnd("ctx");
  53956. },
  53957. //>>excludeStart("ide", pragmas.excludeIdeData);
  53958. args: [],
  53959. source: "start\x0a\x09self execute: [\x0a\x09\x09testCase setUp.\x0a\x09\x09testCase performTest ]",
  53960. referencedClasses: [],
  53961. //>>excludeEnd("ide");
  53962. messageSends: ["execute:", "setUp", "performTest"]
  53963. }),
  53964. $globals.TestContext);
  53965. $core.addMethod(
  53966. $core.method({
  53967. selector: "testCase:",
  53968. protocol: 'accessing',
  53969. fn: function (aTestCase){
  53970. var self=this;
  53971. self["@testCase"]=aTestCase;
  53972. return self;
  53973. },
  53974. //>>excludeStart("ide", pragmas.excludeIdeData);
  53975. args: ["aTestCase"],
  53976. source: "testCase: aTestCase\x0a\x09testCase := aTestCase",
  53977. referencedClasses: [],
  53978. //>>excludeEnd("ide");
  53979. messageSends: []
  53980. }),
  53981. $globals.TestContext);
  53982. $core.addMethod(
  53983. $core.method({
  53984. selector: "testCase:",
  53985. protocol: 'instance creation',
  53986. fn: function (aTestCase){
  53987. var self=this;
  53988. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53989. return $core.withContext(function($ctx1) {
  53990. //>>excludeEnd("ctx");
  53991. var $2,$3,$1;
  53992. $2=self._new();
  53993. $recv($2)._testCase_(aTestCase);
  53994. $3=$recv($2)._yourself();
  53995. $1=$3;
  53996. return $1;
  53997. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53998. }, function($ctx1) {$ctx1.fill(self,"testCase:",{aTestCase:aTestCase},$globals.TestContext.klass)});
  53999. //>>excludeEnd("ctx");
  54000. },
  54001. //>>excludeStart("ide", pragmas.excludeIdeData);
  54002. args: ["aTestCase"],
  54003. source: "testCase: aTestCase\x0a\x09^ self new\x0a\x09\x09testCase: aTestCase;\x0a\x09\x09yourself",
  54004. referencedClasses: [],
  54005. //>>excludeEnd("ide");
  54006. messageSends: ["testCase:", "new", "yourself"]
  54007. }),
  54008. $globals.TestContext.klass);
  54009. $core.addClass('ReportingTestContext', $globals.TestContext, ['finished', 'result'], 'SUnit');
  54010. //>>excludeStart("ide", pragmas.excludeIdeData);
  54011. $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`.";
  54012. //>>excludeEnd("ide");
  54013. $core.addMethod(
  54014. $core.method({
  54015. selector: "execute:",
  54016. protocol: 'running',
  54017. fn: function (aBlock){
  54018. var self=this;
  54019. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  54020. return $core.withContext(function($ctx1) {
  54021. //>>excludeEnd("ctx");
  54022. var $1;
  54023. $recv((function(){
  54024. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  54025. return $core.withContext(function($ctx2) {
  54026. //>>excludeEnd("ctx");
  54027. return self._withErrorReporting_((function(){
  54028. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  54029. return $core.withContext(function($ctx3) {
  54030. //>>excludeEnd("ctx");
  54031. return (
  54032. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  54033. $ctx3.supercall = true,
  54034. //>>excludeEnd("ctx");
  54035. $globals.ReportingTestContext.superclass.fn.prototype._execute_.apply($recv(self), [aBlock]));
  54036. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  54037. $ctx3.supercall = false;
  54038. //>>excludeEnd("ctx");;
  54039. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  54040. }, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)});
  54041. //>>excludeEnd("ctx");
  54042. }));
  54043. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  54044. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  54045. //>>excludeEnd("ctx");
  54046. }))._ensure_((function(){
  54047. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  54048. return $core.withContext(function($ctx2) {
  54049. //>>excludeEnd("ctx");
  54050. $1=$recv(self["@testCase"])._isAsync();
  54051. if(!$core.assert($1)){
  54052. $recv(self["@result"])._increaseRuns();
  54053. return $recv(self["@finished"])._value();
  54054. };
  54055. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  54056. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,3)});
  54057. //>>excludeEnd("ctx");
  54058. }));
  54059. return self;
  54060. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  54061. }, function($ctx1) {$ctx1.fill(self,"execute:",{aBlock:aBlock},$globals.ReportingTestContext)});
  54062. //>>excludeEnd("ctx");
  54063. },
  54064. //>>excludeStart("ide", pragmas.excludeIdeData);
  54065. args: ["aBlock"],
  54066. 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 ] ]",
  54067. referencedClasses: [],
  54068. //>>excludeEnd("ide");
  54069. messageSends: ["ensure:", "withErrorReporting:", "execute:", "ifFalse:", "isAsync", "increaseRuns", "value"]
  54070. }),
  54071. $globals.ReportingTestContext);
  54072. $core.addMethod(
  54073. $core.method({
  54074. selector: "finished:",
  54075. protocol: 'accessing',
  54076. fn: function (aBlock){
  54077. var self=this;
  54078. self["@finished"]=aBlock;
  54079. return self;
  54080. },
  54081. //>>excludeStart("ide", pragmas.excludeIdeData);
  54082. args: ["aBlock"],
  54083. source: "finished: aBlock\x0a\x09finished := aBlock",
  54084. referencedClasses: [],
  54085. //>>excludeEnd("ide");
  54086. messageSends: []
  54087. }),
  54088. $globals.ReportingTestContext);
  54089. $core.addMethod(
  54090. $core.method({
  54091. selector: "result:",
  54092. protocol: 'accessing',
  54093. fn: function (aTestResult){
  54094. var self=this;
  54095. self["@result"]=aTestResult;
  54096. return self;
  54097. },
  54098. //>>excludeStart("ide", pragmas.excludeIdeData);
  54099. args: ["aTestResult"],
  54100. source: "result: aTestResult\x0a\x09result := aTestResult",
  54101. referencedClasses: [],
  54102. //>>excludeEnd("ide");
  54103. messageSends: []
  54104. }),
  54105. $globals.ReportingTestContext);
  54106. $core.addMethod(
  54107. $core.method({
  54108. selector: "withErrorReporting:",
  54109. protocol: 'private',
  54110. fn: function (aBlock){
  54111. var self=this;
  54112. function $TestFailure(){return $globals.TestFailure||(typeof TestFailure=="undefined"?nil:TestFailure)}
  54113. function $Error(){return $globals.Error||(typeof Error=="undefined"?nil:Error)}
  54114. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  54115. return $core.withContext(function($ctx1) {
  54116. //>>excludeEnd("ctx");
  54117. $recv((function(){
  54118. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  54119. return $core.withContext(function($ctx2) {
  54120. //>>excludeEnd("ctx");
  54121. return $recv(aBlock)._on_do_($TestFailure(),(function(ex){
  54122. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  54123. return $core.withContext(function($ctx3) {
  54124. //>>excludeEnd("ctx");
  54125. return $recv(self["@result"])._addFailure_(self["@testCase"]);
  54126. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  54127. }, function($ctx3) {$ctx3.fillBlock({ex:ex},$ctx2,2)});
  54128. //>>excludeEnd("ctx");
  54129. }));
  54130. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  54131. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  54132. //>>excludeEnd("ctx");
  54133. }))._on_do_($Error(),(function(ex){
  54134. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  54135. return $core.withContext(function($ctx2) {
  54136. //>>excludeEnd("ctx");
  54137. return $recv(self["@result"])._addError_(self["@testCase"]);
  54138. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  54139. }, function($ctx2) {$ctx2.fillBlock({ex:ex},$ctx1,3)});
  54140. //>>excludeEnd("ctx");
  54141. }));
  54142. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  54143. $ctx1.sendIdx["on:do:"]=1;
  54144. //>>excludeEnd("ctx");
  54145. return self;
  54146. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  54147. }, function($ctx1) {$ctx1.fill(self,"withErrorReporting:",{aBlock:aBlock},$globals.ReportingTestContext)});
  54148. //>>excludeEnd("ctx");
  54149. },
  54150. //>>excludeStart("ide", pragmas.excludeIdeData);
  54151. args: ["aBlock"],
  54152. 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 ]",
  54153. referencedClasses: ["TestFailure", "Error"],
  54154. //>>excludeEnd("ide");
  54155. messageSends: ["on:do:", "addFailure:", "addError:"]
  54156. }),
  54157. $globals.ReportingTestContext);
  54158. $core.addMethod(
  54159. $core.method({
  54160. selector: "testCase:result:finished:",
  54161. protocol: 'instance creation',
  54162. fn: function (aTestCase,aTestResult,aBlock){
  54163. var self=this;
  54164. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  54165. return $core.withContext(function($ctx1) {
  54166. //>>excludeEnd("ctx");
  54167. var $2,$3,$1;
  54168. $2=(
  54169. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  54170. $ctx1.supercall = true,
  54171. //>>excludeEnd("ctx");
  54172. $globals.ReportingTestContext.klass.superclass.fn.prototype._testCase_.apply($recv(self), [aTestCase]));
  54173. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  54174. $ctx1.supercall = false;
  54175. //>>excludeEnd("ctx");;
  54176. $recv($2)._result_(aTestResult);
  54177. $recv($2)._finished_(aBlock);
  54178. $3=$recv($2)._yourself();
  54179. $1=$3;
  54180. return $1;
  54181. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  54182. }, function($ctx1) {$ctx1.fill(self,"testCase:result:finished:",{aTestCase:aTestCase,aTestResult:aTestResult,aBlock:aBlock},$globals.ReportingTestContext.klass)});
  54183. //>>excludeEnd("ctx");
  54184. },
  54185. //>>excludeStart("ide", pragmas.excludeIdeData);
  54186. args: ["aTestCase", "aTestResult", "aBlock"],
  54187. source: "testCase: aTestCase result: aTestResult finished: aBlock\x0a\x09^ (super testCase: aTestCase)\x0a\x09\x09result: aTestResult;\x0a\x09\x09finished: aBlock;\x0a\x09\x09yourself",
  54188. referencedClasses: [],
  54189. //>>excludeEnd("ide");
  54190. messageSends: ["result:", "testCase:", "finished:", "yourself"]
  54191. }),
  54192. $globals.ReportingTestContext.klass);
  54193. $core.addClass('TestFailure', $globals.Error, [], 'SUnit');
  54194. //>>excludeStart("ide", pragmas.excludeIdeData);
  54195. $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.";
  54196. //>>excludeEnd("ide");
  54197. $core.addClass('TestResult', $globals.Object, ['timestamp', 'runs', 'errors', 'failures', 'total'], 'SUnit');
  54198. //>>excludeStart("ide", pragmas.excludeIdeData);
  54199. $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";
  54200. //>>excludeEnd("ide");
  54201. $core.addMethod(
  54202. $core.method({
  54203. selector: "addError:",
  54204. protocol: 'accessing',
  54205. fn: function (anError){
  54206. var self=this;
  54207. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  54208. return $core.withContext(function($ctx1) {
  54209. //>>excludeEnd("ctx");
  54210. $recv(self._errors())._add_(anError);
  54211. return self;
  54212. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  54213. }, function($ctx1) {$ctx1.fill(self,"addError:",{anError:anError},$globals.TestResult)});
  54214. //>>excludeEnd("ctx");
  54215. },
  54216. //>>excludeStart("ide", pragmas.excludeIdeData);
  54217. args: ["anError"],
  54218. source: "addError: anError\x0a\x09self errors add: anError",
  54219. referencedClasses: [],
  54220. //>>excludeEnd("ide");
  54221. messageSends: ["add:", "errors"]
  54222. }),
  54223. $globals.TestResult);
  54224. $core.addMethod(
  54225. $core.method({
  54226. selector: "addFailure:",
  54227. protocol: 'accessing',
  54228. fn: function (aFailure){
  54229. var self=this;
  54230. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  54231. return $core.withContext(function($ctx1) {
  54232. //>>excludeEnd("ctx");
  54233. $recv(self._failures())._add_(aFailure);
  54234. return self;
  54235. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  54236. }, function($ctx1) {$ctx1.fill(self,"addFailure:",{aFailure:aFailure},$globals.TestResult)});
  54237. //>>excludeEnd("ctx");
  54238. },
  54239. //>>excludeStart("ide", pragmas.excludeIdeData);
  54240. args: ["aFailure"],
  54241. source: "addFailure: aFailure\x0a\x09self failures add: aFailure",
  54242. referencedClasses: [],
  54243. //>>excludeEnd("ide");
  54244. messageSends: ["add:", "failures"]
  54245. }),
  54246. $globals.TestResult);
  54247. $core.addMethod(
  54248. $core.method({
  54249. selector: "errors",
  54250. protocol: 'accessing',
  54251. fn: function (){
  54252. var self=this;
  54253. var $1;
  54254. $1=self["@errors"];
  54255. return $1;
  54256. },
  54257. //>>excludeStart("ide", pragmas.excludeIdeData);
  54258. args: [],
  54259. source: "errors\x0a\x09^ errors",
  54260. referencedClasses: [],
  54261. //>>excludeEnd("ide");
  54262. messageSends: []
  54263. }),
  54264. $globals.TestResult);
  54265. $core.addMethod(
  54266. $core.method({
  54267. selector: "failures",
  54268. protocol: 'accessing',
  54269. fn: function (){
  54270. var self=this;
  54271. var $1;
  54272. $1=self["@failures"];
  54273. return $1;
  54274. },
  54275. //>>excludeStart("ide", pragmas.excludeIdeData);
  54276. args: [],
  54277. source: "failures\x0a\x09^ failures",
  54278. referencedClasses: [],
  54279. //>>excludeEnd("ide");
  54280. messageSends: []
  54281. }),
  54282. $globals.TestResult);
  54283. $core.addMethod(
  54284. $core.method({
  54285. selector: "increaseRuns",
  54286. protocol: 'accessing',
  54287. fn: function (){
  54288. var self=this;
  54289. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  54290. return $core.withContext(function($ctx1) {
  54291. //>>excludeEnd("ctx");
  54292. self["@runs"]=$recv(self["@runs"]).__plus((1));
  54293. return self;
  54294. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  54295. }, function($ctx1) {$ctx1.fill(self,"increaseRuns",{},$globals.TestResult)});
  54296. //>>excludeEnd("ctx");
  54297. },
  54298. //>>excludeStart("ide", pragmas.excludeIdeData);
  54299. args: [],
  54300. source: "increaseRuns\x0a\x09runs := runs + 1",
  54301. referencedClasses: [],
  54302. //>>excludeEnd("ide");
  54303. messageSends: ["+"]
  54304. }),
  54305. $globals.TestResult);
  54306. $core.addMethod(
  54307. $core.method({
  54308. selector: "initialize",
  54309. protocol: 'initialization',
  54310. fn: function (){
  54311. var self=this;
  54312. function $Date(){return $globals.Date||(typeof Date=="undefined"?nil:Date)}
  54313. function $Array(){return $globals.Array||(typeof Array=="undefined"?nil:Array)}
  54314. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  54315. return $core.withContext(function($ctx1) {
  54316. //>>excludeEnd("ctx");
  54317. (
  54318. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  54319. $ctx1.supercall = true,
  54320. //>>excludeEnd("ctx");
  54321. $globals.TestResult.superclass.fn.prototype._initialize.apply($recv(self), []));
  54322. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  54323. $ctx1.supercall = false;
  54324. //>>excludeEnd("ctx");;
  54325. self["@timestamp"]=$recv($Date())._now();
  54326. self["@runs"]=(0);
  54327. self["@errors"]=$recv($Array())._new();
  54328. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  54329. $ctx1.sendIdx["new"]=1;
  54330. //>>excludeEnd("ctx");
  54331. self["@failures"]=$recv($Array())._new();
  54332. self["@total"]=(0);
  54333. return self;
  54334. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  54335. }, function($ctx1) {$ctx1.fill(self,"initialize",{},$globals.TestResult)});
  54336. //>>excludeEnd("ctx");
  54337. },
  54338. //>>excludeStart("ide", pragmas.excludeIdeData);
  54339. args: [],
  54340. source: "initialize\x0a\x09super initialize.\x0a\x09timestamp := Date now.\x0a\x09runs := 0.\x0a\x09errors := Array new.\x0a\x09failures := Array new.\x0a\x09total := 0",
  54341. referencedClasses: ["Date", "Array"],
  54342. //>>excludeEnd("ide");
  54343. messageSends: ["initialize", "now", "new"]
  54344. }),
  54345. $globals.TestResult);
  54346. $core.addMethod(
  54347. $core.method({
  54348. selector: "nextRunDo:",
  54349. protocol: 'running',
  54350. fn: function (aBlock){
  54351. var self=this;
  54352. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  54353. return $core.withContext(function($ctx1) {
  54354. //>>excludeEnd("ctx");
  54355. var $3,$2,$1;
  54356. $3=self._runs();
  54357. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  54358. $ctx1.sendIdx["runs"]=1;
  54359. //>>excludeEnd("ctx");
  54360. $2=$recv($3).__eq_eq(self._total());
  54361. if(!$core.assert($2)){
  54362. $1=$recv(aBlock)._value_($recv(self._runs()).__plus((1)));
  54363. };
  54364. return $1;
  54365. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  54366. }, function($ctx1) {$ctx1.fill(self,"nextRunDo:",{aBlock:aBlock},$globals.TestResult)});
  54367. //>>excludeEnd("ctx");
  54368. },
  54369. //>>excludeStart("ide", pragmas.excludeIdeData);
  54370. args: ["aBlock"],
  54371. 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 ]",
  54372. referencedClasses: [],
  54373. //>>excludeEnd("ide");
  54374. messageSends: ["ifFalse:", "==", "runs", "total", "value:", "+"]
  54375. }),
  54376. $globals.TestResult);
  54377. $core.addMethod(
  54378. $core.method({
  54379. selector: "runCase:",
  54380. protocol: 'running',
  54381. fn: function (aTestCase){
  54382. var self=this;
  54383. function $TestFailure(){return $globals.TestFailure||(typeof TestFailure=="undefined"?nil:TestFailure)}
  54384. function $Error(){return $globals.Error||(typeof Error=="undefined"?nil:Error)}
  54385. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  54386. return $core.withContext(function($ctx1) {
  54387. //>>excludeEnd("ctx");
  54388. $recv((function(){
  54389. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  54390. return $core.withContext(function($ctx2) {
  54391. //>>excludeEnd("ctx");
  54392. return $recv((function(){
  54393. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  54394. return $core.withContext(function($ctx3) {
  54395. //>>excludeEnd("ctx");
  54396. self._increaseRuns();
  54397. return $recv(aTestCase)._runCase();
  54398. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  54399. }, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)});
  54400. //>>excludeEnd("ctx");
  54401. }))._on_do_($TestFailure(),(function(ex){
  54402. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  54403. return $core.withContext(function($ctx3) {
  54404. //>>excludeEnd("ctx");
  54405. return self._addFailure_(aTestCase);
  54406. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  54407. }, function($ctx3) {$ctx3.fillBlock({ex:ex},$ctx2,3)});
  54408. //>>excludeEnd("ctx");
  54409. }));
  54410. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  54411. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  54412. //>>excludeEnd("ctx");
  54413. }))._on_do_($Error(),(function(ex){
  54414. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  54415. return $core.withContext(function($ctx2) {
  54416. //>>excludeEnd("ctx");
  54417. return self._addError_(aTestCase);
  54418. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  54419. }, function($ctx2) {$ctx2.fillBlock({ex:ex},$ctx1,4)});
  54420. //>>excludeEnd("ctx");
  54421. }));
  54422. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  54423. $ctx1.sendIdx["on:do:"]=1;
  54424. //>>excludeEnd("ctx");
  54425. return self;
  54426. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  54427. }, function($ctx1) {$ctx1.fill(self,"runCase:",{aTestCase:aTestCase},$globals.TestResult)});
  54428. //>>excludeEnd("ctx");
  54429. },
  54430. //>>excludeStart("ide", pragmas.excludeIdeData);
  54431. args: ["aTestCase"],
  54432. 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 ]",
  54433. referencedClasses: ["TestFailure", "Error"],
  54434. //>>excludeEnd("ide");
  54435. messageSends: ["on:do:", "increaseRuns", "runCase", "addFailure:", "addError:"]
  54436. }),
  54437. $globals.TestResult);
  54438. $core.addMethod(
  54439. $core.method({
  54440. selector: "runs",
  54441. protocol: 'accessing',
  54442. fn: function (){
  54443. var self=this;
  54444. var $1;
  54445. $1=self["@runs"];
  54446. return $1;
  54447. },
  54448. //>>excludeStart("ide", pragmas.excludeIdeData);
  54449. args: [],
  54450. source: "runs\x0a\x09^ runs",
  54451. referencedClasses: [],
  54452. //>>excludeEnd("ide");
  54453. messageSends: []
  54454. }),
  54455. $globals.TestResult);
  54456. $core.addMethod(
  54457. $core.method({
  54458. selector: "status",
  54459. protocol: 'accessing',
  54460. fn: function (){
  54461. var self=this;
  54462. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  54463. return $core.withContext(function($ctx1) {
  54464. //>>excludeEnd("ctx");
  54465. var $2,$3,$1;
  54466. $2=$recv(self._errors())._isEmpty();
  54467. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  54468. $ctx1.sendIdx["isEmpty"]=1;
  54469. //>>excludeEnd("ctx");
  54470. if($core.assert($2)){
  54471. $3=$recv(self._failures())._isEmpty();
  54472. if($core.assert($3)){
  54473. $1="success";
  54474. } else {
  54475. $1="failure";
  54476. };
  54477. } else {
  54478. $1="error";
  54479. };
  54480. return $1;
  54481. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  54482. }, function($ctx1) {$ctx1.fill(self,"status",{},$globals.TestResult)});
  54483. //>>excludeEnd("ctx");
  54484. },
  54485. //>>excludeStart("ide", pragmas.excludeIdeData);
  54486. args: [],
  54487. source: "status\x0a\x09^ self errors isEmpty\x0a\x09\x09ifTrue: [\x0a\x09\x09\x09self failures isEmpty\x0a\x09\x09\x09\x09ifTrue: [ 'success' ]\x0a\x09\x09\x09\x09ifFalse: [ 'failure' ]]\x0a\x09\x09ifFalse: [ 'error' ]",
  54488. referencedClasses: [],
  54489. //>>excludeEnd("ide");
  54490. messageSends: ["ifTrue:ifFalse:", "isEmpty", "errors", "failures"]
  54491. }),
  54492. $globals.TestResult);
  54493. $core.addMethod(
  54494. $core.method({
  54495. selector: "timestamp",
  54496. protocol: 'accessing',
  54497. fn: function (){
  54498. var self=this;
  54499. var $1;
  54500. $1=self["@timestamp"];
  54501. return $1;
  54502. },
  54503. //>>excludeStart("ide", pragmas.excludeIdeData);
  54504. args: [],
  54505. source: "timestamp\x0a\x09^ timestamp",
  54506. referencedClasses: [],
  54507. //>>excludeEnd("ide");
  54508. messageSends: []
  54509. }),
  54510. $globals.TestResult);
  54511. $core.addMethod(
  54512. $core.method({
  54513. selector: "total",
  54514. protocol: 'accessing',
  54515. fn: function (){
  54516. var self=this;
  54517. var $1;
  54518. $1=self["@total"];
  54519. return $1;
  54520. },
  54521. //>>excludeStart("ide", pragmas.excludeIdeData);
  54522. args: [],
  54523. source: "total\x0a\x09^ total",
  54524. referencedClasses: [],
  54525. //>>excludeEnd("ide");
  54526. messageSends: []
  54527. }),
  54528. $globals.TestResult);
  54529. $core.addMethod(
  54530. $core.method({
  54531. selector: "total:",
  54532. protocol: 'accessing',
  54533. fn: function (aNumber){
  54534. var self=this;
  54535. self["@total"]=aNumber;
  54536. return self;
  54537. },
  54538. //>>excludeStart("ide", pragmas.excludeIdeData);
  54539. args: ["aNumber"],
  54540. source: "total: aNumber\x0a\x09total := aNumber",
  54541. referencedClasses: [],
  54542. //>>excludeEnd("ide");
  54543. messageSends: []
  54544. }),
  54545. $globals.TestResult);
  54546. $core.addClass('TestSuiteRunner', $globals.Object, ['suite', 'result', 'announcer', 'runNextTest'], 'SUnit');
  54547. //>>excludeStart("ide", pragmas.excludeIdeData);
  54548. $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`.";
  54549. //>>excludeEnd("ide");
  54550. $core.addMethod(
  54551. $core.method({
  54552. selector: "announcer",
  54553. protocol: 'accessing',
  54554. fn: function (){
  54555. var self=this;
  54556. var $1;
  54557. $1=self["@announcer"];
  54558. return $1;
  54559. },
  54560. //>>excludeStart("ide", pragmas.excludeIdeData);
  54561. args: [],
  54562. source: "announcer\x0a\x09^ announcer",
  54563. referencedClasses: [],
  54564. //>>excludeEnd("ide");
  54565. messageSends: []
  54566. }),
  54567. $globals.TestSuiteRunner);
  54568. $core.addMethod(
  54569. $core.method({
  54570. selector: "contextOf:",
  54571. protocol: 'private',
  54572. fn: function (anInteger){
  54573. var self=this;
  54574. function $ReportingTestContext(){return $globals.ReportingTestContext||(typeof ReportingTestContext=="undefined"?nil:ReportingTestContext)}
  54575. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  54576. return $core.withContext(function($ctx1) {
  54577. //>>excludeEnd("ctx");
  54578. var $1;
  54579. $1=$recv($ReportingTestContext())._testCase_result_finished_($recv(self["@suite"])._at_(anInteger),self["@result"],(function(){
  54580. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  54581. return $core.withContext(function($ctx2) {
  54582. //>>excludeEnd("ctx");
  54583. return self._resume();
  54584. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  54585. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  54586. //>>excludeEnd("ctx");
  54587. }));
  54588. return $1;
  54589. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  54590. }, function($ctx1) {$ctx1.fill(self,"contextOf:",{anInteger:anInteger},$globals.TestSuiteRunner)});
  54591. //>>excludeEnd("ctx");
  54592. },
  54593. //>>excludeStart("ide", pragmas.excludeIdeData);
  54594. args: ["anInteger"],
  54595. source: "contextOf: anInteger\x0a\x09^ ReportingTestContext testCase: (suite at: anInteger) result: result finished: [ self resume ]",
  54596. referencedClasses: ["ReportingTestContext"],
  54597. //>>excludeEnd("ide");
  54598. messageSends: ["testCase:result:finished:", "at:", "resume"]
  54599. }),
  54600. $globals.TestSuiteRunner);
  54601. $core.addMethod(
  54602. $core.method({
  54603. selector: "initialize",
  54604. protocol: 'initialization',
  54605. fn: function (){
  54606. var self=this;
  54607. function $Announcer(){return $globals.Announcer||(typeof Announcer=="undefined"?nil:Announcer)}
  54608. function $TestResult(){return $globals.TestResult||(typeof TestResult=="undefined"?nil:TestResult)}
  54609. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  54610. return $core.withContext(function($ctx1) {
  54611. //>>excludeEnd("ctx");
  54612. var $1;
  54613. (
  54614. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  54615. $ctx1.supercall = true,
  54616. //>>excludeEnd("ctx");
  54617. $globals.TestSuiteRunner.superclass.fn.prototype._initialize.apply($recv(self), []));
  54618. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  54619. $ctx1.supercall = false;
  54620. //>>excludeEnd("ctx");;
  54621. self["@announcer"]=$recv($Announcer())._new();
  54622. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  54623. $ctx1.sendIdx["new"]=1;
  54624. //>>excludeEnd("ctx");
  54625. self["@result"]=$recv($TestResult())._new();
  54626. self["@runNextTest"]=(function(){
  54627. var runs;
  54628. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  54629. return $core.withContext(function($ctx2) {
  54630. //>>excludeEnd("ctx");
  54631. runs=$recv(self["@result"])._runs();
  54632. runs;
  54633. $1=$recv(runs).__lt($recv(self["@result"])._total());
  54634. if($core.assert($1)){
  54635. return $recv(self._contextOf_($recv(runs).__plus((1))))._start();
  54636. };
  54637. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  54638. }, function($ctx2) {$ctx2.fillBlock({runs:runs},$ctx1,1)});
  54639. //>>excludeEnd("ctx");
  54640. });
  54641. return self;
  54642. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  54643. }, function($ctx1) {$ctx1.fill(self,"initialize",{},$globals.TestSuiteRunner)});
  54644. //>>excludeEnd("ctx");
  54645. },
  54646. //>>excludeStart("ide", pragmas.excludeIdeData);
  54647. args: [],
  54648. 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 ] ].",
  54649. referencedClasses: ["Announcer", "TestResult"],
  54650. //>>excludeEnd("ide");
  54651. messageSends: ["initialize", "new", "runs", "ifTrue:", "<", "total", "start", "contextOf:", "+"]
  54652. }),
  54653. $globals.TestSuiteRunner);
  54654. $core.addMethod(
  54655. $core.method({
  54656. selector: "result",
  54657. protocol: 'accessing',
  54658. fn: function (){
  54659. var self=this;
  54660. var $1;
  54661. $1=self["@result"];
  54662. return $1;
  54663. },
  54664. //>>excludeStart("ide", pragmas.excludeIdeData);
  54665. args: [],
  54666. source: "result\x0a\x09^ result",
  54667. referencedClasses: [],
  54668. //>>excludeEnd("ide");
  54669. messageSends: []
  54670. }),
  54671. $globals.TestSuiteRunner);
  54672. $core.addMethod(
  54673. $core.method({
  54674. selector: "resume",
  54675. protocol: 'actions',
  54676. fn: function (){
  54677. var self=this;
  54678. function $ResultAnnouncement(){return $globals.ResultAnnouncement||(typeof ResultAnnouncement=="undefined"?nil:ResultAnnouncement)}
  54679. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  54680. return $core.withContext(function($ctx1) {
  54681. //>>excludeEnd("ctx");
  54682. $recv(self["@runNextTest"])._fork();
  54683. $recv(self["@announcer"])._announce_($recv($recv($ResultAnnouncement())._new())._result_(self["@result"]));
  54684. return self;
  54685. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  54686. }, function($ctx1) {$ctx1.fill(self,"resume",{},$globals.TestSuiteRunner)});
  54687. //>>excludeEnd("ctx");
  54688. },
  54689. //>>excludeStart("ide", pragmas.excludeIdeData);
  54690. args: [],
  54691. source: "resume\x0a\x09runNextTest fork.\x0a\x09announcer announce: (ResultAnnouncement new result: result)",
  54692. referencedClasses: ["ResultAnnouncement"],
  54693. //>>excludeEnd("ide");
  54694. messageSends: ["fork", "announce:", "result:", "new"]
  54695. }),
  54696. $globals.TestSuiteRunner);
  54697. $core.addMethod(
  54698. $core.method({
  54699. selector: "run",
  54700. protocol: 'actions',
  54701. fn: function (){
  54702. var self=this;
  54703. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  54704. return $core.withContext(function($ctx1) {
  54705. //>>excludeEnd("ctx");
  54706. $recv(self["@result"])._total_($recv(self["@suite"])._size());
  54707. self._resume();
  54708. return self;
  54709. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  54710. }, function($ctx1) {$ctx1.fill(self,"run",{},$globals.TestSuiteRunner)});
  54711. //>>excludeEnd("ctx");
  54712. },
  54713. //>>excludeStart("ide", pragmas.excludeIdeData);
  54714. args: [],
  54715. source: "run\x0a\x09result total: suite size.\x0a\x09self resume",
  54716. referencedClasses: [],
  54717. //>>excludeEnd("ide");
  54718. messageSends: ["total:", "size", "resume"]
  54719. }),
  54720. $globals.TestSuiteRunner);
  54721. $core.addMethod(
  54722. $core.method({
  54723. selector: "suite:",
  54724. protocol: 'accessing',
  54725. fn: function (aCollection){
  54726. var self=this;
  54727. self["@suite"]=aCollection;
  54728. return self;
  54729. },
  54730. //>>excludeStart("ide", pragmas.excludeIdeData);
  54731. args: ["aCollection"],
  54732. source: "suite: aCollection\x0a\x09suite := aCollection",
  54733. referencedClasses: [],
  54734. //>>excludeEnd("ide");
  54735. messageSends: []
  54736. }),
  54737. $globals.TestSuiteRunner);
  54738. $core.addMethod(
  54739. $core.method({
  54740. selector: "new",
  54741. protocol: 'instance creation',
  54742. fn: function (){
  54743. var self=this;
  54744. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  54745. return $core.withContext(function($ctx1) {
  54746. //>>excludeEnd("ctx");
  54747. self._shouldNotImplement();
  54748. return self;
  54749. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  54750. }, function($ctx1) {$ctx1.fill(self,"new",{},$globals.TestSuiteRunner.klass)});
  54751. //>>excludeEnd("ctx");
  54752. },
  54753. //>>excludeStart("ide", pragmas.excludeIdeData);
  54754. args: [],
  54755. source: "new\x0a\x09self shouldNotImplement",
  54756. referencedClasses: [],
  54757. //>>excludeEnd("ide");
  54758. messageSends: ["shouldNotImplement"]
  54759. }),
  54760. $globals.TestSuiteRunner.klass);
  54761. $core.addMethod(
  54762. $core.method({
  54763. selector: "on:",
  54764. protocol: 'instance creation',
  54765. fn: function (aCollection){
  54766. var self=this;
  54767. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  54768. return $core.withContext(function($ctx1) {
  54769. //>>excludeEnd("ctx");
  54770. var $2,$1;
  54771. $2=(
  54772. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  54773. $ctx1.supercall = true,
  54774. //>>excludeEnd("ctx");
  54775. $globals.TestSuiteRunner.klass.superclass.fn.prototype._new.apply($recv(self), []));
  54776. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  54777. $ctx1.supercall = false;
  54778. //>>excludeEnd("ctx");;
  54779. $1=$recv($2)._suite_(aCollection);
  54780. return $1;
  54781. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  54782. }, function($ctx1) {$ctx1.fill(self,"on:",{aCollection:aCollection},$globals.TestSuiteRunner.klass)});
  54783. //>>excludeEnd("ctx");
  54784. },
  54785. //>>excludeStart("ide", pragmas.excludeIdeData);
  54786. args: ["aCollection"],
  54787. source: "on: aCollection\x0a\x09^ super new suite: aCollection",
  54788. referencedClasses: [],
  54789. //>>excludeEnd("ide");
  54790. messageSends: ["suite:", "new"]
  54791. }),
  54792. $globals.TestSuiteRunner.klass);
  54793. $core.addMethod(
  54794. $core.method({
  54795. selector: "isTestClass",
  54796. protocol: '*SUnit',
  54797. fn: function (){
  54798. var self=this;
  54799. function $TestCase(){return $globals.TestCase||(typeof TestCase=="undefined"?nil:TestCase)}
  54800. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  54801. return $core.withContext(function($ctx1) {
  54802. //>>excludeEnd("ctx");
  54803. var $1;
  54804. $1=$recv(self._includesBehavior_($TestCase()))._and_((function(){
  54805. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  54806. return $core.withContext(function($ctx2) {
  54807. //>>excludeEnd("ctx");
  54808. return $recv(self._isAbstract())._not();
  54809. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  54810. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  54811. //>>excludeEnd("ctx");
  54812. }));
  54813. return $1;
  54814. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  54815. }, function($ctx1) {$ctx1.fill(self,"isTestClass",{},$globals.Behavior)});
  54816. //>>excludeEnd("ctx");
  54817. },
  54818. //>>excludeStart("ide", pragmas.excludeIdeData);
  54819. args: [],
  54820. source: "isTestClass\x0a\x09^(self includesBehavior: TestCase) and: [ \x0a\x09\x09\x09self isAbstract not ]",
  54821. referencedClasses: ["TestCase"],
  54822. //>>excludeEnd("ide");
  54823. messageSends: ["and:", "includesBehavior:", "not", "isAbstract"]
  54824. }),
  54825. $globals.Behavior);
  54826. $core.addMethod(
  54827. $core.method({
  54828. selector: "isTestPackage",
  54829. protocol: '*SUnit',
  54830. fn: function (){
  54831. var self=this;
  54832. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  54833. return $core.withContext(function($ctx1) {
  54834. //>>excludeEnd("ctx");
  54835. var $1;
  54836. $1=$recv(self._classes())._anySatisfy_((function(each){
  54837. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  54838. return $core.withContext(function($ctx2) {
  54839. //>>excludeEnd("ctx");
  54840. return $recv(each)._isTestClass();
  54841. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  54842. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  54843. //>>excludeEnd("ctx");
  54844. }));
  54845. return $1;
  54846. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  54847. }, function($ctx1) {$ctx1.fill(self,"isTestPackage",{},$globals.Package)});
  54848. //>>excludeEnd("ctx");
  54849. },
  54850. //>>excludeStart("ide", pragmas.excludeIdeData);
  54851. args: [],
  54852. source: "isTestPackage\x0a\x09^ self classes anySatisfy: [ :each | each isTestClass ]",
  54853. referencedClasses: [],
  54854. //>>excludeEnd("ide");
  54855. messageSends: ["anySatisfy:", "classes", "isTestClass"]
  54856. }),
  54857. $globals.Package);
  54858. });
  54859. define("amber_core/Kernel-ImportExport", ["amber/boot", "amber_core/Kernel-Objects", "amber_core/Kernel-Infrastructure"], function($boot){
  54860. var $core=$boot.api,nil=$boot.nil,$recv=$boot.asReceiver,$globals=$boot.globals;
  54861. var smalltalk=$core,_st=$recv,globals=$globals;
  54862. $core.addPackage('Kernel-ImportExport');
  54863. $core.packages["Kernel-ImportExport"].transport = {"type":"amd","amdNamespace":"amber_core"};
  54864. $core.addClass('AbstractExporter', $globals.Object, [], 'Kernel-ImportExport');
  54865. //>>excludeStart("ide", pragmas.excludeIdeData);
  54866. $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.";
  54867. //>>excludeEnd("ide");
  54868. $core.addMethod(
  54869. $core.method({
  54870. selector: "chunkEscape:",
  54871. protocol: 'convenience',
  54872. fn: function (aString){
  54873. var self=this;
  54874. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  54875. return $core.withContext(function($ctx1) {
  54876. //>>excludeEnd("ctx");
  54877. var $1;
  54878. $1=$recv($recv(aString)._replace_with_("!","!!"))._trimBoth();
  54879. return $1;
  54880. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  54881. }, function($ctx1) {$ctx1.fill(self,"chunkEscape:",{aString:aString},$globals.AbstractExporter)});
  54882. //>>excludeEnd("ctx");
  54883. },
  54884. //>>excludeStart("ide", pragmas.excludeIdeData);
  54885. args: ["aString"],
  54886. source: "chunkEscape: aString\x0a\x09\x22Replace all occurrences of ! with !! and trim at both ends.\x22\x0a\x0a\x09^ (aString replace: '!' with: '!!') trimBoth",
  54887. referencedClasses: [],
  54888. //>>excludeEnd("ide");
  54889. messageSends: ["trimBoth", "replace:with:"]
  54890. }),
  54891. $globals.AbstractExporter);
  54892. $core.addMethod(
  54893. $core.method({
  54894. selector: "classNameFor:",
  54895. protocol: 'convenience',
  54896. fn: function (aClass){
  54897. var self=this;
  54898. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  54899. return $core.withContext(function($ctx1) {
  54900. //>>excludeEnd("ctx");
  54901. var $2,$3,$4,$1;
  54902. $2=$recv(aClass)._isMetaclass();
  54903. if($core.assert($2)){
  54904. $3=$recv($recv(aClass)._instanceClass())._name();
  54905. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  54906. $ctx1.sendIdx["name"]=1;
  54907. //>>excludeEnd("ctx");
  54908. $1=$recv($3).__comma(" class");
  54909. } else {
  54910. $4=$recv(aClass)._isNil();
  54911. if($core.assert($4)){
  54912. $1="nil";
  54913. } else {
  54914. $1=$recv(aClass)._name();
  54915. };
  54916. };
  54917. return $1;
  54918. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  54919. }, function($ctx1) {$ctx1.fill(self,"classNameFor:",{aClass:aClass},$globals.AbstractExporter)});
  54920. //>>excludeEnd("ctx");
  54921. },
  54922. //>>excludeStart("ide", pragmas.excludeIdeData);
  54923. args: ["aClass"],
  54924. source: "classNameFor: aClass\x0a\x09^ aClass isMetaclass\x0a\x09\x09ifTrue: [ aClass instanceClass name, ' class' ]\x0a\x09\x09ifFalse: [\x0a\x09\x09\x09aClass isNil\x0a\x09\x09\x09\x09ifTrue: [ 'nil' ]\x0a\x09\x09\x09\x09ifFalse: [ aClass name ] ]",
  54925. referencedClasses: [],
  54926. //>>excludeEnd("ide");
  54927. messageSends: ["ifTrue:ifFalse:", "isMetaclass", ",", "name", "instanceClass", "isNil"]
  54928. }),
  54929. $globals.AbstractExporter);
  54930. $core.addMethod(
  54931. $core.method({
  54932. selector: "exportPackage:on:",
  54933. protocol: 'output',
  54934. fn: function (aPackage,aStream){
  54935. var self=this;
  54936. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  54937. return $core.withContext(function($ctx1) {
  54938. //>>excludeEnd("ctx");
  54939. self._subclassResponsibility();
  54940. return self;
  54941. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  54942. }, function($ctx1) {$ctx1.fill(self,"exportPackage:on:",{aPackage:aPackage,aStream:aStream},$globals.AbstractExporter)});
  54943. //>>excludeEnd("ctx");
  54944. },
  54945. //>>excludeStart("ide", pragmas.excludeIdeData);
  54946. args: ["aPackage", "aStream"],
  54947. source: "exportPackage: aPackage on: aStream\x0a\x09self subclassResponsibility",
  54948. referencedClasses: [],
  54949. //>>excludeEnd("ide");
  54950. messageSends: ["subclassResponsibility"]
  54951. }),
  54952. $globals.AbstractExporter);
  54953. $core.addMethod(
  54954. $core.method({
  54955. selector: "extensionMethodsOfPackage:",
  54956. protocol: 'accessing',
  54957. fn: function (aPackage){
  54958. var self=this;
  54959. var result;
  54960. function $OrderedCollection(){return $globals.OrderedCollection||(typeof OrderedCollection=="undefined"?nil:OrderedCollection)}
  54961. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  54962. return $core.withContext(function($ctx1) {
  54963. //>>excludeEnd("ctx");
  54964. var $1;
  54965. result=$recv($OrderedCollection())._new();
  54966. $recv(self._extensionProtocolsOfPackage_(aPackage))._do_((function(each){
  54967. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  54968. return $core.withContext(function($ctx2) {
  54969. //>>excludeEnd("ctx");
  54970. return $recv(result)._addAll_($recv(each)._methods());
  54971. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  54972. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  54973. //>>excludeEnd("ctx");
  54974. }));
  54975. $1=result;
  54976. return $1;
  54977. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  54978. }, function($ctx1) {$ctx1.fill(self,"extensionMethodsOfPackage:",{aPackage:aPackage,result:result},$globals.AbstractExporter)});
  54979. //>>excludeEnd("ctx");
  54980. },
  54981. //>>excludeStart("ide", pragmas.excludeIdeData);
  54982. args: ["aPackage"],
  54983. 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 methods ].\x0a\x09\x09\x0a\x09^ result",
  54984. referencedClasses: ["OrderedCollection"],
  54985. //>>excludeEnd("ide");
  54986. messageSends: ["new", "do:", "extensionProtocolsOfPackage:", "addAll:", "methods"]
  54987. }),
  54988. $globals.AbstractExporter);
  54989. $core.addMethod(
  54990. $core.method({
  54991. selector: "extensionProtocolsOfPackage:",
  54992. protocol: 'accessing',
  54993. fn: function (aPackage){
  54994. var self=this;
  54995. var extensionName,result;
  54996. function $OrderedCollection(){return $globals.OrderedCollection||(typeof OrderedCollection=="undefined"?nil:OrderedCollection)}
  54997. function $Smalltalk(){return $globals.Smalltalk||(typeof Smalltalk=="undefined"?nil:Smalltalk)}
  54998. function $ExportMethodProtocol(){return $globals.ExportMethodProtocol||(typeof ExportMethodProtocol=="undefined"?nil:ExportMethodProtocol)}
  54999. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55000. return $core.withContext(function($ctx1) {
  55001. //>>excludeEnd("ctx");
  55002. var $1,$2,$3,$4;
  55003. $1=$recv(aPackage)._name();
  55004. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55005. $ctx1.sendIdx["name"]=1;
  55006. //>>excludeEnd("ctx");
  55007. extensionName="*".__comma($1);
  55008. result=$recv($OrderedCollection())._new();
  55009. $recv($recv($recv($recv($Smalltalk())._classes())._asArray())._sorted_((function(a,b){
  55010. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55011. return $core.withContext(function($ctx2) {
  55012. //>>excludeEnd("ctx");
  55013. $2=$recv(a)._name();
  55014. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55015. $ctx2.sendIdx["name"]=2;
  55016. //>>excludeEnd("ctx");
  55017. return $recv($2).__lt($recv(b)._name());
  55018. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55019. }, function($ctx2) {$ctx2.fillBlock({a:a,b:b},$ctx1,1)});
  55020. //>>excludeEnd("ctx");
  55021. })))._do_((function(each){
  55022. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55023. return $core.withContext(function($ctx2) {
  55024. //>>excludeEnd("ctx");
  55025. return $recv([each,$recv(each)._class()])._do_((function(behavior){
  55026. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55027. return $core.withContext(function($ctx3) {
  55028. //>>excludeEnd("ctx");
  55029. $3=$recv($recv(behavior)._protocols())._includes_(extensionName);
  55030. if($core.assert($3)){
  55031. return $recv(result)._add_($recv($ExportMethodProtocol())._name_theClass_(extensionName,behavior));
  55032. };
  55033. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55034. }, function($ctx3) {$ctx3.fillBlock({behavior:behavior},$ctx2,3)});
  55035. //>>excludeEnd("ctx");
  55036. }));
  55037. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55038. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,2)});
  55039. //>>excludeEnd("ctx");
  55040. }));
  55041. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55042. $ctx1.sendIdx["do:"]=1;
  55043. //>>excludeEnd("ctx");
  55044. $4=result;
  55045. return $4;
  55046. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55047. }, function($ctx1) {$ctx1.fill(self,"extensionProtocolsOfPackage:",{aPackage:aPackage,extensionName:extensionName,result:result},$globals.AbstractExporter)});
  55048. //>>excludeEnd("ctx");
  55049. },
  55050. //>>excludeStart("ide", pragmas.excludeIdeData);
  55051. args: ["aPackage"],
  55052. 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\x09{each. each class} do: [ :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",
  55053. referencedClasses: ["OrderedCollection", "Smalltalk", "ExportMethodProtocol"],
  55054. //>>excludeEnd("ide");
  55055. messageSends: [",", "name", "new", "do:", "sorted:", "asArray", "classes", "<", "class", "ifTrue:", "includes:", "protocols", "add:", "name:theClass:"]
  55056. }),
  55057. $globals.AbstractExporter);
  55058. $core.addClass('ChunkExporter', $globals.AbstractExporter, [], 'Kernel-ImportExport');
  55059. //>>excludeStart("ide", pragmas.excludeIdeData);
  55060. $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.";
  55061. //>>excludeEnd("ide");
  55062. $core.addMethod(
  55063. $core.method({
  55064. selector: "exportCategoryEpilogueOf:on:",
  55065. protocol: 'output',
  55066. fn: function (aCategory,aStream){
  55067. var self=this;
  55068. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55069. return $core.withContext(function($ctx1) {
  55070. //>>excludeEnd("ctx");
  55071. var $1;
  55072. $recv(aStream)._nextPutAll_(" !");
  55073. $recv(aStream)._lf();
  55074. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55075. $ctx1.sendIdx["lf"]=1;
  55076. //>>excludeEnd("ctx");
  55077. $1=$recv(aStream)._lf();
  55078. return self;
  55079. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55080. }, function($ctx1) {$ctx1.fill(self,"exportCategoryEpilogueOf:on:",{aCategory:aCategory,aStream:aStream},$globals.ChunkExporter)});
  55081. //>>excludeEnd("ctx");
  55082. },
  55083. //>>excludeStart("ide", pragmas.excludeIdeData);
  55084. args: ["aCategory", "aStream"],
  55085. source: "exportCategoryEpilogueOf: aCategory on: aStream\x0a\x09aStream nextPutAll: ' !'; lf; lf",
  55086. referencedClasses: [],
  55087. //>>excludeEnd("ide");
  55088. messageSends: ["nextPutAll:", "lf"]
  55089. }),
  55090. $globals.ChunkExporter);
  55091. $core.addMethod(
  55092. $core.method({
  55093. selector: "exportCategoryPrologueOf:on:",
  55094. protocol: 'output',
  55095. fn: function (aCategory,aStream){
  55096. var self=this;
  55097. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55098. return $core.withContext(function($ctx1) {
  55099. //>>excludeEnd("ctx");
  55100. var $1,$3,$2;
  55101. $1="!".__comma(self._classNameFor_($recv(aCategory)._theClass()));
  55102. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55103. $ctx1.sendIdx[","]=1;
  55104. //>>excludeEnd("ctx");
  55105. $recv(aStream)._nextPutAll_($1);
  55106. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55107. $ctx1.sendIdx["nextPutAll:"]=1;
  55108. //>>excludeEnd("ctx");
  55109. $3=$recv(" methodsFor: '".__comma($recv(aCategory)._name())).__comma("'!");
  55110. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55111. $ctx1.sendIdx[","]=2;
  55112. //>>excludeEnd("ctx");
  55113. $2=$recv(aStream)._nextPutAll_($3);
  55114. return self;
  55115. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55116. }, function($ctx1) {$ctx1.fill(self,"exportCategoryPrologueOf:on:",{aCategory:aCategory,aStream:aStream},$globals.ChunkExporter)});
  55117. //>>excludeEnd("ctx");
  55118. },
  55119. //>>excludeStart("ide", pragmas.excludeIdeData);
  55120. args: ["aCategory", "aStream"],
  55121. source: "exportCategoryPrologueOf: aCategory on: aStream\x0a\x09aStream\x0a\x09\x09nextPutAll: '!', (self classNameFor: aCategory theClass);\x0a\x09\x09nextPutAll: ' methodsFor: ''', aCategory name, '''!'",
  55122. referencedClasses: [],
  55123. //>>excludeEnd("ide");
  55124. messageSends: ["nextPutAll:", ",", "classNameFor:", "theClass", "name"]
  55125. }),
  55126. $globals.ChunkExporter);
  55127. $core.addMethod(
  55128. $core.method({
  55129. selector: "exportDefinitionOf:on:",
  55130. protocol: 'output',
  55131. fn: function (aClass,aStream){
  55132. var self=this;
  55133. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55134. return $core.withContext(function($ctx1) {
  55135. //>>excludeEnd("ctx");
  55136. var $1,$3,$2,$4,$6,$5,$7,$9,$8,$11,$10,$12;
  55137. $1=self._classNameFor_($recv(aClass)._superclass());
  55138. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55139. $ctx1.sendIdx["classNameFor:"]=1;
  55140. //>>excludeEnd("ctx");
  55141. $recv(aStream)._nextPutAll_($1);
  55142. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55143. $ctx1.sendIdx["nextPutAll:"]=1;
  55144. //>>excludeEnd("ctx");
  55145. $3=self._classNameFor_(aClass);
  55146. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55147. $ctx1.sendIdx["classNameFor:"]=2;
  55148. //>>excludeEnd("ctx");
  55149. $2=" subclass: #".__comma($3);
  55150. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55151. $ctx1.sendIdx[","]=1;
  55152. //>>excludeEnd("ctx");
  55153. $recv(aStream)._nextPutAll_($2);
  55154. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55155. $ctx1.sendIdx["nextPutAll:"]=2;
  55156. //>>excludeEnd("ctx");
  55157. $recv(aStream)._lf();
  55158. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55159. $ctx1.sendIdx["lf"]=1;
  55160. //>>excludeEnd("ctx");
  55161. $recv(aStream)._tab();
  55162. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55163. $ctx1.sendIdx["tab"]=1;
  55164. //>>excludeEnd("ctx");
  55165. $4=$recv(aStream)._nextPutAll_("instanceVariableNames: '");
  55166. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55167. $ctx1.sendIdx["nextPutAll:"]=3;
  55168. //>>excludeEnd("ctx");
  55169. $recv($recv(aClass)._instanceVariableNames())._do_separatedBy_((function(each){
  55170. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55171. return $core.withContext(function($ctx2) {
  55172. //>>excludeEnd("ctx");
  55173. return $recv(aStream)._nextPutAll_(each);
  55174. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55175. $ctx2.sendIdx["nextPutAll:"]=4;
  55176. //>>excludeEnd("ctx");
  55177. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55178. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  55179. //>>excludeEnd("ctx");
  55180. }),(function(){
  55181. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55182. return $core.withContext(function($ctx2) {
  55183. //>>excludeEnd("ctx");
  55184. return $recv(aStream)._nextPutAll_(" ");
  55185. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55186. $ctx2.sendIdx["nextPutAll:"]=5;
  55187. //>>excludeEnd("ctx");
  55188. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55189. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
  55190. //>>excludeEnd("ctx");
  55191. }));
  55192. $recv(aStream)._nextPutAll_("'");
  55193. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55194. $ctx1.sendIdx["nextPutAll:"]=6;
  55195. //>>excludeEnd("ctx");
  55196. $recv(aStream)._lf();
  55197. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55198. $ctx1.sendIdx["lf"]=2;
  55199. //>>excludeEnd("ctx");
  55200. $recv(aStream)._tab();
  55201. $6="package: '".__comma($recv(aClass)._category());
  55202. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55203. $ctx1.sendIdx[","]=3;
  55204. //>>excludeEnd("ctx");
  55205. $5=$recv($6).__comma("'!");
  55206. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55207. $ctx1.sendIdx[","]=2;
  55208. //>>excludeEnd("ctx");
  55209. $recv(aStream)._nextPutAll_($5);
  55210. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55211. $ctx1.sendIdx["nextPutAll:"]=7;
  55212. //>>excludeEnd("ctx");
  55213. $7=$recv(aStream)._lf();
  55214. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55215. $ctx1.sendIdx["lf"]=3;
  55216. //>>excludeEnd("ctx");
  55217. $9=$recv(aClass)._comment();
  55218. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55219. $ctx1.sendIdx["comment"]=1;
  55220. //>>excludeEnd("ctx");
  55221. $8=$recv($9)._notEmpty();
  55222. if($core.assert($8)){
  55223. $11="!".__comma(self._classNameFor_(aClass));
  55224. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55225. $ctx1.sendIdx[","]=5;
  55226. //>>excludeEnd("ctx");
  55227. $10=$recv($11).__comma(" commentStamp!");
  55228. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55229. $ctx1.sendIdx[","]=4;
  55230. //>>excludeEnd("ctx");
  55231. $recv(aStream)._nextPutAll_($10);
  55232. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55233. $ctx1.sendIdx["nextPutAll:"]=8;
  55234. //>>excludeEnd("ctx");
  55235. $recv(aStream)._lf();
  55236. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55237. $ctx1.sendIdx["lf"]=4;
  55238. //>>excludeEnd("ctx");
  55239. $recv(aStream)._nextPutAll_($recv(self._chunkEscape_($recv(aClass)._comment())).__comma("!"));
  55240. $12=$recv(aStream)._lf();
  55241. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55242. $ctx1.sendIdx["lf"]=5;
  55243. //>>excludeEnd("ctx");
  55244. $12;
  55245. };
  55246. $recv(aStream)._lf();
  55247. return self;
  55248. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55249. }, function($ctx1) {$ctx1.fill(self,"exportDefinitionOf:on:",{aClass:aClass,aStream:aStream},$globals.ChunkExporter)});
  55250. //>>excludeEnd("ctx");
  55251. },
  55252. //>>excludeStart("ide", pragmas.excludeIdeData);
  55253. args: ["aClass", "aStream"],
  55254. source: "exportDefinitionOf: aClass on: aStream\x0a\x09\x22Chunk format.\x22\x0a\x0a\x09aStream\x0a\x09\x09nextPutAll: (self classNameFor: aClass superclass);\x0a\x09\x09nextPutAll: ' subclass: #', (self classNameFor: aClass); lf;\x0a\x09\x09tab; nextPutAll: 'instanceVariableNames: '''.\x0a\x09aClass instanceVariableNames\x0a\x09\x09do: [ :each | aStream nextPutAll: each ]\x0a\x09\x09separatedBy: [ aStream nextPutAll: ' ' ].\x0a\x09aStream\x0a\x09\x09nextPutAll: ''''; lf;\x0a\x09\x09tab; nextPutAll: 'package: ''', aClass category, '''!'; lf.\x0a\x09aClass comment notEmpty ifTrue: [\x0a\x09\x09aStream\x0a\x09\x09nextPutAll: '!', (self classNameFor: aClass), ' commentStamp!';lf;\x0a\x09\x09nextPutAll: (self chunkEscape: aClass comment), '!';lf ].\x0a\x09aStream lf",
  55255. referencedClasses: [],
  55256. //>>excludeEnd("ide");
  55257. messageSends: ["nextPutAll:", "classNameFor:", "superclass", ",", "lf", "tab", "do:separatedBy:", "instanceVariableNames", "category", "ifTrue:", "notEmpty", "comment", "chunkEscape:"]
  55258. }),
  55259. $globals.ChunkExporter);
  55260. $core.addMethod(
  55261. $core.method({
  55262. selector: "exportMetaDefinitionOf:on:",
  55263. protocol: 'output',
  55264. fn: function (aClass,aStream){
  55265. var self=this;
  55266. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55267. return $core.withContext(function($ctx1) {
  55268. //>>excludeEnd("ctx");
  55269. var $3,$2,$1,$5,$4,$6,$7;
  55270. $3=$recv(aClass)._class();
  55271. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55272. $ctx1.sendIdx["class"]=1;
  55273. //>>excludeEnd("ctx");
  55274. $2=$recv($3)._instanceVariableNames();
  55275. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55276. $ctx1.sendIdx["instanceVariableNames"]=1;
  55277. //>>excludeEnd("ctx");
  55278. $1=$recv($2)._isEmpty();
  55279. if(!$core.assert($1)){
  55280. $5=$recv(aClass)._class();
  55281. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55282. $ctx1.sendIdx["class"]=2;
  55283. //>>excludeEnd("ctx");
  55284. $4=self._classNameFor_($5);
  55285. $recv(aStream)._nextPutAll_($4);
  55286. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55287. $ctx1.sendIdx["nextPutAll:"]=1;
  55288. //>>excludeEnd("ctx");
  55289. $6=$recv(aStream)._nextPutAll_(" instanceVariableNames: '");
  55290. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55291. $ctx1.sendIdx["nextPutAll:"]=2;
  55292. //>>excludeEnd("ctx");
  55293. $6;
  55294. $recv($recv($recv(aClass)._class())._instanceVariableNames())._do_separatedBy_((function(each){
  55295. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55296. return $core.withContext(function($ctx2) {
  55297. //>>excludeEnd("ctx");
  55298. return $recv(aStream)._nextPutAll_(each);
  55299. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55300. $ctx2.sendIdx["nextPutAll:"]=3;
  55301. //>>excludeEnd("ctx");
  55302. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55303. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,2)});
  55304. //>>excludeEnd("ctx");
  55305. }),(function(){
  55306. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55307. return $core.withContext(function($ctx2) {
  55308. //>>excludeEnd("ctx");
  55309. return $recv(aStream)._nextPutAll_(" ");
  55310. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55311. $ctx2.sendIdx["nextPutAll:"]=4;
  55312. //>>excludeEnd("ctx");
  55313. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55314. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,3)});
  55315. //>>excludeEnd("ctx");
  55316. }));
  55317. $recv(aStream)._nextPutAll_("'!");
  55318. $recv(aStream)._lf();
  55319. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55320. $ctx1.sendIdx["lf"]=1;
  55321. //>>excludeEnd("ctx");
  55322. $7=$recv(aStream)._lf();
  55323. $7;
  55324. };
  55325. return self;
  55326. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55327. }, function($ctx1) {$ctx1.fill(self,"exportMetaDefinitionOf:on:",{aClass:aClass,aStream:aStream},$globals.ChunkExporter)});
  55328. //>>excludeEnd("ctx");
  55329. },
  55330. //>>excludeStart("ide", pragmas.excludeIdeData);
  55331. args: ["aClass", "aStream"],
  55332. source: "exportMetaDefinitionOf: aClass on: aStream\x0a\x0a\x09aClass class instanceVariableNames isEmpty ifFalse: [\x0a\x09\x09aStream\x0a\x09\x09\x09nextPutAll: (self classNameFor: aClass class);\x0a\x09\x09\x09nextPutAll: ' instanceVariableNames: '''.\x0a\x09\x09aClass class instanceVariableNames\x0a\x09\x09\x09do: [ :each | aStream nextPutAll: each ]\x0a\x09\x09\x09separatedBy: [ aStream nextPutAll: ' ' ].\x0a\x09\x09aStream\x0a\x09\x09\x09nextPutAll: '''!'; lf; lf ]",
  55333. referencedClasses: [],
  55334. //>>excludeEnd("ide");
  55335. messageSends: ["ifFalse:", "isEmpty", "instanceVariableNames", "class", "nextPutAll:", "classNameFor:", "do:separatedBy:", "lf"]
  55336. }),
  55337. $globals.ChunkExporter);
  55338. $core.addMethod(
  55339. $core.method({
  55340. selector: "exportMethod:on:",
  55341. protocol: 'output',
  55342. fn: function (aMethod,aStream){
  55343. var self=this;
  55344. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55345. return $core.withContext(function($ctx1) {
  55346. //>>excludeEnd("ctx");
  55347. var $1;
  55348. $recv(aStream)._lf();
  55349. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55350. $ctx1.sendIdx["lf"]=1;
  55351. //>>excludeEnd("ctx");
  55352. $recv(aStream)._lf();
  55353. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55354. $ctx1.sendIdx["lf"]=2;
  55355. //>>excludeEnd("ctx");
  55356. $recv(aStream)._nextPutAll_(self._chunkEscape_($recv(aMethod)._source()));
  55357. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55358. $ctx1.sendIdx["nextPutAll:"]=1;
  55359. //>>excludeEnd("ctx");
  55360. $recv(aStream)._lf();
  55361. $1=$recv(aStream)._nextPutAll_("!");
  55362. return self;
  55363. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55364. }, function($ctx1) {$ctx1.fill(self,"exportMethod:on:",{aMethod:aMethod,aStream:aStream},$globals.ChunkExporter)});
  55365. //>>excludeEnd("ctx");
  55366. },
  55367. //>>excludeStart("ide", pragmas.excludeIdeData);
  55368. args: ["aMethod", "aStream"],
  55369. source: "exportMethod: aMethod on: aStream\x0a\x09aStream\x0a\x09\x09lf; lf; nextPutAll: (self chunkEscape: aMethod source); lf;\x0a\x09\x09nextPutAll: '!'",
  55370. referencedClasses: [],
  55371. //>>excludeEnd("ide");
  55372. messageSends: ["lf", "nextPutAll:", "chunkEscape:", "source"]
  55373. }),
  55374. $globals.ChunkExporter);
  55375. $core.addMethod(
  55376. $core.method({
  55377. selector: "exportPackage:on:",
  55378. protocol: 'output',
  55379. fn: function (aPackage,aStream){
  55380. var self=this;
  55381. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55382. return $core.withContext(function($ctx1) {
  55383. //>>excludeEnd("ctx");
  55384. var $1;
  55385. self._exportPackageDefinitionOf_on_(aPackage,aStream);
  55386. $recv($recv(aPackage)._sortedClasses())._do_((function(each){
  55387. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55388. return $core.withContext(function($ctx2) {
  55389. //>>excludeEnd("ctx");
  55390. self._exportDefinitionOf_on_(each,aStream);
  55391. $1=self._ownMethodProtocolsOfClass_(each);
  55392. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55393. $ctx2.sendIdx["ownMethodProtocolsOfClass:"]=1;
  55394. //>>excludeEnd("ctx");
  55395. self._exportProtocols_on_($1,aStream);
  55396. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55397. $ctx2.sendIdx["exportProtocols:on:"]=1;
  55398. //>>excludeEnd("ctx");
  55399. self._exportMetaDefinitionOf_on_(each,aStream);
  55400. return self._exportProtocols_on_(self._ownMethodProtocolsOfClass_($recv(each)._class()),aStream);
  55401. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55402. $ctx2.sendIdx["exportProtocols:on:"]=2;
  55403. //>>excludeEnd("ctx");
  55404. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55405. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  55406. //>>excludeEnd("ctx");
  55407. }));
  55408. self._exportProtocols_on_(self._extensionProtocolsOfPackage_(aPackage),aStream);
  55409. return self;
  55410. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55411. }, function($ctx1) {$ctx1.fill(self,"exportPackage:on:",{aPackage:aPackage,aStream:aStream},$globals.ChunkExporter)});
  55412. //>>excludeEnd("ctx");
  55413. },
  55414. //>>excludeStart("ide", pragmas.excludeIdeData);
  55415. args: ["aPackage", "aStream"],
  55416. source: "exportPackage: aPackage on: aStream\x0a\x0a\x09self exportPackageDefinitionOf: aPackage on: aStream.\x0a\x09\x0a\x09aPackage sortedClasses do: [ :each |\x0a\x09\x09self exportDefinitionOf: each on: aStream.\x0a\x09\x09\x0a\x09\x09self \x0a\x09\x09\x09exportProtocols: (self ownMethodProtocolsOfClass: each)\x0a\x09\x09\x09on: aStream.\x0a\x09\x09\x09\x0a\x09\x09self exportMetaDefinitionOf: each on: aStream.\x0a\x09\x09\x0a\x09\x09self \x0a\x09\x09\x09exportProtocols: (self ownMethodProtocolsOfClass: each class)\x0a\x09\x09\x09on: aStream ].\x0a\x09\x09\x09\x0a\x09self \x0a\x09\x09exportProtocols: (self extensionProtocolsOfPackage: aPackage)\x0a\x09\x09on: aStream",
  55417. referencedClasses: [],
  55418. //>>excludeEnd("ide");
  55419. messageSends: ["exportPackageDefinitionOf:on:", "do:", "sortedClasses", "exportDefinitionOf:on:", "exportProtocols:on:", "ownMethodProtocolsOfClass:", "exportMetaDefinitionOf:on:", "class", "extensionProtocolsOfPackage:"]
  55420. }),
  55421. $globals.ChunkExporter);
  55422. $core.addMethod(
  55423. $core.method({
  55424. selector: "exportPackageDefinitionOf:on:",
  55425. protocol: 'output',
  55426. fn: function (aPackage,aStream){
  55427. var self=this;
  55428. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55429. return $core.withContext(function($ctx1) {
  55430. //>>excludeEnd("ctx");
  55431. var $1,$2;
  55432. $1=$recv("Smalltalk createPackage: '".__comma($recv(aPackage)._name())).__comma("'!");
  55433. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55434. $ctx1.sendIdx[","]=1;
  55435. //>>excludeEnd("ctx");
  55436. $recv(aStream)._nextPutAll_($1);
  55437. $2=$recv(aStream)._lf();
  55438. return self;
  55439. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55440. }, function($ctx1) {$ctx1.fill(self,"exportPackageDefinitionOf:on:",{aPackage:aPackage,aStream:aStream},$globals.ChunkExporter)});
  55441. //>>excludeEnd("ctx");
  55442. },
  55443. //>>excludeStart("ide", pragmas.excludeIdeData);
  55444. args: ["aPackage", "aStream"],
  55445. source: "exportPackageDefinitionOf: aPackage on: aStream\x0a\x09aStream\x0a\x09\x09nextPutAll: 'Smalltalk createPackage: ''', aPackage name, '''!';\x0a\x09\x09lf",
  55446. referencedClasses: [],
  55447. //>>excludeEnd("ide");
  55448. messageSends: ["nextPutAll:", ",", "name", "lf"]
  55449. }),
  55450. $globals.ChunkExporter);
  55451. $core.addMethod(
  55452. $core.method({
  55453. selector: "exportProtocol:on:",
  55454. protocol: 'output',
  55455. fn: function (aProtocol,aStream){
  55456. var self=this;
  55457. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55458. return $core.withContext(function($ctx1) {
  55459. //>>excludeEnd("ctx");
  55460. self._exportProtocolPrologueOf_on_(aProtocol,aStream);
  55461. $recv($recv(aProtocol)._methods())._do_((function(method){
  55462. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55463. return $core.withContext(function($ctx2) {
  55464. //>>excludeEnd("ctx");
  55465. return self._exportMethod_on_(method,aStream);
  55466. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55467. }, function($ctx2) {$ctx2.fillBlock({method:method},$ctx1,1)});
  55468. //>>excludeEnd("ctx");
  55469. }));
  55470. self._exportProtocolEpilogueOf_on_(aProtocol,aStream);
  55471. return self;
  55472. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55473. }, function($ctx1) {$ctx1.fill(self,"exportProtocol:on:",{aProtocol:aProtocol,aStream:aStream},$globals.ChunkExporter)});
  55474. //>>excludeEnd("ctx");
  55475. },
  55476. //>>excludeStart("ide", pragmas.excludeIdeData);
  55477. args: ["aProtocol", "aStream"],
  55478. source: "exportProtocol: aProtocol on: aStream\x0a\x09self exportProtocolPrologueOf: aProtocol on: aStream.\x0a\x09aProtocol methods do: [ :method | \x0a\x09\x09self exportMethod: method on: aStream ].\x0a\x09self exportProtocolEpilogueOf: aProtocol on: aStream",
  55479. referencedClasses: [],
  55480. //>>excludeEnd("ide");
  55481. messageSends: ["exportProtocolPrologueOf:on:", "do:", "methods", "exportMethod:on:", "exportProtocolEpilogueOf:on:"]
  55482. }),
  55483. $globals.ChunkExporter);
  55484. $core.addMethod(
  55485. $core.method({
  55486. selector: "exportProtocolEpilogueOf:on:",
  55487. protocol: 'output',
  55488. fn: function (aProtocol,aStream){
  55489. var self=this;
  55490. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55491. return $core.withContext(function($ctx1) {
  55492. //>>excludeEnd("ctx");
  55493. var $1;
  55494. $recv(aStream)._nextPutAll_(" !");
  55495. $recv(aStream)._lf();
  55496. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55497. $ctx1.sendIdx["lf"]=1;
  55498. //>>excludeEnd("ctx");
  55499. $1=$recv(aStream)._lf();
  55500. return self;
  55501. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55502. }, function($ctx1) {$ctx1.fill(self,"exportProtocolEpilogueOf:on:",{aProtocol:aProtocol,aStream:aStream},$globals.ChunkExporter)});
  55503. //>>excludeEnd("ctx");
  55504. },
  55505. //>>excludeStart("ide", pragmas.excludeIdeData);
  55506. args: ["aProtocol", "aStream"],
  55507. source: "exportProtocolEpilogueOf: aProtocol on: aStream\x0a\x09aStream nextPutAll: ' !'; lf; lf",
  55508. referencedClasses: [],
  55509. //>>excludeEnd("ide");
  55510. messageSends: ["nextPutAll:", "lf"]
  55511. }),
  55512. $globals.ChunkExporter);
  55513. $core.addMethod(
  55514. $core.method({
  55515. selector: "exportProtocolPrologueOf:on:",
  55516. protocol: 'output',
  55517. fn: function (aProtocol,aStream){
  55518. var self=this;
  55519. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55520. return $core.withContext(function($ctx1) {
  55521. //>>excludeEnd("ctx");
  55522. var $1,$3,$2;
  55523. $1="!".__comma(self._classNameFor_($recv(aProtocol)._theClass()));
  55524. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55525. $ctx1.sendIdx[","]=1;
  55526. //>>excludeEnd("ctx");
  55527. $recv(aStream)._nextPutAll_($1);
  55528. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55529. $ctx1.sendIdx["nextPutAll:"]=1;
  55530. //>>excludeEnd("ctx");
  55531. $3=$recv(" methodsFor: '".__comma($recv(aProtocol)._name())).__comma("'!");
  55532. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55533. $ctx1.sendIdx[","]=2;
  55534. //>>excludeEnd("ctx");
  55535. $2=$recv(aStream)._nextPutAll_($3);
  55536. return self;
  55537. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55538. }, function($ctx1) {$ctx1.fill(self,"exportProtocolPrologueOf:on:",{aProtocol:aProtocol,aStream:aStream},$globals.ChunkExporter)});
  55539. //>>excludeEnd("ctx");
  55540. },
  55541. //>>excludeStart("ide", pragmas.excludeIdeData);
  55542. args: ["aProtocol", "aStream"],
  55543. source: "exportProtocolPrologueOf: aProtocol on: aStream\x0a\x09aStream\x0a\x09\x09nextPutAll: '!', (self classNameFor: aProtocol theClass);\x0a\x09\x09nextPutAll: ' methodsFor: ''', aProtocol name, '''!'",
  55544. referencedClasses: [],
  55545. //>>excludeEnd("ide");
  55546. messageSends: ["nextPutAll:", ",", "classNameFor:", "theClass", "name"]
  55547. }),
  55548. $globals.ChunkExporter);
  55549. $core.addMethod(
  55550. $core.method({
  55551. selector: "exportProtocols:on:",
  55552. protocol: 'output',
  55553. fn: function (aCollection,aStream){
  55554. var self=this;
  55555. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55556. return $core.withContext(function($ctx1) {
  55557. //>>excludeEnd("ctx");
  55558. $recv(aCollection)._do_((function(each){
  55559. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55560. return $core.withContext(function($ctx2) {
  55561. //>>excludeEnd("ctx");
  55562. return self._exportProtocol_on_(each,aStream);
  55563. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55564. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  55565. //>>excludeEnd("ctx");
  55566. }));
  55567. return self;
  55568. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55569. }, function($ctx1) {$ctx1.fill(self,"exportProtocols:on:",{aCollection:aCollection,aStream:aStream},$globals.ChunkExporter)});
  55570. //>>excludeEnd("ctx");
  55571. },
  55572. //>>excludeStart("ide", pragmas.excludeIdeData);
  55573. args: ["aCollection", "aStream"],
  55574. source: "exportProtocols: aCollection on: aStream\x0a\x09aCollection do: [ :each |\x0a\x09\x09self exportProtocol: each on: aStream ]",
  55575. referencedClasses: [],
  55576. //>>excludeEnd("ide");
  55577. messageSends: ["do:", "exportProtocol:on:"]
  55578. }),
  55579. $globals.ChunkExporter);
  55580. $core.addMethod(
  55581. $core.method({
  55582. selector: "extensionCategoriesOfPackage:",
  55583. protocol: 'accessing',
  55584. fn: function (aPackage){
  55585. var self=this;
  55586. var name,map,result;
  55587. function $OrderedCollection(){return $globals.OrderedCollection||(typeof OrderedCollection=="undefined"?nil:OrderedCollection)}
  55588. function $Package(){return $globals.Package||(typeof Package=="undefined"?nil:Package)}
  55589. function $Smalltalk(){return $globals.Smalltalk||(typeof Smalltalk=="undefined"?nil:Smalltalk)}
  55590. function $Dictionary(){return $globals.Dictionary||(typeof Dictionary=="undefined"?nil:Dictionary)}
  55591. function $MethodCategory(){return $globals.MethodCategory||(typeof MethodCategory=="undefined"?nil:MethodCategory)}
  55592. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55593. return $core.withContext(function($ctx1) {
  55594. //>>excludeEnd("ctx");
  55595. var $1,$2;
  55596. name=$recv(aPackage)._name();
  55597. result=$recv($OrderedCollection())._new();
  55598. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55599. $ctx1.sendIdx["new"]=1;
  55600. //>>excludeEnd("ctx");
  55601. $recv($recv($Package())._sortedClasses_($recv($Smalltalk())._classes()))._do_((function(each){
  55602. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55603. return $core.withContext(function($ctx2) {
  55604. //>>excludeEnd("ctx");
  55605. return $recv([each,$recv(each)._class()])._do_((function(aClass){
  55606. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55607. return $core.withContext(function($ctx3) {
  55608. //>>excludeEnd("ctx");
  55609. map=$recv($Dictionary())._new();
  55610. map;
  55611. $recv(aClass)._protocolsDo_((function(category,methods){
  55612. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55613. return $core.withContext(function($ctx4) {
  55614. //>>excludeEnd("ctx");
  55615. $1=$recv(category).__eq("*".__comma(name));
  55616. if($core.assert($1)){
  55617. return $recv(map)._at_put_(category,methods);
  55618. };
  55619. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55620. }, function($ctx4) {$ctx4.fillBlock({category:category,methods:methods},$ctx3,3)});
  55621. //>>excludeEnd("ctx");
  55622. }));
  55623. return $recv(result)._addAll_($recv($recv($recv(map)._keys())._sorted_((function(a,b){
  55624. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55625. return $core.withContext(function($ctx4) {
  55626. //>>excludeEnd("ctx");
  55627. return $recv(a).__lt_eq(b);
  55628. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55629. }, function($ctx4) {$ctx4.fillBlock({a:a,b:b},$ctx3,5)});
  55630. //>>excludeEnd("ctx");
  55631. })))._collect_((function(category){
  55632. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55633. return $core.withContext(function($ctx4) {
  55634. //>>excludeEnd("ctx");
  55635. return $recv($MethodCategory())._name_theClass_methods_(category,aClass,$recv(map)._at_(category));
  55636. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55637. }, function($ctx4) {$ctx4.fillBlock({category:category},$ctx3,6)});
  55638. //>>excludeEnd("ctx");
  55639. })));
  55640. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55641. }, function($ctx3) {$ctx3.fillBlock({aClass:aClass},$ctx2,2)});
  55642. //>>excludeEnd("ctx");
  55643. }));
  55644. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55645. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  55646. //>>excludeEnd("ctx");
  55647. }));
  55648. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55649. $ctx1.sendIdx["do:"]=1;
  55650. //>>excludeEnd("ctx");
  55651. $2=result;
  55652. return $2;
  55653. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55654. }, function($ctx1) {$ctx1.fill(self,"extensionCategoriesOfPackage:",{aPackage:aPackage,name:name,map:map,result:result},$globals.ChunkExporter)});
  55655. //>>excludeEnd("ctx");
  55656. },
  55657. //>>excludeStart("ide", pragmas.excludeIdeData);
  55658. args: ["aPackage"],
  55659. 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\x09{each. each class} do: [ :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",
  55660. referencedClasses: ["OrderedCollection", "Package", "Smalltalk", "Dictionary", "MethodCategory"],
  55661. //>>excludeEnd("ide");
  55662. messageSends: ["name", "new", "do:", "sortedClasses:", "classes", "class", "protocolsDo:", "ifTrue:", "=", ",", "at:put:", "addAll:", "collect:", "sorted:", "keys", "<=", "name:theClass:methods:", "at:"]
  55663. }),
  55664. $globals.ChunkExporter);
  55665. $core.addMethod(
  55666. $core.method({
  55667. selector: "ownCategoriesOfClass:",
  55668. protocol: 'accessing',
  55669. fn: function (aClass){
  55670. var self=this;
  55671. var map;
  55672. function $Dictionary(){return $globals.Dictionary||(typeof Dictionary=="undefined"?nil:Dictionary)}
  55673. function $MethodCategory(){return $globals.MethodCategory||(typeof MethodCategory=="undefined"?nil:MethodCategory)}
  55674. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55675. return $core.withContext(function($ctx1) {
  55676. //>>excludeEnd("ctx");
  55677. var $1,$2;
  55678. map=$recv($Dictionary())._new();
  55679. $recv(aClass)._protocolsDo_((function(each,methods){
  55680. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55681. return $core.withContext(function($ctx2) {
  55682. //>>excludeEnd("ctx");
  55683. $1=$recv(each)._match_("^\x5c*");
  55684. if(!$core.assert($1)){
  55685. return $recv(map)._at_put_(each,methods);
  55686. };
  55687. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55688. }, function($ctx2) {$ctx2.fillBlock({each:each,methods:methods},$ctx1,1)});
  55689. //>>excludeEnd("ctx");
  55690. }));
  55691. $2=$recv($recv($recv(map)._keys())._sorted_((function(a,b){
  55692. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55693. return $core.withContext(function($ctx2) {
  55694. //>>excludeEnd("ctx");
  55695. return $recv(a).__lt_eq(b);
  55696. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55697. }, function($ctx2) {$ctx2.fillBlock({a:a,b:b},$ctx1,3)});
  55698. //>>excludeEnd("ctx");
  55699. })))._collect_((function(each){
  55700. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55701. return $core.withContext(function($ctx2) {
  55702. //>>excludeEnd("ctx");
  55703. return $recv($MethodCategory())._name_theClass_methods_(each,aClass,$recv(map)._at_(each));
  55704. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55705. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,4)});
  55706. //>>excludeEnd("ctx");
  55707. }));
  55708. return $2;
  55709. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55710. }, function($ctx1) {$ctx1.fill(self,"ownCategoriesOfClass:",{aClass:aClass,map:map},$globals.ChunkExporter)});
  55711. //>>excludeEnd("ctx");
  55712. },
  55713. //>>excludeStart("ide", pragmas.excludeIdeData);
  55714. args: ["aClass"],
  55715. 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) ]",
  55716. referencedClasses: ["Dictionary", "MethodCategory"],
  55717. //>>excludeEnd("ide");
  55718. messageSends: ["new", "protocolsDo:", "ifFalse:", "match:", "at:put:", "collect:", "sorted:", "keys", "<=", "name:theClass:methods:", "at:"]
  55719. }),
  55720. $globals.ChunkExporter);
  55721. $core.addMethod(
  55722. $core.method({
  55723. selector: "ownCategoriesOfMetaClass:",
  55724. protocol: 'accessing',
  55725. fn: function (aClass){
  55726. var self=this;
  55727. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55728. return $core.withContext(function($ctx1) {
  55729. //>>excludeEnd("ctx");
  55730. var $1;
  55731. $1=self._ownCategoriesOfClass_($recv(aClass)._class());
  55732. return $1;
  55733. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55734. }, function($ctx1) {$ctx1.fill(self,"ownCategoriesOfMetaClass:",{aClass:aClass},$globals.ChunkExporter)});
  55735. //>>excludeEnd("ctx");
  55736. },
  55737. //>>excludeStart("ide", pragmas.excludeIdeData);
  55738. args: ["aClass"],
  55739. source: "ownCategoriesOfMetaClass: aClass\x0a\x09\x22Issue #143: sort protocol alphabetically\x22\x0a\x0a\x09^ self ownCategoriesOfClass: aClass class",
  55740. referencedClasses: [],
  55741. //>>excludeEnd("ide");
  55742. messageSends: ["ownCategoriesOfClass:", "class"]
  55743. }),
  55744. $globals.ChunkExporter);
  55745. $core.addMethod(
  55746. $core.method({
  55747. selector: "ownMethodProtocolsOfClass:",
  55748. protocol: 'accessing',
  55749. fn: function (aClass){
  55750. var self=this;
  55751. function $ExportMethodProtocol(){return $globals.ExportMethodProtocol||(typeof ExportMethodProtocol=="undefined"?nil:ExportMethodProtocol)}
  55752. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55753. return $core.withContext(function($ctx1) {
  55754. //>>excludeEnd("ctx");
  55755. var $1;
  55756. $1=$recv($recv(aClass)._ownProtocols())._collect_((function(each){
  55757. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55758. return $core.withContext(function($ctx2) {
  55759. //>>excludeEnd("ctx");
  55760. return $recv($ExportMethodProtocol())._name_theClass_(each,aClass);
  55761. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55762. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  55763. //>>excludeEnd("ctx");
  55764. }));
  55765. return $1;
  55766. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55767. }, function($ctx1) {$ctx1.fill(self,"ownMethodProtocolsOfClass:",{aClass:aClass},$globals.ChunkExporter)});
  55768. //>>excludeEnd("ctx");
  55769. },
  55770. //>>excludeStart("ide", pragmas.excludeIdeData);
  55771. args: ["aClass"],
  55772. 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 ]",
  55773. referencedClasses: ["ExportMethodProtocol"],
  55774. //>>excludeEnd("ide");
  55775. messageSends: ["collect:", "ownProtocols", "name:theClass:"]
  55776. }),
  55777. $globals.ChunkExporter);
  55778. $core.addClass('Exporter', $globals.AbstractExporter, [], 'Kernel-ImportExport');
  55779. //>>excludeStart("ide", pragmas.excludeIdeData);
  55780. $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.).";
  55781. //>>excludeEnd("ide");
  55782. $core.addMethod(
  55783. $core.method({
  55784. selector: "exportDefinitionOf:on:",
  55785. protocol: 'output',
  55786. fn: function (aClass,aStream){
  55787. var self=this;
  55788. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55789. return $core.withContext(function($ctx1) {
  55790. //>>excludeEnd("ctx");
  55791. var $2,$1,$3,$4,$6,$5,$7,$9,$8,$10;
  55792. $recv(aStream)._lf();
  55793. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55794. $ctx1.sendIdx["lf"]=1;
  55795. //>>excludeEnd("ctx");
  55796. $recv(aStream)._nextPutAll_("$core.addClass(");
  55797. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55798. $ctx1.sendIdx["nextPutAll:"]=1;
  55799. //>>excludeEnd("ctx");
  55800. $2="'".__comma(self._classNameFor_(aClass));
  55801. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55802. $ctx1.sendIdx[","]=2;
  55803. //>>excludeEnd("ctx");
  55804. $1=$recv($2).__comma("', ");
  55805. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55806. $ctx1.sendIdx[","]=1;
  55807. //>>excludeEnd("ctx");
  55808. $recv(aStream)._nextPutAll_($1);
  55809. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55810. $ctx1.sendIdx["nextPutAll:"]=2;
  55811. //>>excludeEnd("ctx");
  55812. $3=self._jsClassNameFor_($recv(aClass)._superclass());
  55813. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55814. $ctx1.sendIdx["jsClassNameFor:"]=1;
  55815. //>>excludeEnd("ctx");
  55816. $recv(aStream)._nextPutAll_($3);
  55817. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55818. $ctx1.sendIdx["nextPutAll:"]=3;
  55819. //>>excludeEnd("ctx");
  55820. $4=$recv(aStream)._nextPutAll_(", [");
  55821. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55822. $ctx1.sendIdx["nextPutAll:"]=4;
  55823. //>>excludeEnd("ctx");
  55824. $recv($recv(aClass)._instanceVariableNames())._do_separatedBy_((function(each){
  55825. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55826. return $core.withContext(function($ctx2) {
  55827. //>>excludeEnd("ctx");
  55828. $6="'".__comma(each);
  55829. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55830. $ctx2.sendIdx[","]=4;
  55831. //>>excludeEnd("ctx");
  55832. $5=$recv($6).__comma("'");
  55833. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55834. $ctx2.sendIdx[","]=3;
  55835. //>>excludeEnd("ctx");
  55836. return $recv(aStream)._nextPutAll_($5);
  55837. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55838. $ctx2.sendIdx["nextPutAll:"]=5;
  55839. //>>excludeEnd("ctx");
  55840. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55841. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  55842. //>>excludeEnd("ctx");
  55843. }),(function(){
  55844. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55845. return $core.withContext(function($ctx2) {
  55846. //>>excludeEnd("ctx");
  55847. return $recv(aStream)._nextPutAll_(", ");
  55848. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55849. $ctx2.sendIdx["nextPutAll:"]=6;
  55850. //>>excludeEnd("ctx");
  55851. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55852. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
  55853. //>>excludeEnd("ctx");
  55854. }));
  55855. $recv(aStream)._nextPutAll_("], '");
  55856. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55857. $ctx1.sendIdx["nextPutAll:"]=7;
  55858. //>>excludeEnd("ctx");
  55859. $recv(aStream)._nextPutAll_($recv($recv(aClass)._category()).__comma("'"));
  55860. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55861. $ctx1.sendIdx["nextPutAll:"]=8;
  55862. //>>excludeEnd("ctx");
  55863. $7=$recv(aStream)._nextPutAll_(");");
  55864. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55865. $ctx1.sendIdx["nextPutAll:"]=9;
  55866. //>>excludeEnd("ctx");
  55867. $9=$recv(aClass)._comment();
  55868. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55869. $ctx1.sendIdx["comment"]=1;
  55870. //>>excludeEnd("ctx");
  55871. $8=$recv($9)._notEmpty();
  55872. if($core.assert($8)){
  55873. $recv(aStream)._lf();
  55874. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55875. $ctx1.sendIdx["lf"]=2;
  55876. //>>excludeEnd("ctx");
  55877. $recv(aStream)._nextPutAll_("//>>excludeStart(\x22ide\x22, pragmas.excludeIdeData);");
  55878. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55879. $ctx1.sendIdx["nextPutAll:"]=10;
  55880. //>>excludeEnd("ctx");
  55881. $recv(aStream)._lf();
  55882. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55883. $ctx1.sendIdx["lf"]=3;
  55884. //>>excludeEnd("ctx");
  55885. $recv(aStream)._nextPutAll_(self._jsClassNameFor_(aClass));
  55886. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55887. $ctx1.sendIdx["nextPutAll:"]=11;
  55888. //>>excludeEnd("ctx");
  55889. $recv(aStream)._nextPutAll_(".comment=");
  55890. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55891. $ctx1.sendIdx["nextPutAll:"]=12;
  55892. //>>excludeEnd("ctx");
  55893. $recv(aStream)._nextPutAll_($recv($recv($recv(aClass)._comment())._crlfSanitized())._asJavascript());
  55894. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55895. $ctx1.sendIdx["nextPutAll:"]=13;
  55896. //>>excludeEnd("ctx");
  55897. $recv(aStream)._nextPutAll_(";");
  55898. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55899. $ctx1.sendIdx["nextPutAll:"]=14;
  55900. //>>excludeEnd("ctx");
  55901. $recv(aStream)._lf();
  55902. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55903. $ctx1.sendIdx["lf"]=4;
  55904. //>>excludeEnd("ctx");
  55905. $10=$recv(aStream)._nextPutAll_("//>>excludeEnd(\x22ide\x22);");
  55906. $10;
  55907. };
  55908. $recv(aStream)._lf();
  55909. return self;
  55910. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55911. }, function($ctx1) {$ctx1.fill(self,"exportDefinitionOf:on:",{aClass:aClass,aStream:aStream},$globals.Exporter)});
  55912. //>>excludeEnd("ctx");
  55913. },
  55914. //>>excludeStart("ide", pragmas.excludeIdeData);
  55915. args: ["aClass", "aStream"],
  55916. source: "exportDefinitionOf: aClass on: aStream\x0a\x09aStream\x0a\x09\x09lf;\x0a\x09\x09nextPutAll: '$core.addClass(';\x0a\x09\x09nextPutAll: '''', (self classNameFor: aClass), ''', ';\x0a\x09\x09nextPutAll: (self jsClassNameFor: aClass superclass);\x0a\x09\x09nextPutAll: ', ['.\x0a\x09aClass instanceVariableNames\x0a\x09\x09do: [ :each | aStream nextPutAll: '''', each, '''' ]\x0a\x09\x09separatedBy: [ aStream nextPutAll: ', ' ].\x0a\x09aStream\x0a\x09\x09nextPutAll: '], ''';\x0a\x09\x09nextPutAll: aClass category, '''';\x0a\x09\x09nextPutAll: ');'.\x0a\x09aClass comment notEmpty ifTrue: [\x0a\x09\x09aStream\x0a\x09\x09\x09lf;\x0a\x09\x09\x09nextPutAll: '//>>excludeStart(\x22ide\x22, pragmas.excludeIdeData);';\x0a\x09\x09\x09lf;\x0a\x09\x09\x09nextPutAll: (self jsClassNameFor: aClass);\x0a\x09\x09\x09nextPutAll: '.comment=';\x0a\x09\x09\x09nextPutAll: aClass comment crlfSanitized asJavascript;\x0a\x09\x09\x09nextPutAll: ';';\x0a\x09\x09\x09lf;\x0a\x09\x09\x09nextPutAll: '//>>excludeEnd(\x22ide\x22);' ].\x0a\x09aStream lf",
  55917. referencedClasses: [],
  55918. //>>excludeEnd("ide");
  55919. messageSends: ["lf", "nextPutAll:", ",", "classNameFor:", "jsClassNameFor:", "superclass", "do:separatedBy:", "instanceVariableNames", "category", "ifTrue:", "notEmpty", "comment", "asJavascript", "crlfSanitized"]
  55920. }),
  55921. $globals.Exporter);
  55922. $core.addMethod(
  55923. $core.method({
  55924. selector: "exportMetaDefinitionOf:on:",
  55925. protocol: 'output',
  55926. fn: function (aClass,aStream){
  55927. var self=this;
  55928. function $String(){return $globals.String||(typeof String=="undefined"?nil:String)}
  55929. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55930. return $core.withContext(function($ctx1) {
  55931. //>>excludeEnd("ctx");
  55932. var $3,$2,$1,$5,$4,$6,$8,$7;
  55933. $recv(aStream)._lf();
  55934. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55935. $ctx1.sendIdx["lf"]=1;
  55936. //>>excludeEnd("ctx");
  55937. $3=$recv(aClass)._class();
  55938. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55939. $ctx1.sendIdx["class"]=1;
  55940. //>>excludeEnd("ctx");
  55941. $2=$recv($3)._instanceVariableNames();
  55942. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55943. $ctx1.sendIdx["instanceVariableNames"]=1;
  55944. //>>excludeEnd("ctx");
  55945. $1=$recv($2)._isEmpty();
  55946. if(!$core.assert($1)){
  55947. $5=$recv(aClass)._class();
  55948. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55949. $ctx1.sendIdx["class"]=2;
  55950. //>>excludeEnd("ctx");
  55951. $4=self._jsClassNameFor_($5);
  55952. $recv(aStream)._nextPutAll_($4);
  55953. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55954. $ctx1.sendIdx["nextPutAll:"]=1;
  55955. //>>excludeEnd("ctx");
  55956. $6=$recv(aStream)._nextPutAll_(".iVarNames = [");
  55957. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55958. $ctx1.sendIdx["nextPutAll:"]=2;
  55959. //>>excludeEnd("ctx");
  55960. $6;
  55961. $recv($recv($recv(aClass)._class())._instanceVariableNames())._do_separatedBy_((function(each){
  55962. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55963. return $core.withContext(function($ctx2) {
  55964. //>>excludeEnd("ctx");
  55965. $8="'".__comma(each);
  55966. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55967. $ctx2.sendIdx[","]=2;
  55968. //>>excludeEnd("ctx");
  55969. $7=$recv($8).__comma("'");
  55970. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55971. $ctx2.sendIdx[","]=1;
  55972. //>>excludeEnd("ctx");
  55973. return $recv(aStream)._nextPutAll_($7);
  55974. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55975. $ctx2.sendIdx["nextPutAll:"]=3;
  55976. //>>excludeEnd("ctx");
  55977. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55978. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,2)});
  55979. //>>excludeEnd("ctx");
  55980. }),(function(){
  55981. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55982. return $core.withContext(function($ctx2) {
  55983. //>>excludeEnd("ctx");
  55984. return $recv(aStream)._nextPutAll_(",");
  55985. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55986. $ctx2.sendIdx["nextPutAll:"]=4;
  55987. //>>excludeEnd("ctx");
  55988. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55989. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,3)});
  55990. //>>excludeEnd("ctx");
  55991. }));
  55992. $recv(aStream)._nextPutAll_("];".__comma($recv($String())._lf()));
  55993. };
  55994. return self;
  55995. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  55996. }, function($ctx1) {$ctx1.fill(self,"exportMetaDefinitionOf:on:",{aClass:aClass,aStream:aStream},$globals.Exporter)});
  55997. //>>excludeEnd("ctx");
  55998. },
  55999. //>>excludeStart("ide", pragmas.excludeIdeData);
  56000. args: ["aClass", "aStream"],
  56001. source: "exportMetaDefinitionOf: aClass on: aStream\x0a\x09aStream lf.\x0a\x09aClass class instanceVariableNames isEmpty ifFalse: [\x0a\x09\x09aStream\x0a\x09\x09nextPutAll: (self jsClassNameFor: aClass class);\x0a\x09\x09nextPutAll: '.iVarNames = ['.\x0a\x09\x09aClass class instanceVariableNames\x0a\x09\x09do: [ :each | aStream nextPutAll: '''', each, '''' ]\x0a\x09\x09separatedBy: [ aStream nextPutAll: ',' ].\x0a\x09\x09aStream nextPutAll: '];', String lf ]",
  56002. referencedClasses: ["String"],
  56003. //>>excludeEnd("ide");
  56004. messageSends: ["lf", "ifFalse:", "isEmpty", "instanceVariableNames", "class", "nextPutAll:", "jsClassNameFor:", "do:separatedBy:", ","]
  56005. }),
  56006. $globals.Exporter);
  56007. $core.addMethod(
  56008. $core.method({
  56009. selector: "exportMethod:on:",
  56010. protocol: 'output',
  56011. fn: function (aMethod,aStream){
  56012. var self=this;
  56013. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56014. return $core.withContext(function($ctx1) {
  56015. //>>excludeEnd("ctx");
  56016. var $3,$2,$1,$5,$4,$7,$6,$10,$9,$8,$13,$12,$11,$16,$15,$14,$17;
  56017. $recv(aStream)._nextPutAll_("$core.addMethod(");
  56018. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56019. $ctx1.sendIdx["nextPutAll:"]=1;
  56020. //>>excludeEnd("ctx");
  56021. $recv(aStream)._lf();
  56022. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56023. $ctx1.sendIdx["lf"]=1;
  56024. //>>excludeEnd("ctx");
  56025. $recv(aStream)._nextPutAll_("$core.method({");
  56026. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56027. $ctx1.sendIdx["nextPutAll:"]=2;
  56028. //>>excludeEnd("ctx");
  56029. $recv(aStream)._lf();
  56030. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56031. $ctx1.sendIdx["lf"]=2;
  56032. //>>excludeEnd("ctx");
  56033. $3=$recv($recv(aMethod)._selector())._asJavascript();
  56034. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56035. $ctx1.sendIdx["asJavascript"]=1;
  56036. //>>excludeEnd("ctx");
  56037. $2="selector: ".__comma($3);
  56038. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56039. $ctx1.sendIdx[","]=2;
  56040. //>>excludeEnd("ctx");
  56041. $1=$recv($2).__comma(",");
  56042. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56043. $ctx1.sendIdx[","]=1;
  56044. //>>excludeEnd("ctx");
  56045. $recv(aStream)._nextPutAll_($1);
  56046. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56047. $ctx1.sendIdx["nextPutAll:"]=3;
  56048. //>>excludeEnd("ctx");
  56049. $recv(aStream)._lf();
  56050. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56051. $ctx1.sendIdx["lf"]=3;
  56052. //>>excludeEnd("ctx");
  56053. $5="protocol: '".__comma($recv(aMethod)._protocol());
  56054. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56055. $ctx1.sendIdx[","]=4;
  56056. //>>excludeEnd("ctx");
  56057. $4=$recv($5).__comma("',");
  56058. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56059. $ctx1.sendIdx[","]=3;
  56060. //>>excludeEnd("ctx");
  56061. $recv(aStream)._nextPutAll_($4);
  56062. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56063. $ctx1.sendIdx["nextPutAll:"]=4;
  56064. //>>excludeEnd("ctx");
  56065. $recv(aStream)._lf();
  56066. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56067. $ctx1.sendIdx["lf"]=4;
  56068. //>>excludeEnd("ctx");
  56069. $7="fn: ".__comma($recv($recv(aMethod)._fn())._compiledSource());
  56070. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56071. $ctx1.sendIdx[","]=6;
  56072. //>>excludeEnd("ctx");
  56073. $6=$recv($7).__comma(",");
  56074. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56075. $ctx1.sendIdx[","]=5;
  56076. //>>excludeEnd("ctx");
  56077. $recv(aStream)._nextPutAll_($6);
  56078. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56079. $ctx1.sendIdx["nextPutAll:"]=5;
  56080. //>>excludeEnd("ctx");
  56081. $recv(aStream)._lf();
  56082. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56083. $ctx1.sendIdx["lf"]=5;
  56084. //>>excludeEnd("ctx");
  56085. $recv(aStream)._nextPutAll_("//>>excludeStart(\x22ide\x22, pragmas.excludeIdeData);");
  56086. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56087. $ctx1.sendIdx["nextPutAll:"]=6;
  56088. //>>excludeEnd("ctx");
  56089. $recv(aStream)._lf();
  56090. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56091. $ctx1.sendIdx["lf"]=6;
  56092. //>>excludeEnd("ctx");
  56093. $10=$recv($recv(aMethod)._arguments())._asJavascript();
  56094. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56095. $ctx1.sendIdx["asJavascript"]=2;
  56096. //>>excludeEnd("ctx");
  56097. $9="args: ".__comma($10);
  56098. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56099. $ctx1.sendIdx[","]=8;
  56100. //>>excludeEnd("ctx");
  56101. $8=$recv($9).__comma(",");
  56102. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56103. $ctx1.sendIdx[","]=7;
  56104. //>>excludeEnd("ctx");
  56105. $recv(aStream)._nextPutAll_($8);
  56106. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56107. $ctx1.sendIdx["nextPutAll:"]=7;
  56108. //>>excludeEnd("ctx");
  56109. $recv(aStream)._lf();
  56110. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56111. $ctx1.sendIdx["lf"]=7;
  56112. //>>excludeEnd("ctx");
  56113. $13=$recv($recv(aMethod)._source())._asJavascript();
  56114. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56115. $ctx1.sendIdx["asJavascript"]=3;
  56116. //>>excludeEnd("ctx");
  56117. $12="source: ".__comma($13);
  56118. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56119. $ctx1.sendIdx[","]=10;
  56120. //>>excludeEnd("ctx");
  56121. $11=$recv($12).__comma(",");
  56122. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56123. $ctx1.sendIdx[","]=9;
  56124. //>>excludeEnd("ctx");
  56125. $recv(aStream)._nextPutAll_($11);
  56126. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56127. $ctx1.sendIdx["nextPutAll:"]=8;
  56128. //>>excludeEnd("ctx");
  56129. $recv(aStream)._lf();
  56130. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56131. $ctx1.sendIdx["lf"]=8;
  56132. //>>excludeEnd("ctx");
  56133. $16=$recv($recv(aMethod)._referencedClasses())._asJavascript();
  56134. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56135. $ctx1.sendIdx["asJavascript"]=4;
  56136. //>>excludeEnd("ctx");
  56137. $15="referencedClasses: ".__comma($16);
  56138. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56139. $ctx1.sendIdx[","]=12;
  56140. //>>excludeEnd("ctx");
  56141. $14=$recv($15).__comma(",");
  56142. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56143. $ctx1.sendIdx[","]=11;
  56144. //>>excludeEnd("ctx");
  56145. $recv(aStream)._nextPutAll_($14);
  56146. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56147. $ctx1.sendIdx["nextPutAll:"]=9;
  56148. //>>excludeEnd("ctx");
  56149. $recv(aStream)._lf();
  56150. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56151. $ctx1.sendIdx["lf"]=9;
  56152. //>>excludeEnd("ctx");
  56153. $recv(aStream)._nextPutAll_("//>>excludeEnd(\x22ide\x22);");
  56154. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56155. $ctx1.sendIdx["nextPutAll:"]=10;
  56156. //>>excludeEnd("ctx");
  56157. $recv(aStream)._lf();
  56158. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56159. $ctx1.sendIdx["lf"]=10;
  56160. //>>excludeEnd("ctx");
  56161. $recv(aStream)._nextPutAll_("messageSends: ".__comma($recv($recv(aMethod)._messageSends())._asJavascript()));
  56162. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56163. $ctx1.sendIdx["nextPutAll:"]=11;
  56164. //>>excludeEnd("ctx");
  56165. $recv(aStream)._lf();
  56166. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56167. $ctx1.sendIdx["lf"]=11;
  56168. //>>excludeEnd("ctx");
  56169. $recv(aStream)._nextPutAll_("}),");
  56170. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56171. $ctx1.sendIdx["nextPutAll:"]=12;
  56172. //>>excludeEnd("ctx");
  56173. $recv(aStream)._lf();
  56174. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56175. $ctx1.sendIdx["lf"]=12;
  56176. //>>excludeEnd("ctx");
  56177. $recv(aStream)._nextPutAll_(self._jsClassNameFor_($recv(aMethod)._methodClass()));
  56178. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56179. $ctx1.sendIdx["nextPutAll:"]=13;
  56180. //>>excludeEnd("ctx");
  56181. $recv(aStream)._nextPutAll_(");");
  56182. $recv(aStream)._lf();
  56183. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56184. $ctx1.sendIdx["lf"]=13;
  56185. //>>excludeEnd("ctx");
  56186. $17=$recv(aStream)._lf();
  56187. return self;
  56188. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56189. }, function($ctx1) {$ctx1.fill(self,"exportMethod:on:",{aMethod:aMethod,aStream:aStream},$globals.Exporter)});
  56190. //>>excludeEnd("ctx");
  56191. },
  56192. //>>excludeStart("ide", pragmas.excludeIdeData);
  56193. args: ["aMethod", "aStream"],
  56194. source: "exportMethod: aMethod on: aStream\x0a\x09aStream\x0a\x09\x09nextPutAll: '$core.addMethod(';lf;\x0a\x09\x09nextPutAll: '$core.method({';lf;\x0a\x09\x09nextPutAll: 'selector: ', aMethod selector asJavascript, ',';lf;\x0a\x09\x09nextPutAll: 'protocol: ''', aMethod protocol, ''',';lf;\x0a\x09\x09nextPutAll: 'fn: ', aMethod fn compiledSource, ',';lf;\x0a\x09\x09nextPutAll: '//>>excludeStart(\x22ide\x22, pragmas.excludeIdeData);';lf;\x0a\x09\x09nextPutAll: 'args: ', aMethod arguments asJavascript, ','; lf;\x0a\x09\x09nextPutAll: 'source: ', aMethod source asJavascript, ',';lf;\x0a\x09\x09nextPutAll: 'referencedClasses: ', aMethod referencedClasses asJavascript, ',';lf;\x0a\x09\x09nextPutAll: '//>>excludeEnd(\x22ide\x22);';lf;\x0a\x09\x09nextPutAll: 'messageSends: ', aMethod messageSends asJavascript;lf;\x0a\x09\x09nextPutAll: '}),';lf;\x0a\x09\x09nextPutAll: (self jsClassNameFor: aMethod methodClass);\x0a\x09\x09nextPutAll: ');';lf;lf",
  56195. referencedClasses: [],
  56196. //>>excludeEnd("ide");
  56197. messageSends: ["nextPutAll:", "lf", ",", "asJavascript", "selector", "protocol", "compiledSource", "fn", "arguments", "source", "referencedClasses", "messageSends", "jsClassNameFor:", "methodClass"]
  56198. }),
  56199. $globals.Exporter);
  56200. $core.addMethod(
  56201. $core.method({
  56202. selector: "exportPackage:on:",
  56203. protocol: 'output',
  56204. fn: function (aPackage,aStream){
  56205. var self=this;
  56206. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56207. return $core.withContext(function($ctx1) {
  56208. //>>excludeEnd("ctx");
  56209. var $1,$2;
  56210. self._exportPackagePrologueOf_on_(aPackage,aStream);
  56211. self._exportPackageDefinitionOf_on_(aPackage,aStream);
  56212. $1=self._exportPackageTransportOf_on_(aPackage,aStream);
  56213. $recv($recv(aPackage)._sortedClasses())._do_((function(each){
  56214. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56215. return $core.withContext(function($ctx2) {
  56216. //>>excludeEnd("ctx");
  56217. self._exportDefinitionOf_on_(each,aStream);
  56218. $2=$recv(each)._ownMethods();
  56219. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56220. $ctx2.sendIdx["ownMethods"]=1;
  56221. //>>excludeEnd("ctx");
  56222. $recv($2)._do_((function(method){
  56223. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56224. return $core.withContext(function($ctx3) {
  56225. //>>excludeEnd("ctx");
  56226. return self._exportMethod_on_(method,aStream);
  56227. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56228. $ctx3.sendIdx["exportMethod:on:"]=1;
  56229. //>>excludeEnd("ctx");
  56230. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56231. }, function($ctx3) {$ctx3.fillBlock({method:method},$ctx2,2)});
  56232. //>>excludeEnd("ctx");
  56233. }));
  56234. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56235. $ctx2.sendIdx["do:"]=2;
  56236. //>>excludeEnd("ctx");
  56237. self._exportMetaDefinitionOf_on_(each,aStream);
  56238. return $recv($recv($recv(each)._class())._ownMethods())._do_((function(method){
  56239. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56240. return $core.withContext(function($ctx3) {
  56241. //>>excludeEnd("ctx");
  56242. return self._exportMethod_on_(method,aStream);
  56243. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56244. $ctx3.sendIdx["exportMethod:on:"]=2;
  56245. //>>excludeEnd("ctx");
  56246. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56247. }, function($ctx3) {$ctx3.fillBlock({method:method},$ctx2,3)});
  56248. //>>excludeEnd("ctx");
  56249. }));
  56250. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56251. $ctx2.sendIdx["do:"]=3;
  56252. //>>excludeEnd("ctx");
  56253. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56254. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  56255. //>>excludeEnd("ctx");
  56256. }));
  56257. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56258. $ctx1.sendIdx["do:"]=1;
  56259. //>>excludeEnd("ctx");
  56260. $recv(self._extensionMethodsOfPackage_(aPackage))._do_((function(each){
  56261. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56262. return $core.withContext(function($ctx2) {
  56263. //>>excludeEnd("ctx");
  56264. return self._exportMethod_on_(each,aStream);
  56265. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56266. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,4)});
  56267. //>>excludeEnd("ctx");
  56268. }));
  56269. self._exportPackageEpilogueOf_on_(aPackage,aStream);
  56270. return self;
  56271. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56272. }, function($ctx1) {$ctx1.fill(self,"exportPackage:on:",{aPackage:aPackage,aStream:aStream},$globals.Exporter)});
  56273. //>>excludeEnd("ctx");
  56274. },
  56275. //>>excludeStart("ide", pragmas.excludeIdeData);
  56276. args: ["aPackage", "aStream"],
  56277. source: "exportPackage: aPackage on: aStream\x0a\x09\x0a\x09self \x0a\x09\x09exportPackagePrologueOf: aPackage on: aStream;\x0a\x09\x09exportPackageDefinitionOf: aPackage on: aStream;\x0a\x09\x09exportPackageTransportOf: aPackage on: aStream.\x0a\x09\x0a\x09aPackage sortedClasses do: [ :each |\x0a\x09\x09self exportDefinitionOf: each on: aStream.\x0a\x09\x09each ownMethods do: [ :method |\x0a\x09\x09\x09self exportMethod: method on: aStream ].\x0a\x09\x09\x09\x0a\x09\x09self exportMetaDefinitionOf: each on: aStream.\x0a\x09\x09each class ownMethods do: [ :method |\x0a\x09\x09\x09self exportMethod: method on: aStream ] ].\x0a\x09\x09\x09\x0a\x09(self extensionMethodsOfPackage: aPackage) do: [ :each |\x0a\x09\x09self exportMethod: each on: aStream ].\x0a\x09\x09\x0a\x09self exportPackageEpilogueOf: aPackage on: aStream",
  56278. referencedClasses: [],
  56279. //>>excludeEnd("ide");
  56280. messageSends: ["exportPackagePrologueOf:on:", "exportPackageDefinitionOf:on:", "exportPackageTransportOf:on:", "do:", "sortedClasses", "exportDefinitionOf:on:", "ownMethods", "exportMethod:on:", "exportMetaDefinitionOf:on:", "class", "extensionMethodsOfPackage:", "exportPackageEpilogueOf:on:"]
  56281. }),
  56282. $globals.Exporter);
  56283. $core.addMethod(
  56284. $core.method({
  56285. selector: "exportPackageDefinitionOf:on:",
  56286. protocol: 'output',
  56287. fn: function (aPackage,aStream){
  56288. var self=this;
  56289. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56290. return $core.withContext(function($ctx1) {
  56291. //>>excludeEnd("ctx");
  56292. var $1,$2;
  56293. $recv(aStream)._nextPutAll_("$core.addPackage(");
  56294. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56295. $ctx1.sendIdx["nextPutAll:"]=1;
  56296. //>>excludeEnd("ctx");
  56297. $1=$recv("'".__comma($recv(aPackage)._name())).__comma("');");
  56298. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56299. $ctx1.sendIdx[","]=1;
  56300. //>>excludeEnd("ctx");
  56301. $recv(aStream)._nextPutAll_($1);
  56302. $2=$recv(aStream)._lf();
  56303. return self;
  56304. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56305. }, function($ctx1) {$ctx1.fill(self,"exportPackageDefinitionOf:on:",{aPackage:aPackage,aStream:aStream},$globals.Exporter)});
  56306. //>>excludeEnd("ctx");
  56307. },
  56308. //>>excludeStart("ide", pragmas.excludeIdeData);
  56309. args: ["aPackage", "aStream"],
  56310. source: "exportPackageDefinitionOf: aPackage on: aStream\x0a\x09aStream\x0a\x09\x09nextPutAll: '$core.addPackage(';\x0a\x09\x09nextPutAll: '''', aPackage name, ''');';\x0a\x09\x09lf",
  56311. referencedClasses: [],
  56312. //>>excludeEnd("ide");
  56313. messageSends: ["nextPutAll:", ",", "name", "lf"]
  56314. }),
  56315. $globals.Exporter);
  56316. $core.addMethod(
  56317. $core.method({
  56318. selector: "exportPackageEpilogueOf:on:",
  56319. protocol: 'output',
  56320. fn: function (aPackage,aStream){
  56321. var self=this;
  56322. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56323. return $core.withContext(function($ctx1) {
  56324. //>>excludeEnd("ctx");
  56325. var $1;
  56326. $recv(aStream)._nextPutAll_("})(global_smalltalk,global_nil,global__st);");
  56327. $1=$recv(aStream)._lf();
  56328. return self;
  56329. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56330. }, function($ctx1) {$ctx1.fill(self,"exportPackageEpilogueOf:on:",{aPackage:aPackage,aStream:aStream},$globals.Exporter)});
  56331. //>>excludeEnd("ctx");
  56332. },
  56333. //>>excludeStart("ide", pragmas.excludeIdeData);
  56334. args: ["aPackage", "aStream"],
  56335. source: "exportPackageEpilogueOf: aPackage on: aStream\x0a\x09aStream\x0a\x09\x09nextPutAll: '})(global_smalltalk,global_nil,global__st);';\x0a\x09\x09lf",
  56336. referencedClasses: [],
  56337. //>>excludeEnd("ide");
  56338. messageSends: ["nextPutAll:", "lf"]
  56339. }),
  56340. $globals.Exporter);
  56341. $core.addMethod(
  56342. $core.method({
  56343. selector: "exportPackagePrologueOf:on:",
  56344. protocol: 'output',
  56345. fn: function (aPackage,aStream){
  56346. var self=this;
  56347. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56348. return $core.withContext(function($ctx1) {
  56349. //>>excludeEnd("ctx");
  56350. var $1;
  56351. $recv(aStream)._nextPutAll_("(function(smalltalk,nil,_st){");
  56352. $1=$recv(aStream)._lf();
  56353. return self;
  56354. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56355. }, function($ctx1) {$ctx1.fill(self,"exportPackagePrologueOf:on:",{aPackage:aPackage,aStream:aStream},$globals.Exporter)});
  56356. //>>excludeEnd("ctx");
  56357. },
  56358. //>>excludeStart("ide", pragmas.excludeIdeData);
  56359. args: ["aPackage", "aStream"],
  56360. source: "exportPackagePrologueOf: aPackage on: aStream\x0a\x09aStream\x0a\x09\x09nextPutAll: '(function(smalltalk,nil,_st){';\x0a\x09\x09lf",
  56361. referencedClasses: [],
  56362. //>>excludeEnd("ide");
  56363. messageSends: ["nextPutAll:", "lf"]
  56364. }),
  56365. $globals.Exporter);
  56366. $core.addMethod(
  56367. $core.method({
  56368. selector: "exportPackageTransportOf:on:",
  56369. protocol: 'output',
  56370. fn: function (aPackage,aStream){
  56371. var self=this;
  56372. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56373. return $core.withContext(function($ctx1) {
  56374. //>>excludeEnd("ctx");
  56375. var $1;
  56376. $recv(aStream)._nextPutAll_("$core.packages[");
  56377. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56378. $ctx1.sendIdx["nextPutAll:"]=1;
  56379. //>>excludeEnd("ctx");
  56380. $recv(aStream)._nextPutAll_($recv($recv(aPackage)._name())._asJavascript());
  56381. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56382. $ctx1.sendIdx["nextPutAll:"]=2;
  56383. //>>excludeEnd("ctx");
  56384. $recv(aStream)._nextPutAll_("].transport = ");
  56385. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56386. $ctx1.sendIdx["nextPutAll:"]=3;
  56387. //>>excludeEnd("ctx");
  56388. $recv(aStream)._nextPutAll_($recv($recv(aPackage)._transport())._asJSONString());
  56389. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56390. $ctx1.sendIdx["nextPutAll:"]=4;
  56391. //>>excludeEnd("ctx");
  56392. $recv(aStream)._nextPutAll_(";");
  56393. $1=$recv(aStream)._lf();
  56394. return self;
  56395. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56396. }, function($ctx1) {$ctx1.fill(self,"exportPackageTransportOf:on:",{aPackage:aPackage,aStream:aStream},$globals.Exporter)});
  56397. //>>excludeEnd("ctx");
  56398. },
  56399. //>>excludeStart("ide", pragmas.excludeIdeData);
  56400. args: ["aPackage", "aStream"],
  56401. source: "exportPackageTransportOf: aPackage on: aStream\x0a\x09aStream\x0a\x09\x09nextPutAll: '$core.packages[';\x0a\x09\x09nextPutAll: aPackage name asJavascript;\x0a\x09\x09nextPutAll: '].transport = ';\x0a\x09\x09nextPutAll: aPackage transport asJSONString;\x0a\x09\x09nextPutAll: ';';\x0a\x09\x09lf",
  56402. referencedClasses: [],
  56403. //>>excludeEnd("ide");
  56404. messageSends: ["nextPutAll:", "asJavascript", "name", "asJSONString", "transport", "lf"]
  56405. }),
  56406. $globals.Exporter);
  56407. $core.addMethod(
  56408. $core.method({
  56409. selector: "jsClassNameFor:",
  56410. protocol: 'convenience',
  56411. fn: function (aClass){
  56412. var self=this;
  56413. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56414. return $core.withContext(function($ctx1) {
  56415. //>>excludeEnd("ctx");
  56416. var $2,$1,$receiver;
  56417. $2=$recv(aClass)._isMetaclass();
  56418. if($core.assert($2)){
  56419. $1=$recv(self._jsClassNameFor_($recv(aClass)._instanceClass())).__comma(".klass");
  56420. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56421. $ctx1.sendIdx[","]=1;
  56422. //>>excludeEnd("ctx");
  56423. } else {
  56424. if(($receiver = aClass) == null || $receiver.isNil){
  56425. $1="null";
  56426. } else {
  56427. $1="$globals.".__comma($recv(aClass)._name());
  56428. };
  56429. };
  56430. return $1;
  56431. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56432. }, function($ctx1) {$ctx1.fill(self,"jsClassNameFor:",{aClass:aClass},$globals.Exporter)});
  56433. //>>excludeEnd("ctx");
  56434. },
  56435. //>>excludeStart("ide", pragmas.excludeIdeData);
  56436. args: ["aClass"],
  56437. source: "jsClassNameFor: aClass\x0a\x09^ aClass isMetaclass\x0a\x09\x09ifTrue: [ (self jsClassNameFor: aClass instanceClass), '.klass' ]\x0a\x09\x09ifFalse: [\x0a\x09\x09\x09aClass\x0a\x09\x09\x09\x09ifNil: [ 'null' ]\x0a\x09\x09\x09\x09ifNotNil: [ '$globals.', aClass name ] ]",
  56438. referencedClasses: [],
  56439. //>>excludeEnd("ide");
  56440. messageSends: ["ifTrue:ifFalse:", "isMetaclass", ",", "jsClassNameFor:", "instanceClass", "ifNil:ifNotNil:", "name"]
  56441. }),
  56442. $globals.Exporter);
  56443. $core.addMethod(
  56444. $core.method({
  56445. selector: "ownMethodsOfClass:",
  56446. protocol: 'accessing',
  56447. fn: function (aClass){
  56448. var self=this;
  56449. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56450. return $core.withContext(function($ctx1) {
  56451. //>>excludeEnd("ctx");
  56452. var $2,$1;
  56453. $1=$recv($recv($recv($recv(aClass)._methodDictionary())._values())._sorted_((function(a,b){
  56454. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56455. return $core.withContext(function($ctx2) {
  56456. //>>excludeEnd("ctx");
  56457. $2=$recv(a)._selector();
  56458. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56459. $ctx2.sendIdx["selector"]=1;
  56460. //>>excludeEnd("ctx");
  56461. return $recv($2).__lt_eq($recv(b)._selector());
  56462. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56463. }, function($ctx2) {$ctx2.fillBlock({a:a,b:b},$ctx1,1)});
  56464. //>>excludeEnd("ctx");
  56465. })))._reject_((function(each){
  56466. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56467. return $core.withContext(function($ctx2) {
  56468. //>>excludeEnd("ctx");
  56469. return $recv($recv(each)._protocol())._match_("^\x5c*");
  56470. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56471. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,2)});
  56472. //>>excludeEnd("ctx");
  56473. }));
  56474. return $1;
  56475. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56476. }, function($ctx1) {$ctx1.fill(self,"ownMethodsOfClass:",{aClass:aClass},$globals.Exporter)});
  56477. //>>excludeEnd("ctx");
  56478. },
  56479. //>>excludeStart("ide", pragmas.excludeIdeData);
  56480. args: ["aClass"],
  56481. 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*') ]",
  56482. referencedClasses: [],
  56483. //>>excludeEnd("ide");
  56484. messageSends: ["reject:", "sorted:", "values", "methodDictionary", "<=", "selector", "match:", "protocol"]
  56485. }),
  56486. $globals.Exporter);
  56487. $core.addMethod(
  56488. $core.method({
  56489. selector: "ownMethodsOfMetaClass:",
  56490. protocol: 'accessing',
  56491. fn: function (aClass){
  56492. var self=this;
  56493. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56494. return $core.withContext(function($ctx1) {
  56495. //>>excludeEnd("ctx");
  56496. var $1;
  56497. $1=self._ownMethodsOfClass_($recv(aClass)._class());
  56498. return $1;
  56499. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56500. }, function($ctx1) {$ctx1.fill(self,"ownMethodsOfMetaClass:",{aClass:aClass},$globals.Exporter)});
  56501. //>>excludeEnd("ctx");
  56502. },
  56503. //>>excludeStart("ide", pragmas.excludeIdeData);
  56504. args: ["aClass"],
  56505. source: "ownMethodsOfMetaClass: aClass\x0a\x09\x22Issue #143: sort methods alphabetically\x22\x0a\x0a\x09^ self ownMethodsOfClass: aClass class",
  56506. referencedClasses: [],
  56507. //>>excludeEnd("ide");
  56508. messageSends: ["ownMethodsOfClass:", "class"]
  56509. }),
  56510. $globals.Exporter);
  56511. $core.addClass('AmdExporter', $globals.Exporter, ['namespace'], 'Kernel-ImportExport');
  56512. //>>excludeStart("ide", pragmas.excludeIdeData);
  56513. $globals.AmdExporter.comment="I am used to export Packages in an AMD (Asynchronous Module Definition) JavaScript format.";
  56514. //>>excludeEnd("ide");
  56515. $core.addMethod(
  56516. $core.method({
  56517. selector: "amdNamesOfPackages:",
  56518. protocol: 'private',
  56519. fn: function (anArray){
  56520. var self=this;
  56521. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56522. return $core.withContext(function($ctx1) {
  56523. //>>excludeEnd("ctx");
  56524. var $2,$1;
  56525. $1=$recv($recv(anArray)._select_((function(each){
  56526. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56527. return $core.withContext(function($ctx2) {
  56528. //>>excludeEnd("ctx");
  56529. $2=self._amdNamespaceOfPackage_(each);
  56530. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56531. $ctx2.sendIdx["amdNamespaceOfPackage:"]=1;
  56532. //>>excludeEnd("ctx");
  56533. return $recv($2)._notNil();
  56534. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56535. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  56536. //>>excludeEnd("ctx");
  56537. })))._collect_((function(each){
  56538. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56539. return $core.withContext(function($ctx2) {
  56540. //>>excludeEnd("ctx");
  56541. return $recv($recv(self._amdNamespaceOfPackage_(each)).__comma("/")).__comma($recv(each)._name());
  56542. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56543. $ctx2.sendIdx[","]=1;
  56544. //>>excludeEnd("ctx");
  56545. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56546. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,2)});
  56547. //>>excludeEnd("ctx");
  56548. }));
  56549. return $1;
  56550. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56551. }, function($ctx1) {$ctx1.fill(self,"amdNamesOfPackages:",{anArray:anArray},$globals.AmdExporter)});
  56552. //>>excludeEnd("ctx");
  56553. },
  56554. //>>excludeStart("ide", pragmas.excludeIdeData);
  56555. args: ["anArray"],
  56556. source: "amdNamesOfPackages: anArray\x0a\x09^ (anArray\x0a\x09\x09select: [ :each | (self amdNamespaceOfPackage: each) notNil ])\x0a\x09\x09collect: [ :each | (self amdNamespaceOfPackage: each), '/', each name ]",
  56557. referencedClasses: [],
  56558. //>>excludeEnd("ide");
  56559. messageSends: ["collect:", "select:", "notNil", "amdNamespaceOfPackage:", ",", "name"]
  56560. }),
  56561. $globals.AmdExporter);
  56562. $core.addMethod(
  56563. $core.method({
  56564. selector: "amdNamespaceOfPackage:",
  56565. protocol: 'private',
  56566. fn: function (aPackage){
  56567. var self=this;
  56568. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56569. return $core.withContext(function($ctx1) {
  56570. //>>excludeEnd("ctx");
  56571. var $4,$3,$2,$1;
  56572. $4=$recv(aPackage)._transport();
  56573. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56574. $ctx1.sendIdx["transport"]=1;
  56575. //>>excludeEnd("ctx");
  56576. $3=$recv($4)._type();
  56577. $2=$recv($3).__eq("amd");
  56578. if($core.assert($2)){
  56579. $1=$recv($recv(aPackage)._transport())._namespace();
  56580. } else {
  56581. $1=nil;
  56582. };
  56583. return $1;
  56584. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56585. }, function($ctx1) {$ctx1.fill(self,"amdNamespaceOfPackage:",{aPackage:aPackage},$globals.AmdExporter)});
  56586. //>>excludeEnd("ctx");
  56587. },
  56588. //>>excludeStart("ide", pragmas.excludeIdeData);
  56589. args: ["aPackage"],
  56590. source: "amdNamespaceOfPackage: aPackage\x0a\x09^ (aPackage transport type = 'amd')\x0a\x09\x09ifTrue: [ aPackage transport namespace ]\x0a\x09\x09ifFalse: [ nil ]",
  56591. referencedClasses: [],
  56592. //>>excludeEnd("ide");
  56593. messageSends: ["ifTrue:ifFalse:", "=", "type", "transport", "namespace"]
  56594. }),
  56595. $globals.AmdExporter);
  56596. $core.addMethod(
  56597. $core.method({
  56598. selector: "exportPackageEpilogueOf:on:",
  56599. protocol: 'output',
  56600. fn: function (aPackage,aStream){
  56601. var self=this;
  56602. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56603. return $core.withContext(function($ctx1) {
  56604. //>>excludeEnd("ctx");
  56605. var $1;
  56606. $recv(aStream)._nextPutAll_("});");
  56607. $1=$recv(aStream)._lf();
  56608. return self;
  56609. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56610. }, function($ctx1) {$ctx1.fill(self,"exportPackageEpilogueOf:on:",{aPackage:aPackage,aStream:aStream},$globals.AmdExporter)});
  56611. //>>excludeEnd("ctx");
  56612. },
  56613. //>>excludeStart("ide", pragmas.excludeIdeData);
  56614. args: ["aPackage", "aStream"],
  56615. source: "exportPackageEpilogueOf: aPackage on: aStream\x0a\x09aStream\x0a\x09\x09nextPutAll: '});';\x0a\x09\x09lf",
  56616. referencedClasses: [],
  56617. //>>excludeEnd("ide");
  56618. messageSends: ["nextPutAll:", "lf"]
  56619. }),
  56620. $globals.AmdExporter);
  56621. $core.addMethod(
  56622. $core.method({
  56623. selector: "exportPackagePrologueOf:on:",
  56624. protocol: 'output',
  56625. fn: function (aPackage,aStream){
  56626. var self=this;
  56627. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56628. return $core.withContext(function($ctx1) {
  56629. //>>excludeEnd("ctx");
  56630. var $1;
  56631. $recv(aStream)._nextPutAll_("define(\x22");
  56632. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56633. $ctx1.sendIdx["nextPutAll:"]=1;
  56634. //>>excludeEnd("ctx");
  56635. $recv(aStream)._nextPutAll_(self._amdNamespaceOfPackage_(aPackage));
  56636. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56637. $ctx1.sendIdx["nextPutAll:"]=2;
  56638. //>>excludeEnd("ctx");
  56639. $recv(aStream)._nextPutAll_("/");
  56640. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56641. $ctx1.sendIdx["nextPutAll:"]=3;
  56642. //>>excludeEnd("ctx");
  56643. $recv(aStream)._nextPutAll_($recv(aPackage)._name());
  56644. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56645. $ctx1.sendIdx["nextPutAll:"]=4;
  56646. //>>excludeEnd("ctx");
  56647. $recv(aStream)._nextPutAll_("\x22, ");
  56648. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56649. $ctx1.sendIdx["nextPutAll:"]=5;
  56650. //>>excludeEnd("ctx");
  56651. $recv(aStream)._nextPutAll_($recv(["amber/boot"].__comma(self._amdNamesOfPackages_($recv(aPackage)._loadDependencies())))._asJavascript());
  56652. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56653. $ctx1.sendIdx["nextPutAll:"]=6;
  56654. //>>excludeEnd("ctx");
  56655. $recv(aStream)._nextPutAll_(", function($boot){");
  56656. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56657. $ctx1.sendIdx["nextPutAll:"]=7;
  56658. //>>excludeEnd("ctx");
  56659. $recv(aStream)._lf();
  56660. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56661. $ctx1.sendIdx["lf"]=1;
  56662. //>>excludeEnd("ctx");
  56663. $recv(aStream)._nextPutAll_("var $core=$boot.api,nil=$boot.nil,$recv=$boot.asReceiver,$globals=$boot.globals;");
  56664. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56665. $ctx1.sendIdx["nextPutAll:"]=8;
  56666. //>>excludeEnd("ctx");
  56667. $recv(aStream)._lf();
  56668. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56669. $ctx1.sendIdx["lf"]=2;
  56670. //>>excludeEnd("ctx");
  56671. $recv(aStream)._nextPutAll_("var smalltalk=$core,_st=$recv,globals=$globals;");
  56672. $1=$recv(aStream)._lf();
  56673. return self;
  56674. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56675. }, function($ctx1) {$ctx1.fill(self,"exportPackagePrologueOf:on:",{aPackage:aPackage,aStream:aStream},$globals.AmdExporter)});
  56676. //>>excludeEnd("ctx");
  56677. },
  56678. //>>excludeStart("ide", pragmas.excludeIdeData);
  56679. args: ["aPackage", "aStream"],
  56680. source: "exportPackagePrologueOf: aPackage on: aStream\x0a\x09aStream\x0a\x09\x09nextPutAll: 'define(\x22';\x0a\x09\x09nextPutAll: (self amdNamespaceOfPackage: aPackage);\x0a\x09\x09nextPutAll: '/';\x0a\x09\x09nextPutAll: aPackage name;\x0a\x09\x09nextPutAll: '\x22, ';\x0a\x09\x09nextPutAll: (#('amber/boot'), (self amdNamesOfPackages: aPackage loadDependencies)) asJavascript;\x0a\x09\x09nextPutAll: ', function($boot){';\x0a\x09\x09lf;\x0a\x09\x09nextPutAll: 'var $core=$boot.api,nil=$boot.nil,$recv=$boot.asReceiver,$globals=$boot.globals;';\x0a\x09\x09lf;\x0a\x09\x09nextPutAll: 'var smalltalk=$core,_st=$recv,globals=$globals;';\x0a\x09\x09lf",
  56681. referencedClasses: [],
  56682. //>>excludeEnd("ide");
  56683. messageSends: ["nextPutAll:", "amdNamespaceOfPackage:", "name", "asJavascript", ",", "amdNamesOfPackages:", "loadDependencies", "lf"]
  56684. }),
  56685. $globals.AmdExporter);
  56686. $core.addClass('ChunkParser', $globals.Object, ['stream', 'last'], 'Kernel-ImportExport');
  56687. //>>excludeStart("ide", pragmas.excludeIdeData);
  56688. $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";
  56689. //>>excludeEnd("ide");
  56690. $core.addMethod(
  56691. $core.method({
  56692. selector: "last",
  56693. protocol: 'accessing',
  56694. fn: function (){
  56695. var self=this;
  56696. var $1;
  56697. $1=self["@last"];
  56698. return $1;
  56699. },
  56700. //>>excludeStart("ide", pragmas.excludeIdeData);
  56701. args: [],
  56702. source: "last\x0a\x09^ last",
  56703. referencedClasses: [],
  56704. //>>excludeEnd("ide");
  56705. messageSends: []
  56706. }),
  56707. $globals.ChunkParser);
  56708. $core.addMethod(
  56709. $core.method({
  56710. selector: "nextChunk",
  56711. protocol: 'reading',
  56712. fn: function (){
  56713. var self=this;
  56714. var char,result,chunk;
  56715. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56716. return $core.withContext(function($ctx1) {
  56717. //>>excludeEnd("ctx");
  56718. var $1,$2,$3,$4;
  56719. var $early={};
  56720. try {
  56721. result=""._writeStream();
  56722. $recv((function(){
  56723. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56724. return $core.withContext(function($ctx2) {
  56725. //>>excludeEnd("ctx");
  56726. char=$recv(self["@stream"])._next();
  56727. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56728. $ctx2.sendIdx["next"]=1;
  56729. //>>excludeEnd("ctx");
  56730. char;
  56731. return $recv(char)._notNil();
  56732. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56733. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  56734. //>>excludeEnd("ctx");
  56735. }))._whileTrue_((function(){
  56736. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56737. return $core.withContext(function($ctx2) {
  56738. //>>excludeEnd("ctx");
  56739. $1=$recv(char).__eq("!");
  56740. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56741. $ctx2.sendIdx["="]=1;
  56742. //>>excludeEnd("ctx");
  56743. if($core.assert($1)){
  56744. $2=$recv($recv(self["@stream"])._peek()).__eq("!");
  56745. if($core.assert($2)){
  56746. $recv(self["@stream"])._next();
  56747. } else {
  56748. self["@last"]=$recv($recv(result)._contents())._trimBoth();
  56749. $3=self["@last"];
  56750. throw $early=[$3];
  56751. };
  56752. };
  56753. return $recv(result)._nextPut_(char);
  56754. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56755. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
  56756. //>>excludeEnd("ctx");
  56757. }));
  56758. self["@last"]=nil;
  56759. $4=self["@last"];
  56760. return $4;
  56761. }
  56762. catch(e) {if(e===$early)return e[0]; throw e}
  56763. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56764. }, function($ctx1) {$ctx1.fill(self,"nextChunk",{char:char,result:result,chunk:chunk},$globals.ChunkParser)});
  56765. //>>excludeEnd("ctx");
  56766. },
  56767. //>>excludeStart("ide", pragmas.excludeIdeData);
  56768. args: [],
  56769. 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",
  56770. referencedClasses: [],
  56771. //>>excludeEnd("ide");
  56772. messageSends: ["writeStream", "whileTrue:", "next", "notNil", "ifTrue:", "=", "ifTrue:ifFalse:", "peek", "trimBoth", "contents", "nextPut:"]
  56773. }),
  56774. $globals.ChunkParser);
  56775. $core.addMethod(
  56776. $core.method({
  56777. selector: "stream:",
  56778. protocol: 'accessing',
  56779. fn: function (aStream){
  56780. var self=this;
  56781. self["@stream"]=aStream;
  56782. return self;
  56783. },
  56784. //>>excludeStart("ide", pragmas.excludeIdeData);
  56785. args: ["aStream"],
  56786. source: "stream: aStream\x0a\x09stream := aStream",
  56787. referencedClasses: [],
  56788. //>>excludeEnd("ide");
  56789. messageSends: []
  56790. }),
  56791. $globals.ChunkParser);
  56792. $core.addMethod(
  56793. $core.method({
  56794. selector: "on:",
  56795. protocol: 'instance creation',
  56796. fn: function (aStream){
  56797. var self=this;
  56798. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56799. return $core.withContext(function($ctx1) {
  56800. //>>excludeEnd("ctx");
  56801. var $1;
  56802. $1=$recv(self._new())._stream_(aStream);
  56803. return $1;
  56804. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56805. }, function($ctx1) {$ctx1.fill(self,"on:",{aStream:aStream},$globals.ChunkParser.klass)});
  56806. //>>excludeEnd("ctx");
  56807. },
  56808. //>>excludeStart("ide", pragmas.excludeIdeData);
  56809. args: ["aStream"],
  56810. source: "on: aStream\x0a\x09^ self new stream: aStream",
  56811. referencedClasses: [],
  56812. //>>excludeEnd("ide");
  56813. messageSends: ["stream:", "new"]
  56814. }),
  56815. $globals.ChunkParser.klass);
  56816. $core.addClass('ExportMethodProtocol', $globals.Object, ['name', 'theClass'], 'Kernel-ImportExport');
  56817. //>>excludeStart("ide", pragmas.excludeIdeData);
  56818. $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.";
  56819. //>>excludeEnd("ide");
  56820. $core.addMethod(
  56821. $core.method({
  56822. selector: "methods",
  56823. protocol: 'accessing',
  56824. fn: function (){
  56825. var self=this;
  56826. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56827. return $core.withContext(function($ctx1) {
  56828. //>>excludeEnd("ctx");
  56829. var $2,$1;
  56830. $1=$recv($recv(self._theClass())._methodsInProtocol_(self._name()))._sorted_((function(a,b){
  56831. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56832. return $core.withContext(function($ctx2) {
  56833. //>>excludeEnd("ctx");
  56834. $2=$recv(a)._selector();
  56835. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56836. $ctx2.sendIdx["selector"]=1;
  56837. //>>excludeEnd("ctx");
  56838. return $recv($2).__lt_eq($recv(b)._selector());
  56839. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56840. }, function($ctx2) {$ctx2.fillBlock({a:a,b:b},$ctx1,1)});
  56841. //>>excludeEnd("ctx");
  56842. }));
  56843. return $1;
  56844. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56845. }, function($ctx1) {$ctx1.fill(self,"methods",{},$globals.ExportMethodProtocol)});
  56846. //>>excludeEnd("ctx");
  56847. },
  56848. //>>excludeStart("ide", pragmas.excludeIdeData);
  56849. args: [],
  56850. source: "methods\x0a\x09^ (self theClass methodsInProtocol: self name)\x0a\x09\x09sorted: [ :a :b | a selector <= b selector ]",
  56851. referencedClasses: [],
  56852. //>>excludeEnd("ide");
  56853. messageSends: ["sorted:", "methodsInProtocol:", "theClass", "name", "<=", "selector"]
  56854. }),
  56855. $globals.ExportMethodProtocol);
  56856. $core.addMethod(
  56857. $core.method({
  56858. selector: "name",
  56859. protocol: 'accessing',
  56860. fn: function (){
  56861. var self=this;
  56862. var $1;
  56863. $1=self["@name"];
  56864. return $1;
  56865. },
  56866. //>>excludeStart("ide", pragmas.excludeIdeData);
  56867. args: [],
  56868. source: "name\x0a\x09^ name",
  56869. referencedClasses: [],
  56870. //>>excludeEnd("ide");
  56871. messageSends: []
  56872. }),
  56873. $globals.ExportMethodProtocol);
  56874. $core.addMethod(
  56875. $core.method({
  56876. selector: "name:",
  56877. protocol: 'accessing',
  56878. fn: function (aString){
  56879. var self=this;
  56880. self["@name"]=aString;
  56881. return self;
  56882. },
  56883. //>>excludeStart("ide", pragmas.excludeIdeData);
  56884. args: ["aString"],
  56885. source: "name: aString\x0a\x09name := aString",
  56886. referencedClasses: [],
  56887. //>>excludeEnd("ide");
  56888. messageSends: []
  56889. }),
  56890. $globals.ExportMethodProtocol);
  56891. $core.addMethod(
  56892. $core.method({
  56893. selector: "theClass",
  56894. protocol: 'accessing',
  56895. fn: function (){
  56896. var self=this;
  56897. var $1;
  56898. $1=self["@theClass"];
  56899. return $1;
  56900. },
  56901. //>>excludeStart("ide", pragmas.excludeIdeData);
  56902. args: [],
  56903. source: "theClass\x0a\x09^ theClass",
  56904. referencedClasses: [],
  56905. //>>excludeEnd("ide");
  56906. messageSends: []
  56907. }),
  56908. $globals.ExportMethodProtocol);
  56909. $core.addMethod(
  56910. $core.method({
  56911. selector: "theClass:",
  56912. protocol: 'accessing',
  56913. fn: function (aClass){
  56914. var self=this;
  56915. self["@theClass"]=aClass;
  56916. return self;
  56917. },
  56918. //>>excludeStart("ide", pragmas.excludeIdeData);
  56919. args: ["aClass"],
  56920. source: "theClass: aClass\x0a\x09theClass := aClass",
  56921. referencedClasses: [],
  56922. //>>excludeEnd("ide");
  56923. messageSends: []
  56924. }),
  56925. $globals.ExportMethodProtocol);
  56926. $core.addMethod(
  56927. $core.method({
  56928. selector: "name:theClass:",
  56929. protocol: 'instance creation',
  56930. fn: function (aString,aClass){
  56931. var self=this;
  56932. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56933. return $core.withContext(function($ctx1) {
  56934. //>>excludeEnd("ctx");
  56935. var $2,$3,$1;
  56936. $2=self._new();
  56937. $recv($2)._name_(aString);
  56938. $recv($2)._theClass_(aClass);
  56939. $3=$recv($2)._yourself();
  56940. $1=$3;
  56941. return $1;
  56942. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56943. }, function($ctx1) {$ctx1.fill(self,"name:theClass:",{aString:aString,aClass:aClass},$globals.ExportMethodProtocol.klass)});
  56944. //>>excludeEnd("ctx");
  56945. },
  56946. //>>excludeStart("ide", pragmas.excludeIdeData);
  56947. args: ["aString", "aClass"],
  56948. source: "name: aString theClass: aClass\x0a\x09^ self new\x0a\x09\x09name: aString;\x0a\x09\x09theClass: aClass;\x0a\x09\x09yourself",
  56949. referencedClasses: [],
  56950. //>>excludeEnd("ide");
  56951. messageSends: ["name:", "new", "theClass:", "yourself"]
  56952. }),
  56953. $globals.ExportMethodProtocol.klass);
  56954. $core.addClass('Importer', $globals.Object, ['lastSection', 'lastChunk'], 'Kernel-ImportExport');
  56955. //>>excludeStart("ide", pragmas.excludeIdeData);
  56956. $globals.Importer.comment="I can import Amber code from a string in the chunk format.\x0a\x0a## API\x0a\x0a Importer new import: aString";
  56957. //>>excludeEnd("ide");
  56958. $core.addMethod(
  56959. $core.method({
  56960. selector: "import:",
  56961. protocol: 'fileIn',
  56962. fn: function (aStream){
  56963. var self=this;
  56964. var chunk,result,parser,lastEmpty;
  56965. function $ChunkParser(){return $globals.ChunkParser||(typeof ChunkParser=="undefined"?nil:ChunkParser)}
  56966. function $Compiler(){return $globals.Compiler||(typeof Compiler=="undefined"?nil:Compiler)}
  56967. function $Error(){return $globals.Error||(typeof Error=="undefined"?nil:Error)}
  56968. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56969. return $core.withContext(function($ctx1) {
  56970. //>>excludeEnd("ctx");
  56971. var $1,$2;
  56972. parser=$recv($ChunkParser())._on_(aStream);
  56973. lastEmpty=false;
  56974. self["@lastSection"]="n/a, not started";
  56975. self["@lastChunk"]=nil;
  56976. $recv((function(){
  56977. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56978. return $core.withContext(function($ctx2) {
  56979. //>>excludeEnd("ctx");
  56980. $recv((function(){
  56981. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56982. return $core.withContext(function($ctx3) {
  56983. //>>excludeEnd("ctx");
  56984. chunk=$recv(parser)._nextChunk();
  56985. chunk;
  56986. return $recv(chunk)._isNil();
  56987. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56988. }, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)});
  56989. //>>excludeEnd("ctx");
  56990. }))._whileFalse_((function(){
  56991. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  56992. return $core.withContext(function($ctx3) {
  56993. //>>excludeEnd("ctx");
  56994. $1=$recv(chunk)._isEmpty();
  56995. if($core.assert($1)){
  56996. lastEmpty=true;
  56997. return lastEmpty;
  56998. } else {
  56999. self["@lastSection"]=chunk;
  57000. self["@lastSection"];
  57001. result=$recv($recv($Compiler())._new())._evaluateExpression_(chunk);
  57002. result;
  57003. $2=lastEmpty;
  57004. if($core.assert($2)){
  57005. lastEmpty=false;
  57006. lastEmpty;
  57007. return $recv(result)._scanFrom_(parser);
  57008. };
  57009. };
  57010. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57011. }, function($ctx3) {$ctx3.fillBlock({},$ctx2,3)});
  57012. //>>excludeEnd("ctx");
  57013. }));
  57014. self["@lastSection"]="n/a, finished";
  57015. return self["@lastSection"];
  57016. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57017. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  57018. //>>excludeEnd("ctx");
  57019. }))._on_do_($Error(),(function(e){
  57020. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57021. return $core.withContext(function($ctx2) {
  57022. //>>excludeEnd("ctx");
  57023. self["@lastChunk"]=$recv(parser)._last();
  57024. self["@lastChunk"];
  57025. return $recv(e)._signal();
  57026. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57027. }, function($ctx2) {$ctx2.fillBlock({e:e},$ctx1,7)});
  57028. //>>excludeEnd("ctx");
  57029. }));
  57030. return self;
  57031. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57032. }, function($ctx1) {$ctx1.fill(self,"import:",{aStream:aStream,chunk:chunk,result:result,parser:parser,lastEmpty:lastEmpty},$globals.Importer)});
  57033. //>>excludeEnd("ctx");
  57034. },
  57035. //>>excludeStart("ide", pragmas.excludeIdeData);
  57036. args: ["aStream"],
  57037. 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 isEmpty\x0a\x09\x09\x09ifTrue: [ lastEmpty := true ]\x0a\x09\x09\x09ifFalse: [\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 signal ].",
  57038. referencedClasses: ["ChunkParser", "Compiler", "Error"],
  57039. //>>excludeEnd("ide");
  57040. messageSends: ["on:", "on:do:", "whileFalse:", "nextChunk", "isNil", "ifTrue:ifFalse:", "isEmpty", "evaluateExpression:", "new", "ifTrue:", "scanFrom:", "last", "signal"]
  57041. }),
  57042. $globals.Importer);
  57043. $core.addMethod(
  57044. $core.method({
  57045. selector: "lastChunk",
  57046. protocol: 'accessing',
  57047. fn: function (){
  57048. var self=this;
  57049. var $1;
  57050. $1=self["@lastChunk"];
  57051. return $1;
  57052. },
  57053. //>>excludeStart("ide", pragmas.excludeIdeData);
  57054. args: [],
  57055. source: "lastChunk\x0a\x09^ lastChunk",
  57056. referencedClasses: [],
  57057. //>>excludeEnd("ide");
  57058. messageSends: []
  57059. }),
  57060. $globals.Importer);
  57061. $core.addMethod(
  57062. $core.method({
  57063. selector: "lastSection",
  57064. protocol: 'accessing',
  57065. fn: function (){
  57066. var self=this;
  57067. var $1;
  57068. $1=self["@lastSection"];
  57069. return $1;
  57070. },
  57071. //>>excludeStart("ide", pragmas.excludeIdeData);
  57072. args: [],
  57073. source: "lastSection\x0a\x09^ lastSection",
  57074. referencedClasses: [],
  57075. //>>excludeEnd("ide");
  57076. messageSends: []
  57077. }),
  57078. $globals.Importer);
  57079. $core.addClass('PackageHandler', $globals.InterfacingObject, [], 'Kernel-ImportExport');
  57080. //>>excludeStart("ide", pragmas.excludeIdeData);
  57081. $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.";
  57082. //>>excludeEnd("ide");
  57083. $core.addMethod(
  57084. $core.method({
  57085. selector: "ajaxPutAt:data:onSuccess:onError:",
  57086. protocol: 'private',
  57087. fn: function (aURL,aString,aBlock,anotherBlock){
  57088. var self=this;
  57089. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57090. return $core.withContext(function($ctx1) {
  57091. //>>excludeEnd("ctx");
  57092. self._ajax_($globals.HashedCollection._newFromPairs_(["url",aURL,"type","PUT","data",aString,"contentType","text/plain;charset=UTF-8","success",aBlock,"error",anotherBlock]));
  57093. return self;
  57094. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57095. }, function($ctx1) {$ctx1.fill(self,"ajaxPutAt:data:onSuccess:onError:",{aURL:aURL,aString:aString,aBlock:aBlock,anotherBlock:anotherBlock},$globals.PackageHandler)});
  57096. //>>excludeEnd("ctx");
  57097. },
  57098. //>>excludeStart("ide", pragmas.excludeIdeData);
  57099. args: ["aURL", "aString", "aBlock", "anotherBlock"],
  57100. source: "ajaxPutAt: aURL data: aString onSuccess: aBlock onError: anotherBlock\x0a\x09self\x0a\x09\x09ajax: #{\x0a\x09\x09\x09'url' -> aURL.\x0a\x09\x09\x09'type' -> 'PUT'.\x0a\x09\x09\x09'data' -> aString.\x0a\x09\x09\x09'contentType' -> 'text/plain;charset=UTF-8'.\x0a\x09\x09\x09'success' -> aBlock.\x0a\x09\x09\x09'error' -> anotherBlock\x0a\x09\x09}",
  57101. referencedClasses: [],
  57102. //>>excludeEnd("ide");
  57103. messageSends: ["ajax:"]
  57104. }),
  57105. $globals.PackageHandler);
  57106. $core.addMethod(
  57107. $core.method({
  57108. selector: "chunkContentsFor:",
  57109. protocol: 'accessing',
  57110. fn: function (aPackage){
  57111. var self=this;
  57112. function $String(){return $globals.String||(typeof String=="undefined"?nil:String)}
  57113. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57114. return $core.withContext(function($ctx1) {
  57115. //>>excludeEnd("ctx");
  57116. var $1;
  57117. $1=$recv($String())._streamContents_((function(str){
  57118. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57119. return $core.withContext(function($ctx2) {
  57120. //>>excludeEnd("ctx");
  57121. return $recv(self._chunkExporter())._exportPackage_on_(aPackage,str);
  57122. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57123. }, function($ctx2) {$ctx2.fillBlock({str:str},$ctx1,1)});
  57124. //>>excludeEnd("ctx");
  57125. }));
  57126. return $1;
  57127. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57128. }, function($ctx1) {$ctx1.fill(self,"chunkContentsFor:",{aPackage:aPackage},$globals.PackageHandler)});
  57129. //>>excludeEnd("ctx");
  57130. },
  57131. //>>excludeStart("ide", pragmas.excludeIdeData);
  57132. args: ["aPackage"],
  57133. source: "chunkContentsFor: aPackage\x0a\x09^ String streamContents: [ :str |\x0a\x09\x09self chunkExporter exportPackage: aPackage on: str ]",
  57134. referencedClasses: ["String"],
  57135. //>>excludeEnd("ide");
  57136. messageSends: ["streamContents:", "exportPackage:on:", "chunkExporter"]
  57137. }),
  57138. $globals.PackageHandler);
  57139. $core.addMethod(
  57140. $core.method({
  57141. selector: "chunkExporter",
  57142. protocol: 'factory',
  57143. fn: function (){
  57144. var self=this;
  57145. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57146. return $core.withContext(function($ctx1) {
  57147. //>>excludeEnd("ctx");
  57148. var $1;
  57149. $1=$recv(self._chunkExporterClass())._new();
  57150. return $1;
  57151. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57152. }, function($ctx1) {$ctx1.fill(self,"chunkExporter",{},$globals.PackageHandler)});
  57153. //>>excludeEnd("ctx");
  57154. },
  57155. //>>excludeStart("ide", pragmas.excludeIdeData);
  57156. args: [],
  57157. source: "chunkExporter\x0a\x09^ self chunkExporterClass new",
  57158. referencedClasses: [],
  57159. //>>excludeEnd("ide");
  57160. messageSends: ["new", "chunkExporterClass"]
  57161. }),
  57162. $globals.PackageHandler);
  57163. $core.addMethod(
  57164. $core.method({
  57165. selector: "chunkExporterClass",
  57166. protocol: 'accessing',
  57167. fn: function (){
  57168. var self=this;
  57169. function $ChunkExporter(){return $globals.ChunkExporter||(typeof ChunkExporter=="undefined"?nil:ChunkExporter)}
  57170. return $ChunkExporter();
  57171. },
  57172. //>>excludeStart("ide", pragmas.excludeIdeData);
  57173. args: [],
  57174. source: "chunkExporterClass\x0a\x09^ ChunkExporter",
  57175. referencedClasses: ["ChunkExporter"],
  57176. //>>excludeEnd("ide");
  57177. messageSends: []
  57178. }),
  57179. $globals.PackageHandler);
  57180. $core.addMethod(
  57181. $core.method({
  57182. selector: "commit:",
  57183. protocol: 'committing',
  57184. fn: function (aPackage){
  57185. var self=this;
  57186. function $PackageCommitError(){return $globals.PackageCommitError||(typeof PackageCommitError=="undefined"?nil:PackageCommitError)}
  57187. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57188. return $core.withContext(function($ctx1) {
  57189. //>>excludeEnd("ctx");
  57190. var $1,$2,$3,$4;
  57191. self._commit_onSuccess_onError_(aPackage,(function(){
  57192. }),(function(error){
  57193. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57194. return $core.withContext(function($ctx2) {
  57195. //>>excludeEnd("ctx");
  57196. $1=$recv($PackageCommitError())._new();
  57197. $2=$1;
  57198. $3=$recv("Commiting failed with reason: \x22".__comma($recv(error)._responseText())).__comma("\x22");
  57199. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57200. $ctx2.sendIdx[","]=1;
  57201. //>>excludeEnd("ctx");
  57202. $recv($2)._messageText_($3);
  57203. $4=$recv($1)._signal();
  57204. return $4;
  57205. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57206. }, function($ctx2) {$ctx2.fillBlock({error:error},$ctx1,2)});
  57207. //>>excludeEnd("ctx");
  57208. }));
  57209. return self;
  57210. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57211. }, function($ctx1) {$ctx1.fill(self,"commit:",{aPackage:aPackage},$globals.PackageHandler)});
  57212. //>>excludeEnd("ctx");
  57213. },
  57214. //>>excludeStart("ide", pragmas.excludeIdeData);
  57215. args: ["aPackage"],
  57216. 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 ]",
  57217. referencedClasses: ["PackageCommitError"],
  57218. //>>excludeEnd("ide");
  57219. messageSends: ["commit:onSuccess:onError:", "messageText:", "new", ",", "responseText", "signal"]
  57220. }),
  57221. $globals.PackageHandler);
  57222. $core.addMethod(
  57223. $core.method({
  57224. selector: "commit:onSuccess:onError:",
  57225. protocol: 'committing',
  57226. fn: function (aPackage,aBlock,anotherBlock){
  57227. var self=this;
  57228. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57229. return $core.withContext(function($ctx1) {
  57230. //>>excludeEnd("ctx");
  57231. self._commitJsFileFor_onSuccess_onError_(aPackage,(function(){
  57232. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57233. return $core.withContext(function($ctx2) {
  57234. //>>excludeEnd("ctx");
  57235. return self._commitStFileFor_onSuccess_onError_(aPackage,(function(){
  57236. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57237. return $core.withContext(function($ctx3) {
  57238. //>>excludeEnd("ctx");
  57239. $recv(aPackage)._beClean();
  57240. return $recv(aBlock)._value();
  57241. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57242. }, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)});
  57243. //>>excludeEnd("ctx");
  57244. }),anotherBlock);
  57245. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57246. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  57247. //>>excludeEnd("ctx");
  57248. }),anotherBlock);
  57249. return self;
  57250. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57251. }, function($ctx1) {$ctx1.fill(self,"commit:onSuccess:onError:",{aPackage:aPackage,aBlock:aBlock,anotherBlock:anotherBlock},$globals.PackageHandler)});
  57252. //>>excludeEnd("ctx");
  57253. },
  57254. //>>excludeStart("ide", pragmas.excludeIdeData);
  57255. args: ["aPackage", "aBlock", "anotherBlock"],
  57256. 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",
  57257. referencedClasses: [],
  57258. //>>excludeEnd("ide");
  57259. messageSends: ["commitJsFileFor:onSuccess:onError:", "commitStFileFor:onSuccess:onError:", "beClean", "value"]
  57260. }),
  57261. $globals.PackageHandler);
  57262. $core.addMethod(
  57263. $core.method({
  57264. selector: "commitJsFileFor:onSuccess:onError:",
  57265. protocol: 'committing',
  57266. fn: function (aPackage,aBlock,anotherBlock){
  57267. var self=this;
  57268. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57269. return $core.withContext(function($ctx1) {
  57270. //>>excludeEnd("ctx");
  57271. var $2,$1;
  57272. $2=$recv($recv(self._commitPathJsFor_(aPackage)).__comma("/")).__comma($recv(aPackage)._name());
  57273. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57274. $ctx1.sendIdx[","]=2;
  57275. //>>excludeEnd("ctx");
  57276. $1=$recv($2).__comma(".js");
  57277. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57278. $ctx1.sendIdx[","]=1;
  57279. //>>excludeEnd("ctx");
  57280. self._ajaxPutAt_data_onSuccess_onError_($1,self._contentsFor_(aPackage),aBlock,anotherBlock);
  57281. return self;
  57282. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57283. }, function($ctx1) {$ctx1.fill(self,"commitJsFileFor:onSuccess:onError:",{aPackage:aPackage,aBlock:aBlock,anotherBlock:anotherBlock},$globals.PackageHandler)});
  57284. //>>excludeEnd("ctx");
  57285. },
  57286. //>>excludeStart("ide", pragmas.excludeIdeData);
  57287. args: ["aPackage", "aBlock", "anotherBlock"],
  57288. 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",
  57289. referencedClasses: [],
  57290. //>>excludeEnd("ide");
  57291. messageSends: ["ajaxPutAt:data:onSuccess:onError:", ",", "commitPathJsFor:", "name", "contentsFor:"]
  57292. }),
  57293. $globals.PackageHandler);
  57294. $core.addMethod(
  57295. $core.method({
  57296. selector: "commitPathJsFor:",
  57297. protocol: 'accessing',
  57298. fn: function (aPackage){
  57299. var self=this;
  57300. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57301. return $core.withContext(function($ctx1) {
  57302. //>>excludeEnd("ctx");
  57303. self._subclassResponsibility();
  57304. return self;
  57305. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57306. }, function($ctx1) {$ctx1.fill(self,"commitPathJsFor:",{aPackage:aPackage},$globals.PackageHandler)});
  57307. //>>excludeEnd("ctx");
  57308. },
  57309. //>>excludeStart("ide", pragmas.excludeIdeData);
  57310. args: ["aPackage"],
  57311. source: "commitPathJsFor: aPackage\x0a\x09self subclassResponsibility",
  57312. referencedClasses: [],
  57313. //>>excludeEnd("ide");
  57314. messageSends: ["subclassResponsibility"]
  57315. }),
  57316. $globals.PackageHandler);
  57317. $core.addMethod(
  57318. $core.method({
  57319. selector: "commitPathStFor:",
  57320. protocol: 'accessing',
  57321. fn: function (aPackage){
  57322. var self=this;
  57323. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57324. return $core.withContext(function($ctx1) {
  57325. //>>excludeEnd("ctx");
  57326. self._subclassResponsibility();
  57327. return self;
  57328. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57329. }, function($ctx1) {$ctx1.fill(self,"commitPathStFor:",{aPackage:aPackage},$globals.PackageHandler)});
  57330. //>>excludeEnd("ctx");
  57331. },
  57332. //>>excludeStart("ide", pragmas.excludeIdeData);
  57333. args: ["aPackage"],
  57334. source: "commitPathStFor: aPackage\x0a\x09self subclassResponsibility",
  57335. referencedClasses: [],
  57336. //>>excludeEnd("ide");
  57337. messageSends: ["subclassResponsibility"]
  57338. }),
  57339. $globals.PackageHandler);
  57340. $core.addMethod(
  57341. $core.method({
  57342. selector: "commitStFileFor:onSuccess:onError:",
  57343. protocol: 'committing',
  57344. fn: function (aPackage,aBlock,anotherBlock){
  57345. var self=this;
  57346. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57347. return $core.withContext(function($ctx1) {
  57348. //>>excludeEnd("ctx");
  57349. var $2,$1;
  57350. $2=$recv($recv(self._commitPathStFor_(aPackage)).__comma("/")).__comma($recv(aPackage)._name());
  57351. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57352. $ctx1.sendIdx[","]=2;
  57353. //>>excludeEnd("ctx");
  57354. $1=$recv($2).__comma(".st");
  57355. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57356. $ctx1.sendIdx[","]=1;
  57357. //>>excludeEnd("ctx");
  57358. self._ajaxPutAt_data_onSuccess_onError_($1,self._chunkContentsFor_(aPackage),aBlock,anotherBlock);
  57359. return self;
  57360. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57361. }, function($ctx1) {$ctx1.fill(self,"commitStFileFor:onSuccess:onError:",{aPackage:aPackage,aBlock:aBlock,anotherBlock:anotherBlock},$globals.PackageHandler)});
  57362. //>>excludeEnd("ctx");
  57363. },
  57364. //>>excludeStart("ide", pragmas.excludeIdeData);
  57365. args: ["aPackage", "aBlock", "anotherBlock"],
  57366. 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",
  57367. referencedClasses: [],
  57368. //>>excludeEnd("ide");
  57369. messageSends: ["ajaxPutAt:data:onSuccess:onError:", ",", "commitPathStFor:", "name", "chunkContentsFor:"]
  57370. }),
  57371. $globals.PackageHandler);
  57372. $core.addMethod(
  57373. $core.method({
  57374. selector: "contentsFor:",
  57375. protocol: 'accessing',
  57376. fn: function (aPackage){
  57377. var self=this;
  57378. function $String(){return $globals.String||(typeof String=="undefined"?nil:String)}
  57379. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57380. return $core.withContext(function($ctx1) {
  57381. //>>excludeEnd("ctx");
  57382. var $1;
  57383. $1=$recv($String())._streamContents_((function(str){
  57384. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57385. return $core.withContext(function($ctx2) {
  57386. //>>excludeEnd("ctx");
  57387. return $recv(self._exporter())._exportPackage_on_(aPackage,str);
  57388. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57389. }, function($ctx2) {$ctx2.fillBlock({str:str},$ctx1,1)});
  57390. //>>excludeEnd("ctx");
  57391. }));
  57392. return $1;
  57393. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57394. }, function($ctx1) {$ctx1.fill(self,"contentsFor:",{aPackage:aPackage},$globals.PackageHandler)});
  57395. //>>excludeEnd("ctx");
  57396. },
  57397. //>>excludeStart("ide", pragmas.excludeIdeData);
  57398. args: ["aPackage"],
  57399. source: "contentsFor: aPackage\x0a\x09^ String streamContents: [ :str |\x0a\x09\x09self exporter exportPackage: aPackage on: str ]",
  57400. referencedClasses: ["String"],
  57401. //>>excludeEnd("ide");
  57402. messageSends: ["streamContents:", "exportPackage:on:", "exporter"]
  57403. }),
  57404. $globals.PackageHandler);
  57405. $core.addMethod(
  57406. $core.method({
  57407. selector: "exporter",
  57408. protocol: 'factory',
  57409. fn: function (){
  57410. var self=this;
  57411. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57412. return $core.withContext(function($ctx1) {
  57413. //>>excludeEnd("ctx");
  57414. var $1;
  57415. $1=$recv(self._exporterClass())._new();
  57416. return $1;
  57417. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57418. }, function($ctx1) {$ctx1.fill(self,"exporter",{},$globals.PackageHandler)});
  57419. //>>excludeEnd("ctx");
  57420. },
  57421. //>>excludeStart("ide", pragmas.excludeIdeData);
  57422. args: [],
  57423. source: "exporter\x0a\x09^ self exporterClass new",
  57424. referencedClasses: [],
  57425. //>>excludeEnd("ide");
  57426. messageSends: ["new", "exporterClass"]
  57427. }),
  57428. $globals.PackageHandler);
  57429. $core.addMethod(
  57430. $core.method({
  57431. selector: "exporterClass",
  57432. protocol: 'accessing',
  57433. fn: function (){
  57434. var self=this;
  57435. function $Exporter(){return $globals.Exporter||(typeof Exporter=="undefined"?nil:Exporter)}
  57436. return $Exporter();
  57437. },
  57438. //>>excludeStart("ide", pragmas.excludeIdeData);
  57439. args: [],
  57440. source: "exporterClass\x0a\x09^ Exporter",
  57441. referencedClasses: ["Exporter"],
  57442. //>>excludeEnd("ide");
  57443. messageSends: []
  57444. }),
  57445. $globals.PackageHandler);
  57446. $core.addMethod(
  57447. $core.method({
  57448. selector: "load:",
  57449. protocol: 'loading',
  57450. fn: function (aPackage){
  57451. var self=this;
  57452. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57453. return $core.withContext(function($ctx1) {
  57454. //>>excludeEnd("ctx");
  57455. self._subclassResponsibility();
  57456. return self;
  57457. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57458. }, function($ctx1) {$ctx1.fill(self,"load:",{aPackage:aPackage},$globals.PackageHandler)});
  57459. //>>excludeEnd("ctx");
  57460. },
  57461. //>>excludeStart("ide", pragmas.excludeIdeData);
  57462. args: ["aPackage"],
  57463. source: "load: aPackage\x0a\x09self subclassResponsibility",
  57464. referencedClasses: [],
  57465. //>>excludeEnd("ide");
  57466. messageSends: ["subclassResponsibility"]
  57467. }),
  57468. $globals.PackageHandler);
  57469. $core.addMethod(
  57470. $core.method({
  57471. selector: "onCommitError:",
  57472. protocol: 'error handling',
  57473. fn: function (anError){
  57474. var self=this;
  57475. function $PackageCommitError(){return $globals.PackageCommitError||(typeof PackageCommitError=="undefined"?nil:PackageCommitError)}
  57476. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57477. return $core.withContext(function($ctx1) {
  57478. //>>excludeEnd("ctx");
  57479. var $1,$2,$3,$4;
  57480. $1=$recv($PackageCommitError())._new();
  57481. $2=$1;
  57482. $3=$recv("Commiting failed with reason: \x22".__comma($recv(anError)._responseText())).__comma("\x22");
  57483. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57484. $ctx1.sendIdx[","]=1;
  57485. //>>excludeEnd("ctx");
  57486. $recv($2)._messageText_($3);
  57487. $4=$recv($1)._signal();
  57488. return self;
  57489. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57490. }, function($ctx1) {$ctx1.fill(self,"onCommitError:",{anError:anError},$globals.PackageHandler)});
  57491. //>>excludeEnd("ctx");
  57492. },
  57493. //>>excludeStart("ide", pragmas.excludeIdeData);
  57494. args: ["anError"],
  57495. source: "onCommitError: anError\x0a\x09PackageCommitError new\x0a\x09\x09messageText: 'Commiting failed with reason: \x22' , (anError responseText) , '\x22';\x0a\x09\x09signal",
  57496. referencedClasses: ["PackageCommitError"],
  57497. //>>excludeEnd("ide");
  57498. messageSends: ["messageText:", "new", ",", "responseText", "signal"]
  57499. }),
  57500. $globals.PackageHandler);
  57501. $core.addClass('AmdPackageHandler', $globals.PackageHandler, [], 'Kernel-ImportExport');
  57502. //>>excludeStart("ide", pragmas.excludeIdeData);
  57503. $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.";
  57504. //>>excludeEnd("ide");
  57505. $core.addMethod(
  57506. $core.method({
  57507. selector: "commitPathJsFor:",
  57508. protocol: 'accessing',
  57509. fn: function (aPackage){
  57510. var self=this;
  57511. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57512. return $core.withContext(function($ctx1) {
  57513. //>>excludeEnd("ctx");
  57514. var $1;
  57515. $1=self._toUrl_(self._namespaceFor_(aPackage));
  57516. return $1;
  57517. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57518. }, function($ctx1) {$ctx1.fill(self,"commitPathJsFor:",{aPackage:aPackage},$globals.AmdPackageHandler)});
  57519. //>>excludeEnd("ctx");
  57520. },
  57521. //>>excludeStart("ide", pragmas.excludeIdeData);
  57522. args: ["aPackage"],
  57523. source: "commitPathJsFor: aPackage\x0a\x09^ self toUrl: (self namespaceFor: aPackage)",
  57524. referencedClasses: [],
  57525. //>>excludeEnd("ide");
  57526. messageSends: ["toUrl:", "namespaceFor:"]
  57527. }),
  57528. $globals.AmdPackageHandler);
  57529. $core.addMethod(
  57530. $core.method({
  57531. selector: "commitPathStFor:",
  57532. protocol: 'accessing',
  57533. fn: function (aPackage){
  57534. var self=this;
  57535. var path,pathWithout;
  57536. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57537. return $core.withContext(function($ctx1) {
  57538. //>>excludeEnd("ctx");
  57539. var $1,$3,$2;
  57540. $1=$recv(self._namespaceFor_(aPackage)).__comma("/_source");
  57541. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57542. $ctx1.sendIdx[","]=1;
  57543. //>>excludeEnd("ctx");
  57544. path=self._toUrl_($1);
  57545. pathWithout=self._commitPathJsFor_(aPackage);
  57546. $3=$recv(path).__eq($recv(pathWithout).__comma("/_source"));
  57547. if($core.assert($3)){
  57548. $2=pathWithout;
  57549. } else {
  57550. $2=path;
  57551. };
  57552. return $2;
  57553. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57554. }, function($ctx1) {$ctx1.fill(self,"commitPathStFor:",{aPackage:aPackage,path:path,pathWithout:pathWithout},$globals.AmdPackageHandler)});
  57555. //>>excludeEnd("ctx");
  57556. },
  57557. //>>excludeStart("ide", pragmas.excludeIdeData);
  57558. args: ["aPackage"],
  57559. 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 ]",
  57560. referencedClasses: [],
  57561. //>>excludeEnd("ide");
  57562. messageSends: ["toUrl:", ",", "namespaceFor:", "commitPathJsFor:", "ifTrue:ifFalse:", "="]
  57563. }),
  57564. $globals.AmdPackageHandler);
  57565. $core.addMethod(
  57566. $core.method({
  57567. selector: "exporterClass",
  57568. protocol: 'accessing',
  57569. fn: function (){
  57570. var self=this;
  57571. function $AmdExporter(){return $globals.AmdExporter||(typeof AmdExporter=="undefined"?nil:AmdExporter)}
  57572. return $AmdExporter();
  57573. },
  57574. //>>excludeStart("ide", pragmas.excludeIdeData);
  57575. args: [],
  57576. source: "exporterClass\x0a\x09^ AmdExporter",
  57577. referencedClasses: ["AmdExporter"],
  57578. //>>excludeEnd("ide");
  57579. messageSends: []
  57580. }),
  57581. $globals.AmdPackageHandler);
  57582. $core.addMethod(
  57583. $core.method({
  57584. selector: "load:",
  57585. protocol: 'loading',
  57586. fn: function (aPackage){
  57587. var self=this;
  57588. function $Smalltalk(){return $globals.Smalltalk||(typeof Smalltalk=="undefined"?nil:Smalltalk)}
  57589. function $Array(){return $globals.Array||(typeof Array=="undefined"?nil:Array)}
  57590. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57591. return $core.withContext(function($ctx1) {
  57592. //>>excludeEnd("ctx");
  57593. var $1,$3,$2,$receiver;
  57594. $1=$recv($Smalltalk())._amdRequire();
  57595. if(($receiver = $1) == null || $receiver.isNil){
  57596. self._error_("AMD loader not present");
  57597. } else {
  57598. var require;
  57599. require=$receiver;
  57600. $3=$recv($recv(self._namespaceFor_(aPackage)).__comma("/")).__comma($recv(aPackage)._name());
  57601. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57602. $ctx1.sendIdx[","]=1;
  57603. //>>excludeEnd("ctx");
  57604. $2=$recv($Array())._with_($3);
  57605. $recv(require)._value_($2);
  57606. };
  57607. return self;
  57608. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57609. }, function($ctx1) {$ctx1.fill(self,"load:",{aPackage:aPackage},$globals.AmdPackageHandler)});
  57610. //>>excludeEnd("ctx");
  57611. },
  57612. //>>excludeStart("ide", pragmas.excludeIdeData);
  57613. args: ["aPackage"],
  57614. source: "load: aPackage\x0a\x09Smalltalk amdRequire\x0a\x09\x09ifNil: [ self error: 'AMD loader not present' ]\x0a\x09\x09ifNotNil: [ :require |\x0a\x09\x09\x09require value: (Array with: (self namespaceFor: aPackage), '/', aPackage name ) ]",
  57615. referencedClasses: ["Smalltalk", "Array"],
  57616. //>>excludeEnd("ide");
  57617. messageSends: ["ifNil:ifNotNil:", "amdRequire", "error:", "value:", "with:", ",", "namespaceFor:", "name"]
  57618. }),
  57619. $globals.AmdPackageHandler);
  57620. $core.addMethod(
  57621. $core.method({
  57622. selector: "namespaceFor:",
  57623. protocol: 'committing',
  57624. fn: function (aPackage){
  57625. var self=this;
  57626. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57627. return $core.withContext(function($ctx1) {
  57628. //>>excludeEnd("ctx");
  57629. var $1;
  57630. $1=$recv($recv(aPackage)._transport())._namespace();
  57631. return $1;
  57632. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57633. }, function($ctx1) {$ctx1.fill(self,"namespaceFor:",{aPackage:aPackage},$globals.AmdPackageHandler)});
  57634. //>>excludeEnd("ctx");
  57635. },
  57636. //>>excludeStart("ide", pragmas.excludeIdeData);
  57637. args: ["aPackage"],
  57638. source: "namespaceFor: aPackage\x0a\x09^ aPackage transport namespace",
  57639. referencedClasses: [],
  57640. //>>excludeEnd("ide");
  57641. messageSends: ["namespace", "transport"]
  57642. }),
  57643. $globals.AmdPackageHandler);
  57644. $core.addMethod(
  57645. $core.method({
  57646. selector: "toUrl:",
  57647. protocol: 'private',
  57648. fn: function (aString){
  57649. var self=this;
  57650. function $Smalltalk(){return $globals.Smalltalk||(typeof Smalltalk=="undefined"?nil:Smalltalk)}
  57651. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57652. return $core.withContext(function($ctx1) {
  57653. //>>excludeEnd("ctx");
  57654. var $2,$1,$receiver;
  57655. $2=$recv($Smalltalk())._amdRequire();
  57656. if(($receiver = $2) == null || $receiver.isNil){
  57657. $1=self._error_("AMD loader not present");
  57658. } else {
  57659. var require;
  57660. require=$receiver;
  57661. $1=$recv($recv(require)._basicAt_("toUrl"))._value_(aString);
  57662. };
  57663. return $1;
  57664. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57665. }, function($ctx1) {$ctx1.fill(self,"toUrl:",{aString:aString},$globals.AmdPackageHandler)});
  57666. //>>excludeEnd("ctx");
  57667. },
  57668. //>>excludeStart("ide", pragmas.excludeIdeData);
  57669. args: ["aString"],
  57670. source: "toUrl: aString\x0a\x09^ Smalltalk amdRequire\x0a\x09\x09ifNil: [ self error: 'AMD loader not present' ]\x0a\x09\x09ifNotNil: [ :require | (require basicAt: 'toUrl') value: aString ]",
  57671. referencedClasses: ["Smalltalk"],
  57672. //>>excludeEnd("ide");
  57673. messageSends: ["ifNil:ifNotNil:", "amdRequire", "error:", "value:", "basicAt:"]
  57674. }),
  57675. $globals.AmdPackageHandler);
  57676. $core.addMethod(
  57677. $core.method({
  57678. selector: "defaultNamespace",
  57679. protocol: 'commit paths',
  57680. fn: function (){
  57681. var self=this;
  57682. function $Smalltalk(){return $globals.Smalltalk||(typeof Smalltalk=="undefined"?nil:Smalltalk)}
  57683. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57684. return $core.withContext(function($ctx1) {
  57685. //>>excludeEnd("ctx");
  57686. var $1;
  57687. $1=$recv($Smalltalk())._defaultAmdNamespace();
  57688. return $1;
  57689. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57690. }, function($ctx1) {$ctx1.fill(self,"defaultNamespace",{},$globals.AmdPackageHandler.klass)});
  57691. //>>excludeEnd("ctx");
  57692. },
  57693. //>>excludeStart("ide", pragmas.excludeIdeData);
  57694. args: [],
  57695. source: "defaultNamespace\x0a\x09^ Smalltalk defaultAmdNamespace",
  57696. referencedClasses: ["Smalltalk"],
  57697. //>>excludeEnd("ide");
  57698. messageSends: ["defaultAmdNamespace"]
  57699. }),
  57700. $globals.AmdPackageHandler.klass);
  57701. $core.addMethod(
  57702. $core.method({
  57703. selector: "defaultNamespace:",
  57704. protocol: 'commit paths',
  57705. fn: function (aString){
  57706. var self=this;
  57707. function $Smalltalk(){return $globals.Smalltalk||(typeof Smalltalk=="undefined"?nil:Smalltalk)}
  57708. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57709. return $core.withContext(function($ctx1) {
  57710. //>>excludeEnd("ctx");
  57711. $recv($Smalltalk())._defaultAmdNamespace_(aString);
  57712. return self;
  57713. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57714. }, function($ctx1) {$ctx1.fill(self,"defaultNamespace:",{aString:aString},$globals.AmdPackageHandler.klass)});
  57715. //>>excludeEnd("ctx");
  57716. },
  57717. //>>excludeStart("ide", pragmas.excludeIdeData);
  57718. args: ["aString"],
  57719. source: "defaultNamespace: aString\x0a\x09Smalltalk defaultAmdNamespace: aString",
  57720. referencedClasses: ["Smalltalk"],
  57721. //>>excludeEnd("ide");
  57722. messageSends: ["defaultAmdNamespace:"]
  57723. }),
  57724. $globals.AmdPackageHandler.klass);
  57725. $core.addClass('PackageTransport', $globals.Object, ['package'], 'Kernel-ImportExport');
  57726. //>>excludeStart("ide", pragmas.excludeIdeData);
  57727. $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.";
  57728. //>>excludeEnd("ide");
  57729. $core.addMethod(
  57730. $core.method({
  57731. selector: "asJSON",
  57732. protocol: 'converting',
  57733. fn: function (){
  57734. var self=this;
  57735. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57736. return $core.withContext(function($ctx1) {
  57737. //>>excludeEnd("ctx");
  57738. var $1;
  57739. $1=$globals.HashedCollection._newFromPairs_(["type",self._type()]);
  57740. return $1;
  57741. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57742. }, function($ctx1) {$ctx1.fill(self,"asJSON",{},$globals.PackageTransport)});
  57743. //>>excludeEnd("ctx");
  57744. },
  57745. //>>excludeStart("ide", pragmas.excludeIdeData);
  57746. args: [],
  57747. source: "asJSON\x0a\x09^ #{ 'type' -> self type }",
  57748. referencedClasses: [],
  57749. //>>excludeEnd("ide");
  57750. messageSends: ["type"]
  57751. }),
  57752. $globals.PackageTransport);
  57753. $core.addMethod(
  57754. $core.method({
  57755. selector: "commit",
  57756. protocol: 'committing',
  57757. fn: function (){
  57758. var self=this;
  57759. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57760. return $core.withContext(function($ctx1) {
  57761. //>>excludeEnd("ctx");
  57762. $recv(self._commitHandler())._commit_(self._package());
  57763. return self;
  57764. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57765. }, function($ctx1) {$ctx1.fill(self,"commit",{},$globals.PackageTransport)});
  57766. //>>excludeEnd("ctx");
  57767. },
  57768. //>>excludeStart("ide", pragmas.excludeIdeData);
  57769. args: [],
  57770. source: "commit\x0a\x09self commitHandler commit: self package",
  57771. referencedClasses: [],
  57772. //>>excludeEnd("ide");
  57773. messageSends: ["commit:", "commitHandler", "package"]
  57774. }),
  57775. $globals.PackageTransport);
  57776. $core.addMethod(
  57777. $core.method({
  57778. selector: "commitHandler",
  57779. protocol: 'factory',
  57780. fn: function (){
  57781. var self=this;
  57782. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57783. return $core.withContext(function($ctx1) {
  57784. //>>excludeEnd("ctx");
  57785. var $1;
  57786. $1=$recv(self._commitHandlerClass())._new();
  57787. return $1;
  57788. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57789. }, function($ctx1) {$ctx1.fill(self,"commitHandler",{},$globals.PackageTransport)});
  57790. //>>excludeEnd("ctx");
  57791. },
  57792. //>>excludeStart("ide", pragmas.excludeIdeData);
  57793. args: [],
  57794. source: "commitHandler\x0a\x09^ self commitHandlerClass new",
  57795. referencedClasses: [],
  57796. //>>excludeEnd("ide");
  57797. messageSends: ["new", "commitHandlerClass"]
  57798. }),
  57799. $globals.PackageTransport);
  57800. $core.addMethod(
  57801. $core.method({
  57802. selector: "commitHandlerClass",
  57803. protocol: 'accessing',
  57804. fn: function (){
  57805. var self=this;
  57806. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57807. return $core.withContext(function($ctx1) {
  57808. //>>excludeEnd("ctx");
  57809. self._subclassResponsibility();
  57810. return self;
  57811. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57812. }, function($ctx1) {$ctx1.fill(self,"commitHandlerClass",{},$globals.PackageTransport)});
  57813. //>>excludeEnd("ctx");
  57814. },
  57815. //>>excludeStart("ide", pragmas.excludeIdeData);
  57816. args: [],
  57817. source: "commitHandlerClass\x0a\x09self subclassResponsibility",
  57818. referencedClasses: [],
  57819. //>>excludeEnd("ide");
  57820. messageSends: ["subclassResponsibility"]
  57821. }),
  57822. $globals.PackageTransport);
  57823. $core.addMethod(
  57824. $core.method({
  57825. selector: "commitOnSuccess:onError:",
  57826. protocol: 'committing',
  57827. fn: function (aBlock,anotherBlock){
  57828. var self=this;
  57829. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57830. return $core.withContext(function($ctx1) {
  57831. //>>excludeEnd("ctx");
  57832. $recv(self._commitHandler())._commit_onSuccess_onError_(self._package(),aBlock,anotherBlock);
  57833. return self;
  57834. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57835. }, function($ctx1) {$ctx1.fill(self,"commitOnSuccess:onError:",{aBlock:aBlock,anotherBlock:anotherBlock},$globals.PackageTransport)});
  57836. //>>excludeEnd("ctx");
  57837. },
  57838. //>>excludeStart("ide", pragmas.excludeIdeData);
  57839. args: ["aBlock", "anotherBlock"],
  57840. source: "commitOnSuccess: aBlock onError: anotherBlock\x0a\x09self commitHandler \x0a\x09\x09commit: self package\x0a\x09\x09onSuccess: aBlock\x0a\x09\x09onError: anotherBlock",
  57841. referencedClasses: [],
  57842. //>>excludeEnd("ide");
  57843. messageSends: ["commit:onSuccess:onError:", "commitHandler", "package"]
  57844. }),
  57845. $globals.PackageTransport);
  57846. $core.addMethod(
  57847. $core.method({
  57848. selector: "definition",
  57849. protocol: 'accessing',
  57850. fn: function (){
  57851. var self=this;
  57852. return "";
  57853. },
  57854. //>>excludeStart("ide", pragmas.excludeIdeData);
  57855. args: [],
  57856. source: "definition\x0a\x09^ ''",
  57857. referencedClasses: [],
  57858. //>>excludeEnd("ide");
  57859. messageSends: []
  57860. }),
  57861. $globals.PackageTransport);
  57862. $core.addMethod(
  57863. $core.method({
  57864. selector: "load",
  57865. protocol: 'loading',
  57866. fn: function (){
  57867. var self=this;
  57868. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57869. return $core.withContext(function($ctx1) {
  57870. //>>excludeEnd("ctx");
  57871. $recv(self._commitHandler())._load_(self._package());
  57872. return self;
  57873. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57874. }, function($ctx1) {$ctx1.fill(self,"load",{},$globals.PackageTransport)});
  57875. //>>excludeEnd("ctx");
  57876. },
  57877. //>>excludeStart("ide", pragmas.excludeIdeData);
  57878. args: [],
  57879. source: "load\x0a\x09self commitHandler load: self package",
  57880. referencedClasses: [],
  57881. //>>excludeEnd("ide");
  57882. messageSends: ["load:", "commitHandler", "package"]
  57883. }),
  57884. $globals.PackageTransport);
  57885. $core.addMethod(
  57886. $core.method({
  57887. selector: "package",
  57888. protocol: 'accessing',
  57889. fn: function (){
  57890. var self=this;
  57891. var $1;
  57892. $1=self["@package"];
  57893. return $1;
  57894. },
  57895. //>>excludeStart("ide", pragmas.excludeIdeData);
  57896. args: [],
  57897. source: "package\x0a\x09^ package",
  57898. referencedClasses: [],
  57899. //>>excludeEnd("ide");
  57900. messageSends: []
  57901. }),
  57902. $globals.PackageTransport);
  57903. $core.addMethod(
  57904. $core.method({
  57905. selector: "package:",
  57906. protocol: 'accessing',
  57907. fn: function (aPackage){
  57908. var self=this;
  57909. self["@package"]=aPackage;
  57910. return self;
  57911. },
  57912. //>>excludeStart("ide", pragmas.excludeIdeData);
  57913. args: ["aPackage"],
  57914. source: "package: aPackage\x0a\x09package := aPackage",
  57915. referencedClasses: [],
  57916. //>>excludeEnd("ide");
  57917. messageSends: []
  57918. }),
  57919. $globals.PackageTransport);
  57920. $core.addMethod(
  57921. $core.method({
  57922. selector: "setupFromJson:",
  57923. protocol: 'initialization',
  57924. fn: function (anObject){
  57925. var self=this;
  57926. return self;
  57927. },
  57928. //>>excludeStart("ide", pragmas.excludeIdeData);
  57929. args: ["anObject"],
  57930. source: "setupFromJson: anObject\x0a\x09\x22no op. override if needed in subclasses\x22",
  57931. referencedClasses: [],
  57932. //>>excludeEnd("ide");
  57933. messageSends: []
  57934. }),
  57935. $globals.PackageTransport);
  57936. $core.addMethod(
  57937. $core.method({
  57938. selector: "type",
  57939. protocol: 'accessing',
  57940. fn: function (){
  57941. var self=this;
  57942. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57943. return $core.withContext(function($ctx1) {
  57944. //>>excludeEnd("ctx");
  57945. var $1;
  57946. $1=$recv(self._class())._type();
  57947. return $1;
  57948. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57949. }, function($ctx1) {$ctx1.fill(self,"type",{},$globals.PackageTransport)});
  57950. //>>excludeEnd("ctx");
  57951. },
  57952. //>>excludeStart("ide", pragmas.excludeIdeData);
  57953. args: [],
  57954. source: "type\x0a\x09^ self class type",
  57955. referencedClasses: [],
  57956. //>>excludeEnd("ide");
  57957. messageSends: ["type", "class"]
  57958. }),
  57959. $globals.PackageTransport);
  57960. $globals.PackageTransport.klass.iVarNames = ['registry'];
  57961. $core.addMethod(
  57962. $core.method({
  57963. selector: "classRegisteredFor:",
  57964. protocol: 'accessing',
  57965. fn: function (aString){
  57966. var self=this;
  57967. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57968. return $core.withContext(function($ctx1) {
  57969. //>>excludeEnd("ctx");
  57970. var $1;
  57971. $1=$recv(self["@registry"])._at_(aString);
  57972. return $1;
  57973. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57974. }, function($ctx1) {$ctx1.fill(self,"classRegisteredFor:",{aString:aString},$globals.PackageTransport.klass)});
  57975. //>>excludeEnd("ctx");
  57976. },
  57977. //>>excludeStart("ide", pragmas.excludeIdeData);
  57978. args: ["aString"],
  57979. source: "classRegisteredFor: aString\x0a\x09^ registry at: aString",
  57980. referencedClasses: [],
  57981. //>>excludeEnd("ide");
  57982. messageSends: ["at:"]
  57983. }),
  57984. $globals.PackageTransport.klass);
  57985. $core.addMethod(
  57986. $core.method({
  57987. selector: "defaultType",
  57988. protocol: 'accessing',
  57989. fn: function (){
  57990. var self=this;
  57991. function $AmdPackageTransport(){return $globals.AmdPackageTransport||(typeof AmdPackageTransport=="undefined"?nil:AmdPackageTransport)}
  57992. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57993. return $core.withContext(function($ctx1) {
  57994. //>>excludeEnd("ctx");
  57995. var $1;
  57996. $1=$recv($AmdPackageTransport())._type();
  57997. return $1;
  57998. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  57999. }, function($ctx1) {$ctx1.fill(self,"defaultType",{},$globals.PackageTransport.klass)});
  58000. //>>excludeEnd("ctx");
  58001. },
  58002. //>>excludeStart("ide", pragmas.excludeIdeData);
  58003. args: [],
  58004. source: "defaultType\x0a\x09^ AmdPackageTransport type",
  58005. referencedClasses: ["AmdPackageTransport"],
  58006. //>>excludeEnd("ide");
  58007. messageSends: ["type"]
  58008. }),
  58009. $globals.PackageTransport.klass);
  58010. $core.addMethod(
  58011. $core.method({
  58012. selector: "for:",
  58013. protocol: 'instance creation',
  58014. fn: function (aString){
  58015. var self=this;
  58016. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58017. return $core.withContext(function($ctx1) {
  58018. //>>excludeEnd("ctx");
  58019. var $1;
  58020. $1=$recv(self._classRegisteredFor_(aString))._new();
  58021. return $1;
  58022. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58023. }, function($ctx1) {$ctx1.fill(self,"for:",{aString:aString},$globals.PackageTransport.klass)});
  58024. //>>excludeEnd("ctx");
  58025. },
  58026. //>>excludeStart("ide", pragmas.excludeIdeData);
  58027. args: ["aString"],
  58028. source: "for: aString\x0a\x09^ (self classRegisteredFor: aString) new",
  58029. referencedClasses: [],
  58030. //>>excludeEnd("ide");
  58031. messageSends: ["new", "classRegisteredFor:"]
  58032. }),
  58033. $globals.PackageTransport.klass);
  58034. $core.addMethod(
  58035. $core.method({
  58036. selector: "fromJson:",
  58037. protocol: 'instance creation',
  58038. fn: function (anObject){
  58039. var self=this;
  58040. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58041. return $core.withContext(function($ctx1) {
  58042. //>>excludeEnd("ctx");
  58043. var $1,$3,$4,$2,$receiver;
  58044. if(($receiver = anObject) == null || $receiver.isNil){
  58045. $1=self._for_(self._defaultType());
  58046. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58047. $ctx1.sendIdx["for:"]=1;
  58048. //>>excludeEnd("ctx");
  58049. return $1;
  58050. } else {
  58051. anObject;
  58052. };
  58053. $3=self._for_($recv(anObject)._type());
  58054. $recv($3)._setupFromJson_(anObject);
  58055. $4=$recv($3)._yourself();
  58056. $2=$4;
  58057. return $2;
  58058. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58059. }, function($ctx1) {$ctx1.fill(self,"fromJson:",{anObject:anObject},$globals.PackageTransport.klass)});
  58060. //>>excludeEnd("ctx");
  58061. },
  58062. //>>excludeStart("ide", pragmas.excludeIdeData);
  58063. args: ["anObject"],
  58064. 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",
  58065. referencedClasses: [],
  58066. //>>excludeEnd("ide");
  58067. messageSends: ["ifNil:", "for:", "defaultType", "setupFromJson:", "type", "yourself"]
  58068. }),
  58069. $globals.PackageTransport.klass);
  58070. $core.addMethod(
  58071. $core.method({
  58072. selector: "initialize",
  58073. protocol: 'initialization',
  58074. fn: function (){
  58075. var self=this;
  58076. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58077. return $core.withContext(function($ctx1) {
  58078. //>>excludeEnd("ctx");
  58079. (
  58080. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58081. $ctx1.supercall = true,
  58082. //>>excludeEnd("ctx");
  58083. $globals.PackageTransport.klass.superclass.fn.prototype._initialize.apply($recv(self), []));
  58084. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58085. $ctx1.supercall = false;
  58086. //>>excludeEnd("ctx");;
  58087. self["@registry"]=$globals.HashedCollection._newFromPairs_([]);
  58088. self._register();
  58089. return self;
  58090. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58091. }, function($ctx1) {$ctx1.fill(self,"initialize",{},$globals.PackageTransport.klass)});
  58092. //>>excludeEnd("ctx");
  58093. },
  58094. //>>excludeStart("ide", pragmas.excludeIdeData);
  58095. args: [],
  58096. source: "initialize\x0a\x09super initialize.\x0a\x09registry := #{}.\x0a\x09self register",
  58097. referencedClasses: [],
  58098. //>>excludeEnd("ide");
  58099. messageSends: ["initialize", "register"]
  58100. }),
  58101. $globals.PackageTransport.klass);
  58102. $core.addMethod(
  58103. $core.method({
  58104. selector: "register",
  58105. protocol: 'registration',
  58106. fn: function (){
  58107. var self=this;
  58108. function $PackageTransport(){return $globals.PackageTransport||(typeof PackageTransport=="undefined"?nil:PackageTransport)}
  58109. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58110. return $core.withContext(function($ctx1) {
  58111. //>>excludeEnd("ctx");
  58112. $recv($PackageTransport())._register_(self);
  58113. return self;
  58114. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58115. }, function($ctx1) {$ctx1.fill(self,"register",{},$globals.PackageTransport.klass)});
  58116. //>>excludeEnd("ctx");
  58117. },
  58118. //>>excludeStart("ide", pragmas.excludeIdeData);
  58119. args: [],
  58120. source: "register\x0a\x09PackageTransport register: self",
  58121. referencedClasses: ["PackageTransport"],
  58122. //>>excludeEnd("ide");
  58123. messageSends: ["register:"]
  58124. }),
  58125. $globals.PackageTransport.klass);
  58126. $core.addMethod(
  58127. $core.method({
  58128. selector: "register:",
  58129. protocol: 'registration',
  58130. fn: function (aClass){
  58131. var self=this;
  58132. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58133. return $core.withContext(function($ctx1) {
  58134. //>>excludeEnd("ctx");
  58135. var $1,$receiver;
  58136. $1=$recv(aClass)._type();
  58137. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58138. $ctx1.sendIdx["type"]=1;
  58139. //>>excludeEnd("ctx");
  58140. if(($receiver = $1) == null || $receiver.isNil){
  58141. $1;
  58142. } else {
  58143. $recv(self["@registry"])._at_put_($recv(aClass)._type(),aClass);
  58144. };
  58145. return self;
  58146. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58147. }, function($ctx1) {$ctx1.fill(self,"register:",{aClass:aClass},$globals.PackageTransport.klass)});
  58148. //>>excludeEnd("ctx");
  58149. },
  58150. //>>excludeStart("ide", pragmas.excludeIdeData);
  58151. args: ["aClass"],
  58152. source: "register: aClass\x0a\x09aClass type ifNotNil: [\x0a\x09\x09registry at: aClass type put: aClass ]",
  58153. referencedClasses: [],
  58154. //>>excludeEnd("ide");
  58155. messageSends: ["ifNotNil:", "type", "at:put:"]
  58156. }),
  58157. $globals.PackageTransport.klass);
  58158. $core.addMethod(
  58159. $core.method({
  58160. selector: "type",
  58161. protocol: 'accessing',
  58162. fn: function (){
  58163. var self=this;
  58164. return nil;
  58165. },
  58166. //>>excludeStart("ide", pragmas.excludeIdeData);
  58167. args: [],
  58168. source: "type\x0a\x09\x22Override in subclasses\x22\x0a\x09^ nil",
  58169. referencedClasses: [],
  58170. //>>excludeEnd("ide");
  58171. messageSends: []
  58172. }),
  58173. $globals.PackageTransport.klass);
  58174. $core.addClass('AmdPackageTransport', $globals.PackageTransport, ['namespace'], 'Kernel-ImportExport');
  58175. //>>excludeStart("ide", pragmas.excludeIdeData);
  58176. $globals.AmdPackageTransport.comment="I am the default transport for committing packages.\x0a\x0aSee `AmdExporter` and `AmdPackageHandler`.";
  58177. //>>excludeEnd("ide");
  58178. $core.addMethod(
  58179. $core.method({
  58180. selector: "asJSON",
  58181. protocol: 'converting',
  58182. fn: function (){
  58183. var self=this;
  58184. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58185. return $core.withContext(function($ctx1) {
  58186. //>>excludeEnd("ctx");
  58187. var $2,$3,$1;
  58188. $2=(
  58189. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58190. $ctx1.supercall = true,
  58191. //>>excludeEnd("ctx");
  58192. $globals.AmdPackageTransport.superclass.fn.prototype._asJSON.apply($recv(self), []));
  58193. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58194. $ctx1.supercall = false;
  58195. //>>excludeEnd("ctx");;
  58196. $recv($2)._at_put_("amdNamespace",self._namespace());
  58197. $3=$recv($2)._yourself();
  58198. $1=$3;
  58199. return $1;
  58200. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58201. }, function($ctx1) {$ctx1.fill(self,"asJSON",{},$globals.AmdPackageTransport)});
  58202. //>>excludeEnd("ctx");
  58203. },
  58204. //>>excludeStart("ide", pragmas.excludeIdeData);
  58205. args: [],
  58206. source: "asJSON\x0a\x09^ super asJSON\x0a\x09\x09at: 'amdNamespace' put: self namespace;\x0a\x09\x09yourself",
  58207. referencedClasses: [],
  58208. //>>excludeEnd("ide");
  58209. messageSends: ["at:put:", "asJSON", "namespace", "yourself"]
  58210. }),
  58211. $globals.AmdPackageTransport);
  58212. $core.addMethod(
  58213. $core.method({
  58214. selector: "commitHandlerClass",
  58215. protocol: 'accessing',
  58216. fn: function (){
  58217. var self=this;
  58218. function $AmdPackageHandler(){return $globals.AmdPackageHandler||(typeof AmdPackageHandler=="undefined"?nil:AmdPackageHandler)}
  58219. return $AmdPackageHandler();
  58220. },
  58221. //>>excludeStart("ide", pragmas.excludeIdeData);
  58222. args: [],
  58223. source: "commitHandlerClass\x0a\x09^ AmdPackageHandler",
  58224. referencedClasses: ["AmdPackageHandler"],
  58225. //>>excludeEnd("ide");
  58226. messageSends: []
  58227. }),
  58228. $globals.AmdPackageTransport);
  58229. $core.addMethod(
  58230. $core.method({
  58231. selector: "defaultNamespace",
  58232. protocol: 'defaults',
  58233. fn: function (){
  58234. var self=this;
  58235. function $Smalltalk(){return $globals.Smalltalk||(typeof Smalltalk=="undefined"?nil:Smalltalk)}
  58236. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58237. return $core.withContext(function($ctx1) {
  58238. //>>excludeEnd("ctx");
  58239. var $1;
  58240. $1=$recv($Smalltalk())._defaultAmdNamespace();
  58241. return $1;
  58242. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58243. }, function($ctx1) {$ctx1.fill(self,"defaultNamespace",{},$globals.AmdPackageTransport)});
  58244. //>>excludeEnd("ctx");
  58245. },
  58246. //>>excludeStart("ide", pragmas.excludeIdeData);
  58247. args: [],
  58248. source: "defaultNamespace\x0a\x09^ Smalltalk defaultAmdNamespace",
  58249. referencedClasses: ["Smalltalk"],
  58250. //>>excludeEnd("ide");
  58251. messageSends: ["defaultAmdNamespace"]
  58252. }),
  58253. $globals.AmdPackageTransport);
  58254. $core.addMethod(
  58255. $core.method({
  58256. selector: "definition",
  58257. protocol: 'accessing',
  58258. fn: function (){
  58259. var self=this;
  58260. function $String(){return $globals.String||(typeof String=="undefined"?nil:String)}
  58261. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58262. return $core.withContext(function($ctx1) {
  58263. //>>excludeEnd("ctx");
  58264. var $3,$2,$1;
  58265. $1=$recv($String())._streamContents_((function(stream){
  58266. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58267. return $core.withContext(function($ctx2) {
  58268. //>>excludeEnd("ctx");
  58269. $recv(stream)._nextPutAll_($recv(self._class())._name());
  58270. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58271. $ctx2.sendIdx["nextPutAll:"]=1;
  58272. //>>excludeEnd("ctx");
  58273. $recv(stream)._nextPutAll_(" namespace: ");
  58274. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58275. $ctx2.sendIdx["nextPutAll:"]=2;
  58276. //>>excludeEnd("ctx");
  58277. $3=$recv("'".__comma(self._namespace())).__comma("'");
  58278. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58279. $ctx2.sendIdx[","]=1;
  58280. //>>excludeEnd("ctx");
  58281. $2=$recv(stream)._nextPutAll_($3);
  58282. return $2;
  58283. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58284. }, function($ctx2) {$ctx2.fillBlock({stream:stream},$ctx1,1)});
  58285. //>>excludeEnd("ctx");
  58286. }));
  58287. return $1;
  58288. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58289. }, function($ctx1) {$ctx1.fill(self,"definition",{},$globals.AmdPackageTransport)});
  58290. //>>excludeEnd("ctx");
  58291. },
  58292. //>>excludeStart("ide", pragmas.excludeIdeData);
  58293. args: [],
  58294. source: "definition\x0a\x09^ String streamContents: [ :stream |\x0a\x09\x09stream \x0a\x09\x09\x09nextPutAll: self class name;\x0a\x09\x09\x09nextPutAll: ' namespace: ';\x0a\x09\x09\x09nextPutAll: '''', self namespace, '''' ]",
  58295. referencedClasses: ["String"],
  58296. //>>excludeEnd("ide");
  58297. messageSends: ["streamContents:", "nextPutAll:", "name", "class", ",", "namespace"]
  58298. }),
  58299. $globals.AmdPackageTransport);
  58300. $core.addMethod(
  58301. $core.method({
  58302. selector: "namespace",
  58303. protocol: 'accessing',
  58304. fn: function (){
  58305. var self=this;
  58306. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58307. return $core.withContext(function($ctx1) {
  58308. //>>excludeEnd("ctx");
  58309. var $2,$1,$receiver;
  58310. $2=self["@namespace"];
  58311. if(($receiver = $2) == null || $receiver.isNil){
  58312. $1=self._defaultNamespace();
  58313. } else {
  58314. $1=$2;
  58315. };
  58316. return $1;
  58317. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58318. }, function($ctx1) {$ctx1.fill(self,"namespace",{},$globals.AmdPackageTransport)});
  58319. //>>excludeEnd("ctx");
  58320. },
  58321. //>>excludeStart("ide", pragmas.excludeIdeData);
  58322. args: [],
  58323. source: "namespace\x0a\x09^ namespace ifNil: [ self defaultNamespace ]",
  58324. referencedClasses: [],
  58325. //>>excludeEnd("ide");
  58326. messageSends: ["ifNil:", "defaultNamespace"]
  58327. }),
  58328. $globals.AmdPackageTransport);
  58329. $core.addMethod(
  58330. $core.method({
  58331. selector: "namespace:",
  58332. protocol: 'accessing',
  58333. fn: function (aString){
  58334. var self=this;
  58335. self["@namespace"]=aString;
  58336. return self;
  58337. },
  58338. //>>excludeStart("ide", pragmas.excludeIdeData);
  58339. args: ["aString"],
  58340. source: "namespace: aString\x0a\x09namespace := aString",
  58341. referencedClasses: [],
  58342. //>>excludeEnd("ide");
  58343. messageSends: []
  58344. }),
  58345. $globals.AmdPackageTransport);
  58346. $core.addMethod(
  58347. $core.method({
  58348. selector: "printOn:",
  58349. protocol: 'printing',
  58350. fn: function (aStream){
  58351. var self=this;
  58352. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58353. return $core.withContext(function($ctx1) {
  58354. //>>excludeEnd("ctx");
  58355. var $1;
  58356. (
  58357. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58358. $ctx1.supercall = true,
  58359. //>>excludeEnd("ctx");
  58360. $globals.AmdPackageTransport.superclass.fn.prototype._printOn_.apply($recv(self), [aStream]));
  58361. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58362. $ctx1.supercall = false;
  58363. //>>excludeEnd("ctx");;
  58364. $recv(aStream)._nextPutAll_(" (AMD Namespace: ");
  58365. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58366. $ctx1.sendIdx["nextPutAll:"]=1;
  58367. //>>excludeEnd("ctx");
  58368. $recv(aStream)._nextPutAll_(self._namespace());
  58369. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58370. $ctx1.sendIdx["nextPutAll:"]=2;
  58371. //>>excludeEnd("ctx");
  58372. $1=$recv(aStream)._nextPutAll_(")");
  58373. return self;
  58374. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58375. }, function($ctx1) {$ctx1.fill(self,"printOn:",{aStream:aStream},$globals.AmdPackageTransport)});
  58376. //>>excludeEnd("ctx");
  58377. },
  58378. //>>excludeStart("ide", pragmas.excludeIdeData);
  58379. args: ["aStream"],
  58380. source: "printOn: aStream\x0a\x09super printOn: aStream.\x0a\x09aStream\x0a\x09\x09nextPutAll: ' (AMD Namespace: ';\x0a\x09\x09nextPutAll: self namespace;\x0a\x09\x09nextPutAll: ')'",
  58381. referencedClasses: [],
  58382. //>>excludeEnd("ide");
  58383. messageSends: ["printOn:", "nextPutAll:", "namespace"]
  58384. }),
  58385. $globals.AmdPackageTransport);
  58386. $core.addMethod(
  58387. $core.method({
  58388. selector: "setPath:",
  58389. protocol: 'actions',
  58390. fn: function (aString){
  58391. var self=this;
  58392. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58393. return $core.withContext(function($ctx1) {
  58394. //>>excludeEnd("ctx");
  58395. $recv($recv(require)._basicAt_("config"))._value_($globals.HashedCollection._newFromPairs_(["paths",$globals.HashedCollection._newFromPairs_([self._namespace(),aString])]));
  58396. return self;
  58397. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58398. }, function($ctx1) {$ctx1.fill(self,"setPath:",{aString:aString},$globals.AmdPackageTransport)});
  58399. //>>excludeEnd("ctx");
  58400. },
  58401. //>>excludeStart("ide", pragmas.excludeIdeData);
  58402. args: ["aString"],
  58403. source: "setPath: aString\x0a\x09\x22Set the path the the receiver's `namespace`\x22\x0a\x09\x0a\x09(require basicAt: 'config') value: #{\x0a\x09\x09'paths' -> #{\x0a\x09\x09\x09self namespace -> aString\x0a\x09\x09}\x0a\x09}.",
  58404. referencedClasses: [],
  58405. //>>excludeEnd("ide");
  58406. messageSends: ["value:", "basicAt:", "namespace"]
  58407. }),
  58408. $globals.AmdPackageTransport);
  58409. $core.addMethod(
  58410. $core.method({
  58411. selector: "setupFromJson:",
  58412. protocol: 'initialization',
  58413. fn: function (anObject){
  58414. var self=this;
  58415. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58416. return $core.withContext(function($ctx1) {
  58417. //>>excludeEnd("ctx");
  58418. self._namespace_($recv(anObject)._at_("amdNamespace"));
  58419. return self;
  58420. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58421. }, function($ctx1) {$ctx1.fill(self,"setupFromJson:",{anObject:anObject},$globals.AmdPackageTransport)});
  58422. //>>excludeEnd("ctx");
  58423. },
  58424. //>>excludeStart("ide", pragmas.excludeIdeData);
  58425. args: ["anObject"],
  58426. source: "setupFromJson: anObject\x0a\x09self namespace: (anObject at: 'amdNamespace')",
  58427. referencedClasses: [],
  58428. //>>excludeEnd("ide");
  58429. messageSends: ["namespace:", "at:"]
  58430. }),
  58431. $globals.AmdPackageTransport);
  58432. $core.addMethod(
  58433. $core.method({
  58434. selector: "namespace:",
  58435. protocol: 'instance creation',
  58436. fn: function (aString){
  58437. var self=this;
  58438. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58439. return $core.withContext(function($ctx1) {
  58440. //>>excludeEnd("ctx");
  58441. var $2,$3,$1;
  58442. $2=self._new();
  58443. $recv($2)._namespace_(aString);
  58444. $3=$recv($2)._yourself();
  58445. $1=$3;
  58446. return $1;
  58447. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58448. }, function($ctx1) {$ctx1.fill(self,"namespace:",{aString:aString},$globals.AmdPackageTransport.klass)});
  58449. //>>excludeEnd("ctx");
  58450. },
  58451. //>>excludeStart("ide", pragmas.excludeIdeData);
  58452. args: ["aString"],
  58453. source: "namespace: aString\x0a\x09^ self new\x0a\x09\x09namespace: aString;\x0a\x09\x09yourself",
  58454. referencedClasses: [],
  58455. //>>excludeEnd("ide");
  58456. messageSends: ["namespace:", "new", "yourself"]
  58457. }),
  58458. $globals.AmdPackageTransport.klass);
  58459. $core.addMethod(
  58460. $core.method({
  58461. selector: "type",
  58462. protocol: 'accessing',
  58463. fn: function (){
  58464. var self=this;
  58465. return "amd";
  58466. },
  58467. //>>excludeStart("ide", pragmas.excludeIdeData);
  58468. args: [],
  58469. source: "type\x0a\x09^ 'amd'",
  58470. referencedClasses: [],
  58471. //>>excludeEnd("ide");
  58472. messageSends: []
  58473. }),
  58474. $globals.AmdPackageTransport.klass);
  58475. $core.addMethod(
  58476. $core.method({
  58477. selector: "commit",
  58478. protocol: '*Kernel-ImportExport',
  58479. fn: function (){
  58480. var self=this;
  58481. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58482. return $core.withContext(function($ctx1) {
  58483. //>>excludeEnd("ctx");
  58484. var $1;
  58485. $1=$recv(self._transport())._commit();
  58486. return $1;
  58487. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58488. }, function($ctx1) {$ctx1.fill(self,"commit",{},$globals.Package)});
  58489. //>>excludeEnd("ctx");
  58490. },
  58491. //>>excludeStart("ide", pragmas.excludeIdeData);
  58492. args: [],
  58493. source: "commit\x0a\x09^ self transport commit",
  58494. referencedClasses: [],
  58495. //>>excludeEnd("ide");
  58496. messageSends: ["commit", "transport"]
  58497. }),
  58498. $globals.Package);
  58499. $core.addMethod(
  58500. $core.method({
  58501. selector: "load",
  58502. protocol: '*Kernel-ImportExport',
  58503. fn: function (){
  58504. var self=this;
  58505. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58506. return $core.withContext(function($ctx1) {
  58507. //>>excludeEnd("ctx");
  58508. var $1;
  58509. $1=$recv(self._transport())._load();
  58510. return $1;
  58511. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58512. }, function($ctx1) {$ctx1.fill(self,"load",{},$globals.Package)});
  58513. //>>excludeEnd("ctx");
  58514. },
  58515. //>>excludeStart("ide", pragmas.excludeIdeData);
  58516. args: [],
  58517. source: "load\x0a\x09^ self transport load",
  58518. referencedClasses: [],
  58519. //>>excludeEnd("ide");
  58520. messageSends: ["load", "transport"]
  58521. }),
  58522. $globals.Package);
  58523. $core.addMethod(
  58524. $core.method({
  58525. selector: "loadFromNamespace:",
  58526. protocol: '*Kernel-ImportExport',
  58527. fn: function (aString){
  58528. var self=this;
  58529. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58530. return $core.withContext(function($ctx1) {
  58531. //>>excludeEnd("ctx");
  58532. var $2,$3,$1;
  58533. $2=self._transport();
  58534. $recv($2)._namespace_(aString);
  58535. $3=$recv($2)._load();
  58536. $1=$3;
  58537. return $1;
  58538. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58539. }, function($ctx1) {$ctx1.fill(self,"loadFromNamespace:",{aString:aString},$globals.Package)});
  58540. //>>excludeEnd("ctx");
  58541. },
  58542. //>>excludeStart("ide", pragmas.excludeIdeData);
  58543. args: ["aString"],
  58544. source: "loadFromNamespace: aString\x0a\x09^ self transport\x0a\x09\x09namespace: aString;\x0a\x09\x09load",
  58545. referencedClasses: [],
  58546. //>>excludeEnd("ide");
  58547. messageSends: ["namespace:", "transport", "load"]
  58548. }),
  58549. $globals.Package);
  58550. $core.addMethod(
  58551. $core.method({
  58552. selector: "load:",
  58553. protocol: '*Kernel-ImportExport',
  58554. fn: function (aPackageName){
  58555. var self=this;
  58556. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58557. return $core.withContext(function($ctx1) {
  58558. //>>excludeEnd("ctx");
  58559. $recv(self._named_(aPackageName))._load();
  58560. return self;
  58561. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58562. }, function($ctx1) {$ctx1.fill(self,"load:",{aPackageName:aPackageName},$globals.Package.klass)});
  58563. //>>excludeEnd("ctx");
  58564. },
  58565. //>>excludeStart("ide", pragmas.excludeIdeData);
  58566. args: ["aPackageName"],
  58567. source: "load: aPackageName\x0a\x09(self named: aPackageName) load",
  58568. referencedClasses: [],
  58569. //>>excludeEnd("ide");
  58570. messageSends: ["load", "named:"]
  58571. }),
  58572. $globals.Package.klass);
  58573. $core.addMethod(
  58574. $core.method({
  58575. selector: "load:fromNamespace:",
  58576. protocol: '*Kernel-ImportExport',
  58577. fn: function (aPackageName,aString){
  58578. var self=this;
  58579. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58580. return $core.withContext(function($ctx1) {
  58581. //>>excludeEnd("ctx");
  58582. $recv(self._named_(aPackageName))._loadFromNamespace_(aString);
  58583. return self;
  58584. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58585. }, function($ctx1) {$ctx1.fill(self,"load:fromNamespace:",{aPackageName:aPackageName,aString:aString},$globals.Package.klass)});
  58586. //>>excludeEnd("ctx");
  58587. },
  58588. //>>excludeStart("ide", pragmas.excludeIdeData);
  58589. args: ["aPackageName", "aString"],
  58590. source: "load: aPackageName fromNamespace: aString\x0a\x09(self named: aPackageName) loadFromNamespace: aString",
  58591. referencedClasses: [],
  58592. //>>excludeEnd("ide");
  58593. messageSends: ["loadFromNamespace:", "named:"]
  58594. }),
  58595. $globals.Package.klass);
  58596. });
  58597. define("amber_core/Kernel-Tests", ["amber/boot", "amber_core/SUnit", "amber_core/Kernel-Objects"], function($boot){
  58598. var $core=$boot.api,nil=$boot.nil,$recv=$boot.asReceiver,$globals=$boot.globals;
  58599. var smalltalk=$core,_st=$recv,globals=$globals;
  58600. $core.addPackage('Kernel-Tests');
  58601. $core.packages["Kernel-Tests"].transport = {"type":"amd","amdNamespace":"amber_core"};
  58602. $core.addClass('AnnouncementSubscriptionTest', $globals.TestCase, [], 'Kernel-Tests');
  58603. $core.addMethod(
  58604. $core.method({
  58605. selector: "testAddExtensionMethod",
  58606. protocol: 'tests',
  58607. fn: function (){
  58608. var self=this;
  58609. var method,dirty;
  58610. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58611. return $core.withContext(function($ctx1) {
  58612. //>>excludeEnd("ctx");
  58613. var $2,$1,$4,$3,$5,$8,$7,$6,$9,$10;
  58614. $2=self._class();
  58615. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58616. $ctx1.sendIdx["class"]=1;
  58617. //>>excludeEnd("ctx");
  58618. $1=$recv($2)._package();
  58619. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58620. $ctx1.sendIdx["package"]=1;
  58621. //>>excludeEnd("ctx");
  58622. dirty=$recv($1)._isDirty();
  58623. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58624. $ctx1.sendIdx["isDirty"]=1;
  58625. //>>excludeEnd("ctx");
  58626. $4=self._class();
  58627. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58628. $ctx1.sendIdx["class"]=2;
  58629. //>>excludeEnd("ctx");
  58630. $3=$recv($4)._package();
  58631. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58632. $ctx1.sendIdx["package"]=2;
  58633. //>>excludeEnd("ctx");
  58634. $recv($3)._beClean();
  58635. $5=self._class();
  58636. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58637. $ctx1.sendIdx["class"]=3;
  58638. //>>excludeEnd("ctx");
  58639. method=$recv($5)._compile_protocol_("doNothing","**not-a-package");
  58640. $8=self._class();
  58641. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58642. $ctx1.sendIdx["class"]=4;
  58643. //>>excludeEnd("ctx");
  58644. $7=$recv($8)._package();
  58645. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58646. $ctx1.sendIdx["package"]=3;
  58647. //>>excludeEnd("ctx");
  58648. $6=$recv($7)._isDirty();
  58649. self._deny_($6);
  58650. $9=self._class();
  58651. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58652. $ctx1.sendIdx["class"]=5;
  58653. //>>excludeEnd("ctx");
  58654. $recv($9)._removeCompiledMethod_(method);
  58655. $10=dirty;
  58656. if($core.assert($10)){
  58657. $recv($recv(self._class())._package())._beDirty();
  58658. };
  58659. return self;
  58660. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58661. }, function($ctx1) {$ctx1.fill(self,"testAddExtensionMethod",{method:method,dirty:dirty},$globals.AnnouncementSubscriptionTest)});
  58662. //>>excludeEnd("ctx");
  58663. },
  58664. //>>excludeStart("ide", pragmas.excludeIdeData);
  58665. args: [],
  58666. 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 ]",
  58667. referencedClasses: [],
  58668. //>>excludeEnd("ide");
  58669. messageSends: ["isDirty", "package", "class", "beClean", "compile:protocol:", "deny:", "removeCompiledMethod:", "ifTrue:", "beDirty"]
  58670. }),
  58671. $globals.AnnouncementSubscriptionTest);
  58672. $core.addMethod(
  58673. $core.method({
  58674. selector: "testHandlesAnnouncement",
  58675. protocol: 'tests',
  58676. fn: function (){
  58677. var self=this;
  58678. var subscription,announcementClass1,announcementClass2,classBuilder;
  58679. function $ClassBuilder(){return $globals.ClassBuilder||(typeof ClassBuilder=="undefined"?nil:ClassBuilder)}
  58680. function $SystemAnnouncement(){return $globals.SystemAnnouncement||(typeof SystemAnnouncement=="undefined"?nil:SystemAnnouncement)}
  58681. function $AnnouncementSubscription(){return $globals.AnnouncementSubscription||(typeof AnnouncementSubscription=="undefined"?nil:AnnouncementSubscription)}
  58682. function $Object(){return $globals.Object||(typeof Object=="undefined"?nil:Object)}
  58683. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58684. return $core.withContext(function($ctx1) {
  58685. //>>excludeEnd("ctx");
  58686. var $1,$2;
  58687. classBuilder=$recv($ClassBuilder())._new();
  58688. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58689. $ctx1.sendIdx["new"]=1;
  58690. //>>excludeEnd("ctx");
  58691. announcementClass1=$recv(classBuilder)._basicAddSubclassOf_named_instanceVariableNames_package_($SystemAnnouncement(),"TestAnnouncement1",[],"Kernel-Tests");
  58692. subscription=$recv($recv($AnnouncementSubscription())._new())._announcementClass_($SystemAnnouncement());
  58693. $1=$recv(subscription)._handlesAnnouncement_($SystemAnnouncement());
  58694. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58695. $ctx1.sendIdx["handlesAnnouncement:"]=1;
  58696. //>>excludeEnd("ctx");
  58697. self._assert_equals_($1,true);
  58698. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58699. $ctx1.sendIdx["assert:equals:"]=1;
  58700. //>>excludeEnd("ctx");
  58701. $2=$recv(subscription)._handlesAnnouncement_(announcementClass1);
  58702. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58703. $ctx1.sendIdx["handlesAnnouncement:"]=2;
  58704. //>>excludeEnd("ctx");
  58705. self._assert_equals_($2,true);
  58706. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58707. $ctx1.sendIdx["assert:equals:"]=2;
  58708. //>>excludeEnd("ctx");
  58709. self._assert_equals_($recv(subscription)._handlesAnnouncement_($Object()),false);
  58710. $recv(classBuilder)._basicRemoveClass_(announcementClass1);
  58711. return self;
  58712. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58713. }, function($ctx1) {$ctx1.fill(self,"testHandlesAnnouncement",{subscription:subscription,announcementClass1:announcementClass1,announcementClass2:announcementClass2,classBuilder:classBuilder},$globals.AnnouncementSubscriptionTest)});
  58714. //>>excludeEnd("ctx");
  58715. },
  58716. //>>excludeStart("ide", pragmas.excludeIdeData);
  58717. args: [],
  58718. source: "testHandlesAnnouncement\x0a\x09| subscription announcementClass1 announcementClass2 classBuilder |\x0a\x09\x0a\x09classBuilder := ClassBuilder new.\x0a\x09announcementClass1 := classBuilder basicAddSubclassOf: SystemAnnouncement named: 'TestAnnouncement1' instanceVariableNames: #() 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) equals: true.\x0a\x09\x22Test whether a subclass triggers the announcement\x22\x0a\x09self assert: (subscription handlesAnnouncement: announcementClass1) equals: true.\x0a\x09\x22Test whether an unrelated class does not trigger the announcement\x22\x0a\x09self assert: (subscription handlesAnnouncement: Object) equals: false.\x0a\x09\x0a\x09classBuilder basicRemoveClass: announcementClass1.",
  58719. referencedClasses: ["ClassBuilder", "SystemAnnouncement", "AnnouncementSubscription", "Object"],
  58720. //>>excludeEnd("ide");
  58721. messageSends: ["new", "basicAddSubclassOf:named:instanceVariableNames:package:", "announcementClass:", "assert:equals:", "handlesAnnouncement:", "basicRemoveClass:"]
  58722. }),
  58723. $globals.AnnouncementSubscriptionTest);
  58724. $core.addClass('AnnouncerTest', $globals.TestCase, [], 'Kernel-Tests');
  58725. $core.addMethod(
  58726. $core.method({
  58727. selector: "testOnDo",
  58728. protocol: 'tests',
  58729. fn: function (){
  58730. var self=this;
  58731. var counter,announcer;
  58732. function $Announcer(){return $globals.Announcer||(typeof Announcer=="undefined"?nil:Announcer)}
  58733. function $SystemAnnouncement(){return $globals.SystemAnnouncement||(typeof SystemAnnouncement=="undefined"?nil:SystemAnnouncement)}
  58734. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58735. return $core.withContext(function($ctx1) {
  58736. //>>excludeEnd("ctx");
  58737. var $1,$2;
  58738. counter=(0);
  58739. announcer=$recv($Announcer())._new();
  58740. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58741. $ctx1.sendIdx["new"]=1;
  58742. //>>excludeEnd("ctx");
  58743. $recv(announcer)._on_do_($SystemAnnouncement(),(function(){
  58744. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58745. return $core.withContext(function($ctx2) {
  58746. //>>excludeEnd("ctx");
  58747. counter=$recv(counter).__plus((1));
  58748. return counter;
  58749. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58750. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  58751. //>>excludeEnd("ctx");
  58752. }));
  58753. $1=announcer;
  58754. $2=$recv($SystemAnnouncement())._new();
  58755. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58756. $ctx1.sendIdx["new"]=2;
  58757. //>>excludeEnd("ctx");
  58758. $recv($1)._announce_($2);
  58759. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58760. $ctx1.sendIdx["announce:"]=1;
  58761. //>>excludeEnd("ctx");
  58762. self._assert_equals_(counter,(1));
  58763. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58764. $ctx1.sendIdx["assert:equals:"]=1;
  58765. //>>excludeEnd("ctx");
  58766. $recv(announcer)._announce_($recv($SystemAnnouncement())._new());
  58767. self._assert_equals_(counter,(2));
  58768. return self;
  58769. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58770. }, function($ctx1) {$ctx1.fill(self,"testOnDo",{counter:counter,announcer:announcer},$globals.AnnouncerTest)});
  58771. //>>excludeEnd("ctx");
  58772. },
  58773. //>>excludeStart("ide", pragmas.excludeIdeData);
  58774. args: [],
  58775. 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.",
  58776. referencedClasses: ["Announcer", "SystemAnnouncement"],
  58777. //>>excludeEnd("ide");
  58778. messageSends: ["new", "on:do:", "+", "announce:", "assert:equals:"]
  58779. }),
  58780. $globals.AnnouncerTest);
  58781. $core.addMethod(
  58782. $core.method({
  58783. selector: "testOnDoFor",
  58784. protocol: 'tests',
  58785. fn: function (){
  58786. var self=this;
  58787. var counter,announcer;
  58788. function $Announcer(){return $globals.Announcer||(typeof Announcer=="undefined"?nil:Announcer)}
  58789. function $SystemAnnouncement(){return $globals.SystemAnnouncement||(typeof SystemAnnouncement=="undefined"?nil:SystemAnnouncement)}
  58790. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58791. return $core.withContext(function($ctx1) {
  58792. //>>excludeEnd("ctx");
  58793. var $1,$2,$3,$4;
  58794. counter=(0);
  58795. announcer=$recv($Announcer())._new();
  58796. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58797. $ctx1.sendIdx["new"]=1;
  58798. //>>excludeEnd("ctx");
  58799. $recv(announcer)._on_do_for_($SystemAnnouncement(),(function(){
  58800. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58801. return $core.withContext(function($ctx2) {
  58802. //>>excludeEnd("ctx");
  58803. counter=$recv(counter).__plus((1));
  58804. return counter;
  58805. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58806. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  58807. //>>excludeEnd("ctx");
  58808. }),self);
  58809. $1=announcer;
  58810. $2=$recv($SystemAnnouncement())._new();
  58811. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58812. $ctx1.sendIdx["new"]=2;
  58813. //>>excludeEnd("ctx");
  58814. $recv($1)._announce_($2);
  58815. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58816. $ctx1.sendIdx["announce:"]=1;
  58817. //>>excludeEnd("ctx");
  58818. self._assert_equals_(counter,(1));
  58819. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58820. $ctx1.sendIdx["assert:equals:"]=1;
  58821. //>>excludeEnd("ctx");
  58822. $3=announcer;
  58823. $4=$recv($SystemAnnouncement())._new();
  58824. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58825. $ctx1.sendIdx["new"]=3;
  58826. //>>excludeEnd("ctx");
  58827. $recv($3)._announce_($4);
  58828. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58829. $ctx1.sendIdx["announce:"]=2;
  58830. //>>excludeEnd("ctx");
  58831. self._assert_equals_(counter,(2));
  58832. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58833. $ctx1.sendIdx["assert:equals:"]=2;
  58834. //>>excludeEnd("ctx");
  58835. $recv(announcer)._unsubscribe_(self);
  58836. $recv(announcer)._announce_($recv($SystemAnnouncement())._new());
  58837. self._assert_equals_(counter,(2));
  58838. return self;
  58839. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58840. }, function($ctx1) {$ctx1.fill(self,"testOnDoFor",{counter:counter,announcer:announcer},$globals.AnnouncerTest)});
  58841. //>>excludeEnd("ctx");
  58842. },
  58843. //>>excludeStart("ide", pragmas.excludeIdeData);
  58844. args: [],
  58845. 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.",
  58846. referencedClasses: ["Announcer", "SystemAnnouncement"],
  58847. //>>excludeEnd("ide");
  58848. messageSends: ["new", "on:do:for:", "+", "announce:", "assert:equals:", "unsubscribe:"]
  58849. }),
  58850. $globals.AnnouncerTest);
  58851. $core.addMethod(
  58852. $core.method({
  58853. selector: "testOnDoOnce",
  58854. protocol: 'tests',
  58855. fn: function (){
  58856. var self=this;
  58857. var counter,announcer;
  58858. function $Announcer(){return $globals.Announcer||(typeof Announcer=="undefined"?nil:Announcer)}
  58859. function $SystemAnnouncement(){return $globals.SystemAnnouncement||(typeof SystemAnnouncement=="undefined"?nil:SystemAnnouncement)}
  58860. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58861. return $core.withContext(function($ctx1) {
  58862. //>>excludeEnd("ctx");
  58863. var $1,$2;
  58864. counter=(0);
  58865. announcer=$recv($Announcer())._new();
  58866. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58867. $ctx1.sendIdx["new"]=1;
  58868. //>>excludeEnd("ctx");
  58869. $recv(announcer)._on_doOnce_($SystemAnnouncement(),(function(){
  58870. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58871. return $core.withContext(function($ctx2) {
  58872. //>>excludeEnd("ctx");
  58873. counter=$recv(counter).__plus((1));
  58874. return counter;
  58875. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58876. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  58877. //>>excludeEnd("ctx");
  58878. }));
  58879. $1=announcer;
  58880. $2=$recv($SystemAnnouncement())._new();
  58881. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58882. $ctx1.sendIdx["new"]=2;
  58883. //>>excludeEnd("ctx");
  58884. $recv($1)._announce_($2);
  58885. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58886. $ctx1.sendIdx["announce:"]=1;
  58887. //>>excludeEnd("ctx");
  58888. self._assert_equals_(counter,(1));
  58889. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58890. $ctx1.sendIdx["assert:equals:"]=1;
  58891. //>>excludeEnd("ctx");
  58892. $recv(announcer)._announce_($recv($SystemAnnouncement())._new());
  58893. self._assert_equals_(counter,(1));
  58894. return self;
  58895. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58896. }, function($ctx1) {$ctx1.fill(self,"testOnDoOnce",{counter:counter,announcer:announcer},$globals.AnnouncerTest)});
  58897. //>>excludeEnd("ctx");
  58898. },
  58899. //>>excludeStart("ide", pragmas.excludeIdeData);
  58900. args: [],
  58901. 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.",
  58902. referencedClasses: ["Announcer", "SystemAnnouncement"],
  58903. //>>excludeEnd("ide");
  58904. messageSends: ["new", "on:doOnce:", "+", "announce:", "assert:equals:"]
  58905. }),
  58906. $globals.AnnouncerTest);
  58907. $core.addClass('BlockClosureTest', $globals.TestCase, [], 'Kernel-Tests');
  58908. $core.addMethod(
  58909. $core.method({
  58910. selector: "testCanClearInterval",
  58911. protocol: 'tests',
  58912. fn: function (){
  58913. var self=this;
  58914. function $Error(){return $globals.Error||(typeof Error=="undefined"?nil:Error)}
  58915. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58916. return $core.withContext(function($ctx1) {
  58917. //>>excludeEnd("ctx");
  58918. self._shouldnt_raise_((function(){
  58919. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58920. return $core.withContext(function($ctx2) {
  58921. //>>excludeEnd("ctx");
  58922. return $recv($recv((function(){
  58923. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58924. return $core.withContext(function($ctx3) {
  58925. //>>excludeEnd("ctx");
  58926. return $recv($recv($Error())._new())._signal();
  58927. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58928. }, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)});
  58929. //>>excludeEnd("ctx");
  58930. }))._valueWithInterval_((0)))._clearInterval();
  58931. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58932. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  58933. //>>excludeEnd("ctx");
  58934. }),$Error());
  58935. return self;
  58936. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58937. }, function($ctx1) {$ctx1.fill(self,"testCanClearInterval",{},$globals.BlockClosureTest)});
  58938. //>>excludeEnd("ctx");
  58939. },
  58940. //>>excludeStart("ide", pragmas.excludeIdeData);
  58941. args: [],
  58942. source: "testCanClearInterval\x0a\x09self shouldnt: [ ([ Error new signal ] valueWithInterval: 0) clearInterval ] raise: Error",
  58943. referencedClasses: ["Error"],
  58944. //>>excludeEnd("ide");
  58945. messageSends: ["shouldnt:raise:", "clearInterval", "valueWithInterval:", "signal", "new"]
  58946. }),
  58947. $globals.BlockClosureTest);
  58948. $core.addMethod(
  58949. $core.method({
  58950. selector: "testCanClearTimeout",
  58951. protocol: 'tests',
  58952. fn: function (){
  58953. var self=this;
  58954. function $Error(){return $globals.Error||(typeof Error=="undefined"?nil:Error)}
  58955. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58956. return $core.withContext(function($ctx1) {
  58957. //>>excludeEnd("ctx");
  58958. self._shouldnt_raise_((function(){
  58959. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58960. return $core.withContext(function($ctx2) {
  58961. //>>excludeEnd("ctx");
  58962. return $recv($recv((function(){
  58963. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58964. return $core.withContext(function($ctx3) {
  58965. //>>excludeEnd("ctx");
  58966. return $recv($recv($Error())._new())._signal();
  58967. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58968. }, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)});
  58969. //>>excludeEnd("ctx");
  58970. }))._valueWithTimeout_((0)))._clearTimeout();
  58971. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58972. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  58973. //>>excludeEnd("ctx");
  58974. }),$Error());
  58975. return self;
  58976. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58977. }, function($ctx1) {$ctx1.fill(self,"testCanClearTimeout",{},$globals.BlockClosureTest)});
  58978. //>>excludeEnd("ctx");
  58979. },
  58980. //>>excludeStart("ide", pragmas.excludeIdeData);
  58981. args: [],
  58982. source: "testCanClearTimeout\x0a\x09self shouldnt: [ ([ Error new signal ] valueWithTimeout: 0) clearTimeout ] raise: Error",
  58983. referencedClasses: ["Error"],
  58984. //>>excludeEnd("ide");
  58985. messageSends: ["shouldnt:raise:", "clearTimeout", "valueWithTimeout:", "signal", "new"]
  58986. }),
  58987. $globals.BlockClosureTest);
  58988. $core.addMethod(
  58989. $core.method({
  58990. selector: "testCompiledSource",
  58991. protocol: 'tests',
  58992. fn: function (){
  58993. var self=this;
  58994. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58995. return $core.withContext(function($ctx1) {
  58996. //>>excludeEnd("ctx");
  58997. self._assert_($recv($recv((function(){
  58998. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58999. return $core.withContext(function($ctx2) {
  59000. //>>excludeEnd("ctx");
  59001. return (1).__plus((1));
  59002. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59003. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  59004. //>>excludeEnd("ctx");
  59005. }))._compiledSource())._includesSubString_("function"));
  59006. return self;
  59007. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59008. }, function($ctx1) {$ctx1.fill(self,"testCompiledSource",{},$globals.BlockClosureTest)});
  59009. //>>excludeEnd("ctx");
  59010. },
  59011. //>>excludeStart("ide", pragmas.excludeIdeData);
  59012. args: [],
  59013. source: "testCompiledSource\x0a\x09self assert: ([ 1+1 ] compiledSource includesSubString: 'function')",
  59014. referencedClasses: [],
  59015. //>>excludeEnd("ide");
  59016. messageSends: ["assert:", "includesSubString:", "compiledSource", "+"]
  59017. }),
  59018. $globals.BlockClosureTest);
  59019. $core.addMethod(
  59020. $core.method({
  59021. selector: "testCurrySelf",
  59022. protocol: 'tests',
  59023. fn: function (){
  59024. var self=this;
  59025. var curriedMethod,array;
  59026. function $ClassBuilder(){return $globals.ClassBuilder||(typeof ClassBuilder=="undefined"?nil:ClassBuilder)}
  59027. function $Array(){return $globals.Array||(typeof Array=="undefined"?nil:Array)}
  59028. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59029. return $core.withContext(function($ctx1) {
  59030. //>>excludeEnd("ctx");
  59031. curriedMethod=$recv($recv((function(selfarg,x){
  59032. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59033. return $core.withContext(function($ctx2) {
  59034. //>>excludeEnd("ctx");
  59035. return $recv(selfarg)._at_(x);
  59036. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59037. }, function($ctx2) {$ctx2.fillBlock({selfarg:selfarg,x:x},$ctx1,1)});
  59038. //>>excludeEnd("ctx");
  59039. }))._currySelf())._asCompiledMethod_("foo:");
  59040. array=[(3), (1), (4)];
  59041. $recv($recv($ClassBuilder())._new())._installMethod_forClass_protocol_(curriedMethod,$Array(),"**test helper");
  59042. $recv((function(){
  59043. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59044. return $core.withContext(function($ctx2) {
  59045. //>>excludeEnd("ctx");
  59046. return self._assert_equals_($recv(array)._foo_((2)),(1));
  59047. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59048. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
  59049. //>>excludeEnd("ctx");
  59050. }))._ensure_((function(){
  59051. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59052. return $core.withContext(function($ctx2) {
  59053. //>>excludeEnd("ctx");
  59054. return $recv($Array())._removeCompiledMethod_(curriedMethod);
  59055. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59056. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,3)});
  59057. //>>excludeEnd("ctx");
  59058. }));
  59059. return self;
  59060. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59061. }, function($ctx1) {$ctx1.fill(self,"testCurrySelf",{curriedMethod:curriedMethod,array:array},$globals.BlockClosureTest)});
  59062. //>>excludeEnd("ctx");
  59063. },
  59064. //>>excludeStart("ide", pragmas.excludeIdeData);
  59065. args: [],
  59066. source: "testCurrySelf\x0a\x09| curriedMethod array |\x0a\x09curriedMethod := [ :selfarg :x | selfarg at: x ] currySelf asCompiledMethod: 'foo:'.\x0a\x09array := #(3 1 4).\x0a\x09ClassBuilder new installMethod: curriedMethod forClass: Array protocol: '**test helper'.\x0a\x09[ self assert: (array foo: 2) equals: 1 ]\x0a\x09ensure: [ Array removeCompiledMethod: curriedMethod ]",
  59067. referencedClasses: ["ClassBuilder", "Array"],
  59068. //>>excludeEnd("ide");
  59069. messageSends: ["asCompiledMethod:", "currySelf", "at:", "installMethod:forClass:protocol:", "new", "ensure:", "assert:equals:", "foo:", "removeCompiledMethod:"]
  59070. }),
  59071. $globals.BlockClosureTest);
  59072. $core.addMethod(
  59073. $core.method({
  59074. selector: "testEnsure",
  59075. protocol: 'tests',
  59076. fn: function (){
  59077. var self=this;
  59078. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59079. return $core.withContext(function($ctx1) {
  59080. //>>excludeEnd("ctx");
  59081. self._assert_equals_($recv((function(){
  59082. return (3);
  59083. }))._ensure_((function(){
  59084. return (4);
  59085. })),(3));
  59086. return self;
  59087. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59088. }, function($ctx1) {$ctx1.fill(self,"testEnsure",{},$globals.BlockClosureTest)});
  59089. //>>excludeEnd("ctx");
  59090. },
  59091. //>>excludeStart("ide", pragmas.excludeIdeData);
  59092. args: [],
  59093. source: "testEnsure\x0a\x09self assert: ([ 3 ] ensure: [ 4 ]) equals: 3",
  59094. referencedClasses: [],
  59095. //>>excludeEnd("ide");
  59096. messageSends: ["assert:equals:", "ensure:"]
  59097. }),
  59098. $globals.BlockClosureTest);
  59099. $core.addMethod(
  59100. $core.method({
  59101. selector: "testEnsureRaises",
  59102. protocol: 'tests',
  59103. fn: function (){
  59104. var self=this;
  59105. function $Error(){return $globals.Error||(typeof Error=="undefined"?nil:Error)}
  59106. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59107. return $core.withContext(function($ctx1) {
  59108. //>>excludeEnd("ctx");
  59109. self._should_raise_((function(){
  59110. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59111. return $core.withContext(function($ctx2) {
  59112. //>>excludeEnd("ctx");
  59113. return $recv((function(){
  59114. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59115. return $core.withContext(function($ctx3) {
  59116. //>>excludeEnd("ctx");
  59117. return $recv($recv($Error())._new())._signal();
  59118. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59119. }, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)});
  59120. //>>excludeEnd("ctx");
  59121. }))._ensure_((function(){
  59122. return true;
  59123. }));
  59124. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59125. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  59126. //>>excludeEnd("ctx");
  59127. }),$Error());
  59128. return self;
  59129. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59130. }, function($ctx1) {$ctx1.fill(self,"testEnsureRaises",{},$globals.BlockClosureTest)});
  59131. //>>excludeEnd("ctx");
  59132. },
  59133. //>>excludeStart("ide", pragmas.excludeIdeData);
  59134. args: [],
  59135. source: "testEnsureRaises\x0a\x09self should: [ [Error new signal ] ensure: [ true ]] raise: Error",
  59136. referencedClasses: ["Error"],
  59137. //>>excludeEnd("ide");
  59138. messageSends: ["should:raise:", "ensure:", "signal", "new"]
  59139. }),
  59140. $globals.BlockClosureTest);
  59141. $core.addMethod(
  59142. $core.method({
  59143. selector: "testExceptionSemantics",
  59144. protocol: 'tests',
  59145. fn: function (){
  59146. var self=this;
  59147. function $Error(){return $globals.Error||(typeof Error=="undefined"?nil:Error)}
  59148. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59149. return $core.withContext(function($ctx1) {
  59150. //>>excludeEnd("ctx");
  59151. self._timeout_((100));
  59152. $recv(self._async_((function(){
  59153. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59154. return $core.withContext(function($ctx2) {
  59155. //>>excludeEnd("ctx");
  59156. return $recv((function(){
  59157. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59158. return $core.withContext(function($ctx3) {
  59159. //>>excludeEnd("ctx");
  59160. self._assert_(true);
  59161. $recv($Error())._signal();
  59162. self._deny_(true);
  59163. return self._finished();
  59164. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59165. $ctx3.sendIdx["finished"]=1;
  59166. //>>excludeEnd("ctx");
  59167. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59168. }, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)});
  59169. //>>excludeEnd("ctx");
  59170. }))._on_do_($Error(),(function(ex){
  59171. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59172. return $core.withContext(function($ctx3) {
  59173. //>>excludeEnd("ctx");
  59174. return self._finished();
  59175. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59176. }, function($ctx3) {$ctx3.fillBlock({ex:ex},$ctx2,3)});
  59177. //>>excludeEnd("ctx");
  59178. }));
  59179. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59180. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  59181. //>>excludeEnd("ctx");
  59182. })))._valueWithTimeout_((0));
  59183. return self;
  59184. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59185. }, function($ctx1) {$ctx1.fill(self,"testExceptionSemantics",{},$globals.BlockClosureTest)});
  59186. //>>excludeEnd("ctx");
  59187. },
  59188. //>>excludeStart("ide", pragmas.excludeIdeData);
  59189. args: [],
  59190. source: "testExceptionSemantics\x0a\x09\x22See https://github.com/NicolasPetton/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",
  59191. referencedClasses: ["Error"],
  59192. //>>excludeEnd("ide");
  59193. messageSends: ["timeout:", "valueWithTimeout:", "async:", "on:do:", "assert:", "signal", "deny:", "finished"]
  59194. }),
  59195. $globals.BlockClosureTest);
  59196. $core.addMethod(
  59197. $core.method({
  59198. selector: "testNewWithValues",
  59199. protocol: 'tests',
  59200. fn: function (){
  59201. var self=this;
  59202. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59203. return $core.withContext(function($ctx1) {
  59204. //>>excludeEnd("ctx");
  59205. function TestConstructor(arg1, arg2, arg3) {}
  59206. TestConstructor.prototype.name = 'theTestPrototype';
  59207. var wrappedConstructor = $recv(TestConstructor);
  59208. var result = wrappedConstructor._newWithValues_([1, 2, 3 ]);
  59209. self._assert_(result instanceof TestConstructor);
  59210. self._assert_equals_(result.name, 'theTestPrototype');
  59211. "newWithValues: cannot help if the argument list is wrong, and should warn that a mistake was made."
  59212. self._should_raise_(function () {wrappedConstructor._newWithValues_('single argument');}, $globals.Error);;
  59213. return self;
  59214. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59215. }, function($ctx1) {$ctx1.fill(self,"testNewWithValues",{},$globals.BlockClosureTest)});
  59216. //>>excludeEnd("ctx");
  59217. },
  59218. //>>excludeStart("ide", pragmas.excludeIdeData);
  59219. args: [],
  59220. source: "testNewWithValues\x0a<\x0a\x09function TestConstructor(arg1, arg2, arg3) {}\x0a\x09TestConstructor.prototype.name = 'theTestPrototype';\x0a\x0a\x09var wrappedConstructor = $recv(TestConstructor);\x0a\x09var result = wrappedConstructor._newWithValues_([1, 2, 3 ]);\x0a\x09self._assert_(result instanceof TestConstructor);\x0a\x09self._assert_equals_(result.name, 'theTestPrototype');\x0a\x0a\x09\x22newWithValues: cannot help if the argument list is wrong, and should warn that a mistake was made.\x22\x0a\x09self._should_raise_(function () {wrappedConstructor._newWithValues_('single argument');}, $globals.Error);\x0a>",
  59221. referencedClasses: [],
  59222. //>>excludeEnd("ide");
  59223. messageSends: []
  59224. }),
  59225. $globals.BlockClosureTest);
  59226. $core.addMethod(
  59227. $core.method({
  59228. selector: "testNumArgs",
  59229. protocol: 'tests',
  59230. fn: function (){
  59231. var self=this;
  59232. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59233. return $core.withContext(function($ctx1) {
  59234. //>>excludeEnd("ctx");
  59235. var $1;
  59236. $1=$recv((function(){
  59237. }))._numArgs();
  59238. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59239. $ctx1.sendIdx["numArgs"]=1;
  59240. //>>excludeEnd("ctx");
  59241. self._assert_equals_($1,(0));
  59242. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59243. $ctx1.sendIdx["assert:equals:"]=1;
  59244. //>>excludeEnd("ctx");
  59245. self._assert_equals_($recv((function(a,b){
  59246. }))._numArgs(),(2));
  59247. return self;
  59248. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59249. }, function($ctx1) {$ctx1.fill(self,"testNumArgs",{},$globals.BlockClosureTest)});
  59250. //>>excludeEnd("ctx");
  59251. },
  59252. //>>excludeStart("ide", pragmas.excludeIdeData);
  59253. args: [],
  59254. source: "testNumArgs\x0a\x09self assert: [] numArgs equals: 0.\x0a\x09self assert: [ :a :b | ] numArgs equals: 2",
  59255. referencedClasses: [],
  59256. //>>excludeEnd("ide");
  59257. messageSends: ["assert:equals:", "numArgs"]
  59258. }),
  59259. $globals.BlockClosureTest);
  59260. $core.addMethod(
  59261. $core.method({
  59262. selector: "testOnDo",
  59263. protocol: 'tests',
  59264. fn: function (){
  59265. var self=this;
  59266. function $Error(){return $globals.Error||(typeof Error=="undefined"?nil:Error)}
  59267. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59268. return $core.withContext(function($ctx1) {
  59269. //>>excludeEnd("ctx");
  59270. self._assert_($recv((function(){
  59271. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59272. return $core.withContext(function($ctx2) {
  59273. //>>excludeEnd("ctx");
  59274. return $recv($recv($Error())._new())._signal();
  59275. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59276. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  59277. //>>excludeEnd("ctx");
  59278. }))._on_do_($Error(),(function(ex){
  59279. return true;
  59280. })));
  59281. return self;
  59282. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59283. }, function($ctx1) {$ctx1.fill(self,"testOnDo",{},$globals.BlockClosureTest)});
  59284. //>>excludeEnd("ctx");
  59285. },
  59286. //>>excludeStart("ide", pragmas.excludeIdeData);
  59287. args: [],
  59288. source: "testOnDo\x0a\x09self assert: ([ Error new signal ] on: Error do: [ :ex | true ])",
  59289. referencedClasses: ["Error"],
  59290. //>>excludeEnd("ide");
  59291. messageSends: ["assert:", "on:do:", "signal", "new"]
  59292. }),
  59293. $globals.BlockClosureTest);
  59294. $core.addMethod(
  59295. $core.method({
  59296. selector: "testValue",
  59297. protocol: 'tests',
  59298. fn: function (){
  59299. var self=this;
  59300. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59301. return $core.withContext(function($ctx1) {
  59302. //>>excludeEnd("ctx");
  59303. var $1;
  59304. $1=$recv((function(){
  59305. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59306. return $core.withContext(function($ctx2) {
  59307. //>>excludeEnd("ctx");
  59308. return (1).__plus((1));
  59309. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59310. $ctx2.sendIdx["+"]=1;
  59311. //>>excludeEnd("ctx");
  59312. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59313. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  59314. //>>excludeEnd("ctx");
  59315. }))._value();
  59316. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59317. $ctx1.sendIdx["value"]=1;
  59318. //>>excludeEnd("ctx");
  59319. self._assert_equals_($1,(2));
  59320. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59321. $ctx1.sendIdx["assert:equals:"]=1;
  59322. //>>excludeEnd("ctx");
  59323. self._assert_equals_($recv((function(x){
  59324. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59325. return $core.withContext(function($ctx2) {
  59326. //>>excludeEnd("ctx");
  59327. return $recv(x).__plus((1));
  59328. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59329. }, function($ctx2) {$ctx2.fillBlock({x:x},$ctx1,2)});
  59330. //>>excludeEnd("ctx");
  59331. }))._value_((2)),(3));
  59332. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59333. $ctx1.sendIdx["assert:equals:"]=2;
  59334. //>>excludeEnd("ctx");
  59335. self._assert_equals_($recv((function(x,y){
  59336. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59337. return $core.withContext(function($ctx2) {
  59338. //>>excludeEnd("ctx");
  59339. return $recv(x).__star(y);
  59340. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59341. }, function($ctx2) {$ctx2.fillBlock({x:x,y:y},$ctx1,3)});
  59342. //>>excludeEnd("ctx");
  59343. }))._value_value_((2),(4)),(8));
  59344. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59345. $ctx1.sendIdx["assert:equals:"]=3;
  59346. //>>excludeEnd("ctx");
  59347. self._assert_equals_($recv((function(a,b,c){
  59348. return (1);
  59349. }))._value(),(1));
  59350. return self;
  59351. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59352. }, function($ctx1) {$ctx1.fill(self,"testValue",{},$globals.BlockClosureTest)});
  59353. //>>excludeEnd("ctx");
  59354. },
  59355. //>>excludeStart("ide", pragmas.excludeIdeData);
  59356. args: [],
  59357. 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",
  59358. referencedClasses: [],
  59359. //>>excludeEnd("ide");
  59360. messageSends: ["assert:equals:", "value", "+", "value:", "value:value:", "*"]
  59361. }),
  59362. $globals.BlockClosureTest);
  59363. $core.addMethod(
  59364. $core.method({
  59365. selector: "testValueWithPossibleArguments",
  59366. protocol: 'tests',
  59367. fn: function (){
  59368. var self=this;
  59369. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59370. return $core.withContext(function($ctx1) {
  59371. //>>excludeEnd("ctx");
  59372. var $1,$2;
  59373. $1=$recv((function(){
  59374. return (1);
  59375. }))._valueWithPossibleArguments_([(3), (4)]);
  59376. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59377. $ctx1.sendIdx["valueWithPossibleArguments:"]=1;
  59378. //>>excludeEnd("ctx");
  59379. self._assert_equals_($1,(1));
  59380. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59381. $ctx1.sendIdx["assert:equals:"]=1;
  59382. //>>excludeEnd("ctx");
  59383. $2=$recv((function(a){
  59384. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59385. return $core.withContext(function($ctx2) {
  59386. //>>excludeEnd("ctx");
  59387. return $recv(a).__plus((4));
  59388. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59389. $ctx2.sendIdx["+"]=1;
  59390. //>>excludeEnd("ctx");
  59391. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59392. }, function($ctx2) {$ctx2.fillBlock({a:a},$ctx1,2)});
  59393. //>>excludeEnd("ctx");
  59394. }))._valueWithPossibleArguments_([(3), (4)]);
  59395. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59396. $ctx1.sendIdx["valueWithPossibleArguments:"]=2;
  59397. //>>excludeEnd("ctx");
  59398. self._assert_equals_($2,(7));
  59399. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59400. $ctx1.sendIdx["assert:equals:"]=2;
  59401. //>>excludeEnd("ctx");
  59402. self._assert_equals_($recv((function(a,b){
  59403. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59404. return $core.withContext(function($ctx2) {
  59405. //>>excludeEnd("ctx");
  59406. return $recv(a).__plus(b);
  59407. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59408. }, function($ctx2) {$ctx2.fillBlock({a:a,b:b},$ctx1,3)});
  59409. //>>excludeEnd("ctx");
  59410. }))._valueWithPossibleArguments_([(3), (4), (5)]),(7));
  59411. return self;
  59412. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59413. }, function($ctx1) {$ctx1.fill(self,"testValueWithPossibleArguments",{},$globals.BlockClosureTest)});
  59414. //>>excludeEnd("ctx");
  59415. },
  59416. //>>excludeStart("ide", pragmas.excludeIdeData);
  59417. args: [],
  59418. 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.",
  59419. referencedClasses: [],
  59420. //>>excludeEnd("ide");
  59421. messageSends: ["assert:equals:", "valueWithPossibleArguments:", "+"]
  59422. }),
  59423. $globals.BlockClosureTest);
  59424. $core.addMethod(
  59425. $core.method({
  59426. selector: "testWhileFalse",
  59427. protocol: 'tests',
  59428. fn: function (){
  59429. var self=this;
  59430. var i;
  59431. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59432. return $core.withContext(function($ctx1) {
  59433. //>>excludeEnd("ctx");
  59434. i=(0);
  59435. $recv((function(){
  59436. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59437. return $core.withContext(function($ctx2) {
  59438. //>>excludeEnd("ctx");
  59439. return $recv(i).__gt((5));
  59440. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59441. $ctx2.sendIdx[">"]=1;
  59442. //>>excludeEnd("ctx");
  59443. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59444. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  59445. //>>excludeEnd("ctx");
  59446. }))._whileFalse_((function(){
  59447. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59448. return $core.withContext(function($ctx2) {
  59449. //>>excludeEnd("ctx");
  59450. i=$recv(i).__plus((1));
  59451. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59452. $ctx2.sendIdx["+"]=1;
  59453. //>>excludeEnd("ctx");
  59454. return i;
  59455. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59456. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
  59457. //>>excludeEnd("ctx");
  59458. }));
  59459. self._assert_equals_(i,(6));
  59460. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59461. $ctx1.sendIdx["assert:equals:"]=1;
  59462. //>>excludeEnd("ctx");
  59463. i=(0);
  59464. $recv((function(){
  59465. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59466. return $core.withContext(function($ctx2) {
  59467. //>>excludeEnd("ctx");
  59468. i=$recv(i).__plus((1));
  59469. i;
  59470. return $recv(i).__gt((5));
  59471. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59472. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,3)});
  59473. //>>excludeEnd("ctx");
  59474. }))._whileFalse();
  59475. self._assert_equals_(i,(6));
  59476. return self;
  59477. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59478. }, function($ctx1) {$ctx1.fill(self,"testWhileFalse",{i:i},$globals.BlockClosureTest)});
  59479. //>>excludeEnd("ctx");
  59480. },
  59481. //>>excludeStart("ide", pragmas.excludeIdeData);
  59482. args: [],
  59483. 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",
  59484. referencedClasses: [],
  59485. //>>excludeEnd("ide");
  59486. messageSends: ["whileFalse:", ">", "+", "assert:equals:", "whileFalse"]
  59487. }),
  59488. $globals.BlockClosureTest);
  59489. $core.addMethod(
  59490. $core.method({
  59491. selector: "testWhileTrue",
  59492. protocol: 'tests',
  59493. fn: function (){
  59494. var self=this;
  59495. var i;
  59496. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59497. return $core.withContext(function($ctx1) {
  59498. //>>excludeEnd("ctx");
  59499. i=(0);
  59500. $recv((function(){
  59501. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59502. return $core.withContext(function($ctx2) {
  59503. //>>excludeEnd("ctx");
  59504. return $recv(i).__lt((5));
  59505. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59506. $ctx2.sendIdx["<"]=1;
  59507. //>>excludeEnd("ctx");
  59508. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59509. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  59510. //>>excludeEnd("ctx");
  59511. }))._whileTrue_((function(){
  59512. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59513. return $core.withContext(function($ctx2) {
  59514. //>>excludeEnd("ctx");
  59515. i=$recv(i).__plus((1));
  59516. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59517. $ctx2.sendIdx["+"]=1;
  59518. //>>excludeEnd("ctx");
  59519. return i;
  59520. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59521. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
  59522. //>>excludeEnd("ctx");
  59523. }));
  59524. self._assert_equals_(i,(5));
  59525. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59526. $ctx1.sendIdx["assert:equals:"]=1;
  59527. //>>excludeEnd("ctx");
  59528. i=(0);
  59529. $recv((function(){
  59530. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59531. return $core.withContext(function($ctx2) {
  59532. //>>excludeEnd("ctx");
  59533. i=$recv(i).__plus((1));
  59534. i;
  59535. return $recv(i).__lt((5));
  59536. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59537. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,3)});
  59538. //>>excludeEnd("ctx");
  59539. }))._whileTrue();
  59540. self._assert_equals_(i,(5));
  59541. return self;
  59542. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59543. }, function($ctx1) {$ctx1.fill(self,"testWhileTrue",{i:i},$globals.BlockClosureTest)});
  59544. //>>excludeEnd("ctx");
  59545. },
  59546. //>>excludeStart("ide", pragmas.excludeIdeData);
  59547. args: [],
  59548. 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",
  59549. referencedClasses: [],
  59550. //>>excludeEnd("ide");
  59551. messageSends: ["whileTrue:", "<", "+", "assert:equals:", "whileTrue"]
  59552. }),
  59553. $globals.BlockClosureTest);
  59554. $core.addClass('BooleanTest', $globals.TestCase, [], 'Kernel-Tests');
  59555. $core.addMethod(
  59556. $core.method({
  59557. selector: "testEquality",
  59558. protocol: 'tests',
  59559. fn: function (){
  59560. var self=this;
  59561. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59562. return $core.withContext(function($ctx1) {
  59563. //>>excludeEnd("ctx");
  59564. var $1,$2,$3,$4,$5,$6,$7,$8,$10,$9,$12,$11;
  59565. $1=(0).__eq(false);
  59566. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59567. $ctx1.sendIdx["="]=1;
  59568. //>>excludeEnd("ctx");
  59569. self._deny_($1);
  59570. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59571. $ctx1.sendIdx["deny:"]=1;
  59572. //>>excludeEnd("ctx");
  59573. $2=false.__eq((0));
  59574. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59575. $ctx1.sendIdx["="]=2;
  59576. //>>excludeEnd("ctx");
  59577. self._deny_($2);
  59578. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59579. $ctx1.sendIdx["deny:"]=2;
  59580. //>>excludeEnd("ctx");
  59581. $3="".__eq(false);
  59582. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59583. $ctx1.sendIdx["="]=3;
  59584. //>>excludeEnd("ctx");
  59585. self._deny_($3);
  59586. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59587. $ctx1.sendIdx["deny:"]=3;
  59588. //>>excludeEnd("ctx");
  59589. $4=false.__eq("");
  59590. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59591. $ctx1.sendIdx["="]=4;
  59592. //>>excludeEnd("ctx");
  59593. self._deny_($4);
  59594. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59595. $ctx1.sendIdx["deny:"]=4;
  59596. //>>excludeEnd("ctx");
  59597. $5=true.__eq(true);
  59598. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59599. $ctx1.sendIdx["="]=5;
  59600. //>>excludeEnd("ctx");
  59601. self._assert_($5);
  59602. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59603. $ctx1.sendIdx["assert:"]=1;
  59604. //>>excludeEnd("ctx");
  59605. $6=false.__eq(true);
  59606. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59607. $ctx1.sendIdx["="]=6;
  59608. //>>excludeEnd("ctx");
  59609. self._deny_($6);
  59610. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59611. $ctx1.sendIdx["deny:"]=5;
  59612. //>>excludeEnd("ctx");
  59613. $7=true.__eq(false);
  59614. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59615. $ctx1.sendIdx["="]=7;
  59616. //>>excludeEnd("ctx");
  59617. self._deny_($7);
  59618. $8=false.__eq(false);
  59619. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59620. $ctx1.sendIdx["="]=8;
  59621. //>>excludeEnd("ctx");
  59622. self._assert_($8);
  59623. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59624. $ctx1.sendIdx["assert:"]=2;
  59625. //>>excludeEnd("ctx");
  59626. $10=true._yourself();
  59627. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59628. $ctx1.sendIdx["yourself"]=1;
  59629. //>>excludeEnd("ctx");
  59630. $9=$recv($10).__eq(true);
  59631. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59632. $ctx1.sendIdx["="]=9;
  59633. //>>excludeEnd("ctx");
  59634. self._assert_($9);
  59635. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59636. $ctx1.sendIdx["assert:"]=3;
  59637. //>>excludeEnd("ctx");
  59638. $12=true._yourself();
  59639. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59640. $ctx1.sendIdx["yourself"]=2;
  59641. //>>excludeEnd("ctx");
  59642. $11=$recv($12).__eq(true._yourself());
  59643. self._assert_($11);
  59644. return self;
  59645. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59646. }, function($ctx1) {$ctx1.fill(self,"testEquality",{},$globals.BooleanTest)});
  59647. //>>excludeEnd("ctx");
  59648. },
  59649. //>>excludeStart("ide", pragmas.excludeIdeData);
  59650. args: [],
  59651. 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)",
  59652. referencedClasses: [],
  59653. //>>excludeEnd("ide");
  59654. messageSends: ["deny:", "=", "assert:", "yourself"]
  59655. }),
  59656. $globals.BooleanTest);
  59657. $core.addMethod(
  59658. $core.method({
  59659. selector: "testIdentity",
  59660. protocol: 'tests',
  59661. fn: function (){
  59662. var self=this;
  59663. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59664. return $core.withContext(function($ctx1) {
  59665. //>>excludeEnd("ctx");
  59666. var $1,$2,$3,$4,$5,$6,$7,$8,$10,$9,$12,$11;
  59667. $1=(0).__eq_eq(false);
  59668. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59669. $ctx1.sendIdx["=="]=1;
  59670. //>>excludeEnd("ctx");
  59671. self._deny_($1);
  59672. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59673. $ctx1.sendIdx["deny:"]=1;
  59674. //>>excludeEnd("ctx");
  59675. $2=false.__eq_eq((0));
  59676. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59677. $ctx1.sendIdx["=="]=2;
  59678. //>>excludeEnd("ctx");
  59679. self._deny_($2);
  59680. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59681. $ctx1.sendIdx["deny:"]=2;
  59682. //>>excludeEnd("ctx");
  59683. $3="".__eq_eq(false);
  59684. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59685. $ctx1.sendIdx["=="]=3;
  59686. //>>excludeEnd("ctx");
  59687. self._deny_($3);
  59688. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59689. $ctx1.sendIdx["deny:"]=3;
  59690. //>>excludeEnd("ctx");
  59691. $4=false.__eq_eq("");
  59692. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59693. $ctx1.sendIdx["=="]=4;
  59694. //>>excludeEnd("ctx");
  59695. self._deny_($4);
  59696. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59697. $ctx1.sendIdx["deny:"]=4;
  59698. //>>excludeEnd("ctx");
  59699. $5=true.__eq_eq(true);
  59700. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59701. $ctx1.sendIdx["=="]=5;
  59702. //>>excludeEnd("ctx");
  59703. self._assert_($5);
  59704. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59705. $ctx1.sendIdx["assert:"]=1;
  59706. //>>excludeEnd("ctx");
  59707. $6=false.__eq_eq(true);
  59708. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59709. $ctx1.sendIdx["=="]=6;
  59710. //>>excludeEnd("ctx");
  59711. self._deny_($6);
  59712. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59713. $ctx1.sendIdx["deny:"]=5;
  59714. //>>excludeEnd("ctx");
  59715. $7=true.__eq_eq(false);
  59716. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59717. $ctx1.sendIdx["=="]=7;
  59718. //>>excludeEnd("ctx");
  59719. self._deny_($7);
  59720. $8=false.__eq_eq(false);
  59721. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59722. $ctx1.sendIdx["=="]=8;
  59723. //>>excludeEnd("ctx");
  59724. self._assert_($8);
  59725. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59726. $ctx1.sendIdx["assert:"]=2;
  59727. //>>excludeEnd("ctx");
  59728. $10=true._yourself();
  59729. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59730. $ctx1.sendIdx["yourself"]=1;
  59731. //>>excludeEnd("ctx");
  59732. $9=$recv($10).__eq_eq(true);
  59733. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59734. $ctx1.sendIdx["=="]=9;
  59735. //>>excludeEnd("ctx");
  59736. self._assert_($9);
  59737. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59738. $ctx1.sendIdx["assert:"]=3;
  59739. //>>excludeEnd("ctx");
  59740. $12=true._yourself();
  59741. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59742. $ctx1.sendIdx["yourself"]=2;
  59743. //>>excludeEnd("ctx");
  59744. $11=$recv($12).__eq_eq(true._yourself());
  59745. self._assert_($11);
  59746. return self;
  59747. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59748. }, function($ctx1) {$ctx1.fill(self,"testIdentity",{},$globals.BooleanTest)});
  59749. //>>excludeEnd("ctx");
  59750. },
  59751. //>>excludeStart("ide", pragmas.excludeIdeData);
  59752. args: [],
  59753. 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",
  59754. referencedClasses: [],
  59755. //>>excludeEnd("ide");
  59756. messageSends: ["deny:", "==", "assert:", "yourself"]
  59757. }),
  59758. $globals.BooleanTest);
  59759. $core.addMethod(
  59760. $core.method({
  59761. selector: "testIfTrueIfFalse",
  59762. protocol: 'tests',
  59763. fn: function (){
  59764. var self=this;
  59765. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59766. return $core.withContext(function($ctx1) {
  59767. //>>excludeEnd("ctx");
  59768. var $1,$2,$3,$4,$5,$6,$7,$8;
  59769. if($core.assert(true)){
  59770. $1="alternative block";
  59771. };
  59772. self._assert_equals_($1,"alternative block");
  59773. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59774. $ctx1.sendIdx["assert:equals:"]=1;
  59775. //>>excludeEnd("ctx");
  59776. if(!$core.assert(true)){
  59777. $2="alternative block";
  59778. };
  59779. self._assert_equals_($2,nil);
  59780. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59781. $ctx1.sendIdx["assert:equals:"]=2;
  59782. //>>excludeEnd("ctx");
  59783. if($core.assert(false)){
  59784. $3="alternative block";
  59785. };
  59786. self._assert_equals_($3,nil);
  59787. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59788. $ctx1.sendIdx["assert:equals:"]=3;
  59789. //>>excludeEnd("ctx");
  59790. if(!$core.assert(false)){
  59791. $4="alternative block";
  59792. };
  59793. self._assert_equals_($4,"alternative block");
  59794. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59795. $ctx1.sendIdx["assert:equals:"]=4;
  59796. //>>excludeEnd("ctx");
  59797. if($core.assert(false)){
  59798. $5="alternative block";
  59799. } else {
  59800. $5="alternative block2";
  59801. };
  59802. self._assert_equals_($5,"alternative block2");
  59803. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59804. $ctx1.sendIdx["assert:equals:"]=5;
  59805. //>>excludeEnd("ctx");
  59806. if($core.assert(false)){
  59807. $6="alternative block2";
  59808. } else {
  59809. $6="alternative block";
  59810. };
  59811. self._assert_equals_($6,"alternative block");
  59812. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59813. $ctx1.sendIdx["assert:equals:"]=6;
  59814. //>>excludeEnd("ctx");
  59815. if($core.assert(true)){
  59816. $7="alternative block";
  59817. } else {
  59818. $7="alternative block2";
  59819. };
  59820. self._assert_equals_($7,"alternative block");
  59821. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59822. $ctx1.sendIdx["assert:equals:"]=7;
  59823. //>>excludeEnd("ctx");
  59824. if($core.assert(true)){
  59825. $8="alternative block2";
  59826. } else {
  59827. $8="alternative block";
  59828. };
  59829. self._assert_equals_($8,"alternative block2");
  59830. return self;
  59831. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59832. }, function($ctx1) {$ctx1.fill(self,"testIfTrueIfFalse",{},$globals.BooleanTest)});
  59833. //>>excludeEnd("ctx");
  59834. },
  59835. //>>excludeStart("ide", pragmas.excludeIdeData);
  59836. args: [],
  59837. 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'.",
  59838. referencedClasses: [],
  59839. //>>excludeEnd("ide");
  59840. messageSends: ["assert:equals:", "ifTrue:", "ifFalse:", "ifTrue:ifFalse:", "ifFalse:ifTrue:"]
  59841. }),
  59842. $globals.BooleanTest);
  59843. $core.addMethod(
  59844. $core.method({
  59845. selector: "testIfTrueIfFalseWithBoxing",
  59846. protocol: 'tests',
  59847. fn: function (){
  59848. var self=this;
  59849. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59850. return $core.withContext(function($ctx1) {
  59851. //>>excludeEnd("ctx");
  59852. var $2,$1,$4,$3,$6,$5,$8,$7,$10,$9,$12,$11,$14,$13,$16,$15;
  59853. $2=true._yourself();
  59854. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59855. $ctx1.sendIdx["yourself"]=1;
  59856. //>>excludeEnd("ctx");
  59857. if($core.assert($2)){
  59858. $1="alternative block";
  59859. };
  59860. self._assert_equals_($1,"alternative block");
  59861. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59862. $ctx1.sendIdx["assert:equals:"]=1;
  59863. //>>excludeEnd("ctx");
  59864. $4=true._yourself();
  59865. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59866. $ctx1.sendIdx["yourself"]=2;
  59867. //>>excludeEnd("ctx");
  59868. if(!$core.assert($4)){
  59869. $3="alternative block";
  59870. };
  59871. self._assert_equals_($3,nil);
  59872. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59873. $ctx1.sendIdx["assert:equals:"]=2;
  59874. //>>excludeEnd("ctx");
  59875. $6=false._yourself();
  59876. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59877. $ctx1.sendIdx["yourself"]=3;
  59878. //>>excludeEnd("ctx");
  59879. if($core.assert($6)){
  59880. $5="alternative block";
  59881. };
  59882. self._assert_equals_($5,nil);
  59883. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59884. $ctx1.sendIdx["assert:equals:"]=3;
  59885. //>>excludeEnd("ctx");
  59886. $8=false._yourself();
  59887. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59888. $ctx1.sendIdx["yourself"]=4;
  59889. //>>excludeEnd("ctx");
  59890. if(!$core.assert($8)){
  59891. $7="alternative block";
  59892. };
  59893. self._assert_equals_($7,"alternative block");
  59894. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59895. $ctx1.sendIdx["assert:equals:"]=4;
  59896. //>>excludeEnd("ctx");
  59897. $10=false._yourself();
  59898. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59899. $ctx1.sendIdx["yourself"]=5;
  59900. //>>excludeEnd("ctx");
  59901. if($core.assert($10)){
  59902. $9="alternative block";
  59903. } else {
  59904. $9="alternative block2";
  59905. };
  59906. self._assert_equals_($9,"alternative block2");
  59907. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59908. $ctx1.sendIdx["assert:equals:"]=5;
  59909. //>>excludeEnd("ctx");
  59910. $12=false._yourself();
  59911. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59912. $ctx1.sendIdx["yourself"]=6;
  59913. //>>excludeEnd("ctx");
  59914. if($core.assert($12)){
  59915. $11="alternative block2";
  59916. } else {
  59917. $11="alternative block";
  59918. };
  59919. self._assert_equals_($11,"alternative block");
  59920. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59921. $ctx1.sendIdx["assert:equals:"]=6;
  59922. //>>excludeEnd("ctx");
  59923. $14=true._yourself();
  59924. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59925. $ctx1.sendIdx["yourself"]=7;
  59926. //>>excludeEnd("ctx");
  59927. if($core.assert($14)){
  59928. $13="alternative block";
  59929. } else {
  59930. $13="alternative block2";
  59931. };
  59932. self._assert_equals_($13,"alternative block");
  59933. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59934. $ctx1.sendIdx["assert:equals:"]=7;
  59935. //>>excludeEnd("ctx");
  59936. $16=true._yourself();
  59937. if($core.assert($16)){
  59938. $15="alternative block2";
  59939. } else {
  59940. $15="alternative block";
  59941. };
  59942. self._assert_equals_($15,"alternative block2");
  59943. return self;
  59944. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59945. }, function($ctx1) {$ctx1.fill(self,"testIfTrueIfFalseWithBoxing",{},$globals.BooleanTest)});
  59946. //>>excludeEnd("ctx");
  59947. },
  59948. //>>excludeStart("ide", pragmas.excludeIdeData);
  59949. args: [],
  59950. 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'.",
  59951. referencedClasses: [],
  59952. //>>excludeEnd("ide");
  59953. messageSends: ["assert:equals:", "ifTrue:", "yourself", "ifFalse:", "ifTrue:ifFalse:", "ifFalse:ifTrue:"]
  59954. }),
  59955. $globals.BooleanTest);
  59956. $core.addMethod(
  59957. $core.method({
  59958. selector: "testLogic",
  59959. protocol: 'tests',
  59960. fn: function (){
  59961. var self=this;
  59962. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59963. return $core.withContext(function($ctx1) {
  59964. //>>excludeEnd("ctx");
  59965. var $1,$2,$3,$5,$4,$6,$7,$8,$10,$9,$12,$11,$14,$13,$17,$18,$16,$15,$20,$19,$22,$21,$25,$24,$23;
  59966. $1=true.__and(true);
  59967. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59968. $ctx1.sendIdx["&"]=1;
  59969. //>>excludeEnd("ctx");
  59970. self._assert_($1);
  59971. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59972. $ctx1.sendIdx["assert:"]=1;
  59973. //>>excludeEnd("ctx");
  59974. $2=true.__and(false);
  59975. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59976. $ctx1.sendIdx["&"]=2;
  59977. //>>excludeEnd("ctx");
  59978. self._deny_($2);
  59979. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59980. $ctx1.sendIdx["deny:"]=1;
  59981. //>>excludeEnd("ctx");
  59982. $3=false.__and(true);
  59983. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59984. $ctx1.sendIdx["&"]=3;
  59985. //>>excludeEnd("ctx");
  59986. self._deny_($3);
  59987. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59988. $ctx1.sendIdx["deny:"]=2;
  59989. //>>excludeEnd("ctx");
  59990. $5=false.__and(false);
  59991. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59992. $ctx1.sendIdx["&"]=4;
  59993. //>>excludeEnd("ctx");
  59994. $4=self._deny_($5);
  59995. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  59996. $ctx1.sendIdx["deny:"]=3;
  59997. //>>excludeEnd("ctx");
  59998. $6=true.__or(true);
  59999. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60000. $ctx1.sendIdx["|"]=1;
  60001. //>>excludeEnd("ctx");
  60002. self._assert_($6);
  60003. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60004. $ctx1.sendIdx["assert:"]=2;
  60005. //>>excludeEnd("ctx");
  60006. $7=true.__or(false);
  60007. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60008. $ctx1.sendIdx["|"]=2;
  60009. //>>excludeEnd("ctx");
  60010. self._assert_($7);
  60011. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60012. $ctx1.sendIdx["assert:"]=3;
  60013. //>>excludeEnd("ctx");
  60014. $8=false.__or(true);
  60015. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60016. $ctx1.sendIdx["|"]=3;
  60017. //>>excludeEnd("ctx");
  60018. self._assert_($8);
  60019. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60020. $ctx1.sendIdx["assert:"]=4;
  60021. //>>excludeEnd("ctx");
  60022. $10=false.__or(false);
  60023. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60024. $ctx1.sendIdx["|"]=4;
  60025. //>>excludeEnd("ctx");
  60026. $9=self._deny_($10);
  60027. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60028. $ctx1.sendIdx["deny:"]=4;
  60029. //>>excludeEnd("ctx");
  60030. $12=(1).__gt((0));
  60031. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60032. $ctx1.sendIdx[">"]=1;
  60033. //>>excludeEnd("ctx");
  60034. $11=true.__and($12);
  60035. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60036. $ctx1.sendIdx["&"]=5;
  60037. //>>excludeEnd("ctx");
  60038. self._assert_($11);
  60039. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60040. $ctx1.sendIdx["assert:"]=5;
  60041. //>>excludeEnd("ctx");
  60042. $14=(1).__gt((0));
  60043. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60044. $ctx1.sendIdx[">"]=2;
  60045. //>>excludeEnd("ctx");
  60046. $13=$recv($14).__and(false);
  60047. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60048. $ctx1.sendIdx["&"]=6;
  60049. //>>excludeEnd("ctx");
  60050. self._deny_($13);
  60051. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60052. $ctx1.sendIdx["deny:"]=5;
  60053. //>>excludeEnd("ctx");
  60054. $17=(1).__gt((0));
  60055. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60056. $ctx1.sendIdx[">"]=3;
  60057. //>>excludeEnd("ctx");
  60058. $18=(1).__gt((2));
  60059. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60060. $ctx1.sendIdx[">"]=4;
  60061. //>>excludeEnd("ctx");
  60062. $16=$recv($17).__and($18);
  60063. $15=self._deny_($16);
  60064. $20=(1).__gt((0));
  60065. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60066. $ctx1.sendIdx[">"]=5;
  60067. //>>excludeEnd("ctx");
  60068. $19=false.__or($20);
  60069. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60070. $ctx1.sendIdx["|"]=5;
  60071. //>>excludeEnd("ctx");
  60072. self._assert_($19);
  60073. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60074. $ctx1.sendIdx["assert:"]=6;
  60075. //>>excludeEnd("ctx");
  60076. $22=(1).__gt((0));
  60077. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60078. $ctx1.sendIdx[">"]=6;
  60079. //>>excludeEnd("ctx");
  60080. $21=$recv($22).__or(false);
  60081. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60082. $ctx1.sendIdx["|"]=6;
  60083. //>>excludeEnd("ctx");
  60084. self._assert_($21);
  60085. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60086. $ctx1.sendIdx["assert:"]=7;
  60087. //>>excludeEnd("ctx");
  60088. $25=(1).__gt((0));
  60089. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60090. $ctx1.sendIdx[">"]=7;
  60091. //>>excludeEnd("ctx");
  60092. $24=$recv($25).__or((1).__gt((2)));
  60093. $23=self._assert_($24);
  60094. return self;
  60095. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60096. }, function($ctx1) {$ctx1.fill(self,"testLogic",{},$globals.BooleanTest)});
  60097. //>>excludeEnd("ctx");
  60098. },
  60099. //>>excludeStart("ide", pragmas.excludeIdeData);
  60100. args: [],
  60101. 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))",
  60102. referencedClasses: [],
  60103. //>>excludeEnd("ide");
  60104. messageSends: ["assert:", "&", "deny:", "|", ">"]
  60105. }),
  60106. $globals.BooleanTest);
  60107. $core.addMethod(
  60108. $core.method({
  60109. selector: "testLogicKeywords",
  60110. protocol: 'tests',
  60111. fn: function (){
  60112. var self=this;
  60113. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60114. return $core.withContext(function($ctx1) {
  60115. //>>excludeEnd("ctx");
  60116. var $1,$2,$3,$5,$4,$6,$7,$8,$10,$9,$11,$13,$12,$16,$15,$14,$17,$19,$18,$22,$21,$20;
  60117. $1=true._and_((function(){
  60118. return true;
  60119. }));
  60120. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60121. $ctx1.sendIdx["and:"]=1;
  60122. //>>excludeEnd("ctx");
  60123. self._assert_($1);
  60124. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60125. $ctx1.sendIdx["assert:"]=1;
  60126. //>>excludeEnd("ctx");
  60127. $2=true._and_((function(){
  60128. return false;
  60129. }));
  60130. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60131. $ctx1.sendIdx["and:"]=2;
  60132. //>>excludeEnd("ctx");
  60133. self._deny_($2);
  60134. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60135. $ctx1.sendIdx["deny:"]=1;
  60136. //>>excludeEnd("ctx");
  60137. $3=false._and_((function(){
  60138. return true;
  60139. }));
  60140. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60141. $ctx1.sendIdx["and:"]=3;
  60142. //>>excludeEnd("ctx");
  60143. self._deny_($3);
  60144. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60145. $ctx1.sendIdx["deny:"]=2;
  60146. //>>excludeEnd("ctx");
  60147. $5=false._and_((function(){
  60148. return false;
  60149. }));
  60150. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60151. $ctx1.sendIdx["and:"]=4;
  60152. //>>excludeEnd("ctx");
  60153. $4=self._deny_($5);
  60154. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60155. $ctx1.sendIdx["deny:"]=3;
  60156. //>>excludeEnd("ctx");
  60157. $6=true._or_((function(){
  60158. return true;
  60159. }));
  60160. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60161. $ctx1.sendIdx["or:"]=1;
  60162. //>>excludeEnd("ctx");
  60163. self._assert_($6);
  60164. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60165. $ctx1.sendIdx["assert:"]=2;
  60166. //>>excludeEnd("ctx");
  60167. $7=true._or_((function(){
  60168. return false;
  60169. }));
  60170. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60171. $ctx1.sendIdx["or:"]=2;
  60172. //>>excludeEnd("ctx");
  60173. self._assert_($7);
  60174. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60175. $ctx1.sendIdx["assert:"]=3;
  60176. //>>excludeEnd("ctx");
  60177. $8=false._or_((function(){
  60178. return true;
  60179. }));
  60180. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60181. $ctx1.sendIdx["or:"]=3;
  60182. //>>excludeEnd("ctx");
  60183. self._assert_($8);
  60184. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60185. $ctx1.sendIdx["assert:"]=4;
  60186. //>>excludeEnd("ctx");
  60187. $10=false._or_((function(){
  60188. return false;
  60189. }));
  60190. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60191. $ctx1.sendIdx["or:"]=4;
  60192. //>>excludeEnd("ctx");
  60193. $9=self._deny_($10);
  60194. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60195. $ctx1.sendIdx["deny:"]=4;
  60196. //>>excludeEnd("ctx");
  60197. $11=true._and_((function(){
  60198. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60199. return $core.withContext(function($ctx2) {
  60200. //>>excludeEnd("ctx");
  60201. return (1).__gt((0));
  60202. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60203. $ctx2.sendIdx[">"]=1;
  60204. //>>excludeEnd("ctx");
  60205. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60206. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,9)});
  60207. //>>excludeEnd("ctx");
  60208. }));
  60209. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60210. $ctx1.sendIdx["and:"]=5;
  60211. //>>excludeEnd("ctx");
  60212. self._assert_($11);
  60213. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60214. $ctx1.sendIdx["assert:"]=5;
  60215. //>>excludeEnd("ctx");
  60216. $13=(1).__gt((0));
  60217. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60218. $ctx1.sendIdx[">"]=2;
  60219. //>>excludeEnd("ctx");
  60220. $12=$recv($13)._and_((function(){
  60221. return false;
  60222. }));
  60223. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60224. $ctx1.sendIdx["and:"]=6;
  60225. //>>excludeEnd("ctx");
  60226. self._deny_($12);
  60227. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60228. $ctx1.sendIdx["deny:"]=5;
  60229. //>>excludeEnd("ctx");
  60230. $16=(1).__gt((0));
  60231. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60232. $ctx1.sendIdx[">"]=3;
  60233. //>>excludeEnd("ctx");
  60234. $15=$recv($16)._and_((function(){
  60235. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60236. return $core.withContext(function($ctx2) {
  60237. //>>excludeEnd("ctx");
  60238. return (1).__gt((2));
  60239. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60240. $ctx2.sendIdx[">"]=4;
  60241. //>>excludeEnd("ctx");
  60242. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60243. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,11)});
  60244. //>>excludeEnd("ctx");
  60245. }));
  60246. $14=self._deny_($15);
  60247. $17=false._or_((function(){
  60248. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60249. return $core.withContext(function($ctx2) {
  60250. //>>excludeEnd("ctx");
  60251. return (1).__gt((0));
  60252. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60253. $ctx2.sendIdx[">"]=5;
  60254. //>>excludeEnd("ctx");
  60255. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60256. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,12)});
  60257. //>>excludeEnd("ctx");
  60258. }));
  60259. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60260. $ctx1.sendIdx["or:"]=5;
  60261. //>>excludeEnd("ctx");
  60262. self._assert_($17);
  60263. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60264. $ctx1.sendIdx["assert:"]=6;
  60265. //>>excludeEnd("ctx");
  60266. $19=(1).__gt((0));
  60267. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60268. $ctx1.sendIdx[">"]=6;
  60269. //>>excludeEnd("ctx");
  60270. $18=$recv($19)._or_((function(){
  60271. return false;
  60272. }));
  60273. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60274. $ctx1.sendIdx["or:"]=6;
  60275. //>>excludeEnd("ctx");
  60276. self._assert_($18);
  60277. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60278. $ctx1.sendIdx["assert:"]=7;
  60279. //>>excludeEnd("ctx");
  60280. $22=(1).__gt((0));
  60281. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60282. $ctx1.sendIdx[">"]=7;
  60283. //>>excludeEnd("ctx");
  60284. $21=$recv($22)._or_((function(){
  60285. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60286. return $core.withContext(function($ctx2) {
  60287. //>>excludeEnd("ctx");
  60288. return (1).__gt((2));
  60289. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60290. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,14)});
  60291. //>>excludeEnd("ctx");
  60292. }));
  60293. $20=self._assert_($21);
  60294. return self;
  60295. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60296. }, function($ctx1) {$ctx1.fill(self,"testLogicKeywords",{},$globals.BooleanTest)});
  60297. //>>excludeEnd("ctx");
  60298. },
  60299. //>>excludeStart("ide", pragmas.excludeIdeData);
  60300. args: [],
  60301. 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 ])",
  60302. referencedClasses: [],
  60303. //>>excludeEnd("ide");
  60304. messageSends: ["assert:", "and:", "deny:", "or:", ">"]
  60305. }),
  60306. $globals.BooleanTest);
  60307. $core.addMethod(
  60308. $core.method({
  60309. selector: "testNonBooleanError",
  60310. protocol: 'tests',
  60311. fn: function (){
  60312. var self=this;
  60313. function $NonBooleanReceiver(){return $globals.NonBooleanReceiver||(typeof NonBooleanReceiver=="undefined"?nil:NonBooleanReceiver)}
  60314. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60315. return $core.withContext(function($ctx1) {
  60316. //>>excludeEnd("ctx");
  60317. self._should_raise_((function(){
  60318. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60319. return $core.withContext(function($ctx2) {
  60320. //>>excludeEnd("ctx");
  60321. if($core.assert("")){
  60322. } else {
  60323. };
  60324. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60325. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  60326. //>>excludeEnd("ctx");
  60327. }),$NonBooleanReceiver());
  60328. return self;
  60329. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60330. }, function($ctx1) {$ctx1.fill(self,"testNonBooleanError",{},$globals.BooleanTest)});
  60331. //>>excludeEnd("ctx");
  60332. },
  60333. //>>excludeStart("ide", pragmas.excludeIdeData);
  60334. args: [],
  60335. source: "testNonBooleanError\x0a\x09self should: [ '' ifTrue: [] ifFalse: [] ] raise: NonBooleanReceiver",
  60336. referencedClasses: ["NonBooleanReceiver"],
  60337. //>>excludeEnd("ide");
  60338. messageSends: ["should:raise:", "ifTrue:ifFalse:"]
  60339. }),
  60340. $globals.BooleanTest);
  60341. $core.addClass('ClassBuilderTest', $globals.TestCase, ['builder', 'theClass'], 'Kernel-Tests');
  60342. $core.addMethod(
  60343. $core.method({
  60344. selector: "setUp",
  60345. protocol: 'running',
  60346. fn: function (){
  60347. var self=this;
  60348. function $ClassBuilder(){return $globals.ClassBuilder||(typeof ClassBuilder=="undefined"?nil:ClassBuilder)}
  60349. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60350. return $core.withContext(function($ctx1) {
  60351. //>>excludeEnd("ctx");
  60352. self["@builder"]=$recv($ClassBuilder())._new();
  60353. return self;
  60354. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60355. }, function($ctx1) {$ctx1.fill(self,"setUp",{},$globals.ClassBuilderTest)});
  60356. //>>excludeEnd("ctx");
  60357. },
  60358. //>>excludeStart("ide", pragmas.excludeIdeData);
  60359. args: [],
  60360. source: "setUp\x0a\x09builder := ClassBuilder new",
  60361. referencedClasses: ["ClassBuilder"],
  60362. //>>excludeEnd("ide");
  60363. messageSends: ["new"]
  60364. }),
  60365. $globals.ClassBuilderTest);
  60366. $core.addMethod(
  60367. $core.method({
  60368. selector: "tearDown",
  60369. protocol: 'running',
  60370. fn: function (){
  60371. var self=this;
  60372. function $Smalltalk(){return $globals.Smalltalk||(typeof Smalltalk=="undefined"?nil:Smalltalk)}
  60373. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60374. return $core.withContext(function($ctx1) {
  60375. //>>excludeEnd("ctx");
  60376. var $1,$receiver;
  60377. $1=self["@theClass"];
  60378. if(($receiver = $1) == null || $receiver.isNil){
  60379. $1;
  60380. } else {
  60381. $recv($Smalltalk())._removeClass_(self["@theClass"]);
  60382. self["@theClass"]=nil;
  60383. self["@theClass"];
  60384. };
  60385. return self;
  60386. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60387. }, function($ctx1) {$ctx1.fill(self,"tearDown",{},$globals.ClassBuilderTest)});
  60388. //>>excludeEnd("ctx");
  60389. },
  60390. //>>excludeStart("ide", pragmas.excludeIdeData);
  60391. args: [],
  60392. source: "tearDown\x0a\x09theClass ifNotNil: [ Smalltalk removeClass: theClass. theClass := nil ]",
  60393. referencedClasses: ["Smalltalk"],
  60394. //>>excludeEnd("ide");
  60395. messageSends: ["ifNotNil:", "removeClass:"]
  60396. }),
  60397. $globals.ClassBuilderTest);
  60398. $core.addMethod(
  60399. $core.method({
  60400. selector: "testClassCopy",
  60401. protocol: 'tests',
  60402. fn: function (){
  60403. var self=this;
  60404. function $ObjectMock(){return $globals.ObjectMock||(typeof ObjectMock=="undefined"?nil:ObjectMock)}
  60405. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60406. return $core.withContext(function($ctx1) {
  60407. //>>excludeEnd("ctx");
  60408. var $2,$1,$4,$3,$6,$5,$8,$7;
  60409. self["@theClass"]=$recv(self["@builder"])._copyClass_named_($ObjectMock(),"ObjectMock2");
  60410. $2=$recv(self["@theClass"])._superclass();
  60411. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60412. $ctx1.sendIdx["superclass"]=1;
  60413. //>>excludeEnd("ctx");
  60414. $1=$recv($2).__eq_eq($recv($ObjectMock())._superclass());
  60415. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60416. $ctx1.sendIdx["=="]=1;
  60417. //>>excludeEnd("ctx");
  60418. self._assert_($1);
  60419. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60420. $ctx1.sendIdx["assert:"]=1;
  60421. //>>excludeEnd("ctx");
  60422. $4=$recv(self["@theClass"])._instanceVariableNames();
  60423. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60424. $ctx1.sendIdx["instanceVariableNames"]=1;
  60425. //>>excludeEnd("ctx");
  60426. $3=$recv($4).__eq_eq($recv($ObjectMock())._instanceVariableNames());
  60427. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60428. $ctx1.sendIdx["=="]=2;
  60429. //>>excludeEnd("ctx");
  60430. self._assert_($3);
  60431. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60432. $ctx1.sendIdx["assert:"]=2;
  60433. //>>excludeEnd("ctx");
  60434. self._assert_equals_($recv(self["@theClass"])._name(),"ObjectMock2");
  60435. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60436. $ctx1.sendIdx["assert:equals:"]=1;
  60437. //>>excludeEnd("ctx");
  60438. $6=$recv(self["@theClass"])._package();
  60439. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60440. $ctx1.sendIdx["package"]=1;
  60441. //>>excludeEnd("ctx");
  60442. $5=$recv($6).__eq_eq($recv($ObjectMock())._package());
  60443. self._assert_($5);
  60444. $8=$recv(self["@theClass"])._methodDictionary();
  60445. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60446. $ctx1.sendIdx["methodDictionary"]=1;
  60447. //>>excludeEnd("ctx");
  60448. $7=$recv($8)._keys();
  60449. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60450. $ctx1.sendIdx["keys"]=1;
  60451. //>>excludeEnd("ctx");
  60452. self._assert_equals_($7,$recv($recv($ObjectMock())._methodDictionary())._keys());
  60453. return self;
  60454. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60455. }, function($ctx1) {$ctx1.fill(self,"testClassCopy",{},$globals.ClassBuilderTest)});
  60456. //>>excludeEnd("ctx");
  60457. },
  60458. //>>excludeStart("ide", pragmas.excludeIdeData);
  60459. args: [],
  60460. source: "testClassCopy\x0a\x09theClass := builder copyClass: ObjectMock named: 'ObjectMock2'.\x0a\x09self assert: theClass superclass == ObjectMock superclass.\x0a\x09self assert: theClass instanceVariableNames == ObjectMock instanceVariableNames.\x0a\x09self assert: theClass name equals: 'ObjectMock2'.\x0a\x09self assert: theClass package == ObjectMock package.\x0a\x09self assert: theClass methodDictionary keys equals: ObjectMock methodDictionary keys",
  60461. referencedClasses: ["ObjectMock"],
  60462. //>>excludeEnd("ide");
  60463. messageSends: ["copyClass:named:", "assert:", "==", "superclass", "instanceVariableNames", "assert:equals:", "name", "package", "keys", "methodDictionary"]
  60464. }),
  60465. $globals.ClassBuilderTest);
  60466. $core.addMethod(
  60467. $core.method({
  60468. selector: "testClassMigration",
  60469. protocol: 'tests',
  60470. fn: function (){
  60471. var self=this;
  60472. var instance,oldClass;
  60473. function $ObjectMock(){return $globals.ObjectMock||(typeof ObjectMock=="undefined"?nil:ObjectMock)}
  60474. function $Smalltalk(){return $globals.Smalltalk||(typeof Smalltalk=="undefined"?nil:Smalltalk)}
  60475. function $ObjectMock2(){return $globals.ObjectMock2||(typeof ObjectMock2=="undefined"?nil:ObjectMock2)}
  60476. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60477. return $core.withContext(function($ctx1) {
  60478. //>>excludeEnd("ctx");
  60479. var $2,$1,$4,$3,$5,$6,$7,$8,$9,$11,$10;
  60480. oldClass=$recv(self["@builder"])._copyClass_named_($ObjectMock(),"ObjectMock2");
  60481. $2=$recv($Smalltalk())._globals();
  60482. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60483. $ctx1.sendIdx["globals"]=1;
  60484. //>>excludeEnd("ctx");
  60485. $1=$recv($2)._at_("ObjectMock2");
  60486. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60487. $ctx1.sendIdx["at:"]=1;
  60488. //>>excludeEnd("ctx");
  60489. instance=$recv($1)._new();
  60490. $4=$recv($Smalltalk())._globals();
  60491. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60492. $ctx1.sendIdx["globals"]=2;
  60493. //>>excludeEnd("ctx");
  60494. $3=$recv($4)._at_("ObjectMock2");
  60495. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60496. $ctx1.sendIdx["at:"]=2;
  60497. //>>excludeEnd("ctx");
  60498. $recv($ObjectMock())._subclass_instanceVariableNames_package_($3,"","Kernel-Tests");
  60499. $5=$recv(oldClass).__eq_eq($ObjectMock2());
  60500. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60501. $ctx1.sendIdx["=="]=1;
  60502. //>>excludeEnd("ctx");
  60503. self._deny_($5);
  60504. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60505. $ctx1.sendIdx["deny:"]=1;
  60506. //>>excludeEnd("ctx");
  60507. $6=$recv($recv($ObjectMock2())._superclass()).__eq_eq($ObjectMock());
  60508. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60509. $ctx1.sendIdx["=="]=2;
  60510. //>>excludeEnd("ctx");
  60511. self._assert_($6);
  60512. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60513. $ctx1.sendIdx["assert:"]=1;
  60514. //>>excludeEnd("ctx");
  60515. self._assert_($recv($recv($ObjectMock2())._instanceVariableNames())._isEmpty());
  60516. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60517. $ctx1.sendIdx["assert:"]=2;
  60518. //>>excludeEnd("ctx");
  60519. $7=$recv($ObjectMock2())._selectors();
  60520. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60521. $ctx1.sendIdx["selectors"]=1;
  60522. //>>excludeEnd("ctx");
  60523. self._assert_equals_($7,$recv(oldClass)._selectors());
  60524. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60525. $ctx1.sendIdx["assert:equals:"]=1;
  60526. //>>excludeEnd("ctx");
  60527. $8=$recv($ObjectMock2())._comment();
  60528. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60529. $ctx1.sendIdx["comment"]=1;
  60530. //>>excludeEnd("ctx");
  60531. self._assert_equals_($8,$recv(oldClass)._comment());
  60532. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60533. $ctx1.sendIdx["assert:equals:"]=2;
  60534. //>>excludeEnd("ctx");
  60535. $9=$recv($recv($ObjectMock2())._package())._name();
  60536. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60537. $ctx1.sendIdx["name"]=1;
  60538. //>>excludeEnd("ctx");
  60539. self._assert_equals_($9,"Kernel-Tests");
  60540. $11=$recv(instance)._class();
  60541. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60542. $ctx1.sendIdx["class"]=1;
  60543. //>>excludeEnd("ctx");
  60544. $10=$recv($11).__eq_eq($ObjectMock2());
  60545. self._deny_($10);
  60546. self._assert_($recv($recv($recv($Smalltalk())._globals())._at_($recv($recv(instance)._class())._name()))._isNil());
  60547. $recv($Smalltalk())._removeClass_($ObjectMock2());
  60548. return self;
  60549. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60550. }, function($ctx1) {$ctx1.fill(self,"testClassMigration",{instance:instance,oldClass:oldClass},$globals.ClassBuilderTest)});
  60551. //>>excludeEnd("ctx");
  60552. },
  60553. //>>excludeStart("ide", pragmas.excludeIdeData);
  60554. args: [],
  60555. 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\x09ObjectMock subclass: (Smalltalk globals at: '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 instanceVariableNames 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\x09\x0a\x09self deny: instance class == ObjectMock2.\x0a\x09\x22Commeting this out. Tests implementation detail.\x22\x0a\x09\x22self assert: instance class name equals: 'OldObjectMock2'.\x22\x0a\x09\x0a\x09self assert: (Smalltalk globals at: instance class name) isNil.\x0a\x09\x0a\x09Smalltalk removeClass: ObjectMock2",
  60556. referencedClasses: ["ObjectMock", "Smalltalk", "ObjectMock2"],
  60557. //>>excludeEnd("ide");
  60558. messageSends: ["copyClass:named:", "new", "at:", "globals", "subclass:instanceVariableNames:package:", "deny:", "==", "assert:", "superclass", "isEmpty", "instanceVariableNames", "assert:equals:", "selectors", "comment", "name", "package", "class", "isNil", "removeClass:"]
  60559. }),
  60560. $globals.ClassBuilderTest);
  60561. $core.addMethod(
  60562. $core.method({
  60563. selector: "testClassMigrationWithClassInstanceVariables",
  60564. protocol: 'tests',
  60565. fn: function (){
  60566. var self=this;
  60567. function $ObjectMock(){return $globals.ObjectMock||(typeof ObjectMock=="undefined"?nil:ObjectMock)}
  60568. function $ObjectMock2(){return $globals.ObjectMock2||(typeof ObjectMock2=="undefined"?nil:ObjectMock2)}
  60569. function $Smalltalk(){return $globals.Smalltalk||(typeof Smalltalk=="undefined"?nil:Smalltalk)}
  60570. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60571. return $core.withContext(function($ctx1) {
  60572. //>>excludeEnd("ctx");
  60573. var $1;
  60574. $recv(self["@builder"])._copyClass_named_($ObjectMock(),"ObjectMock2");
  60575. $1=$recv($ObjectMock2())._class();
  60576. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60577. $ctx1.sendIdx["class"]=1;
  60578. //>>excludeEnd("ctx");
  60579. $recv($1)._instanceVariableNames_("foo bar");
  60580. $recv($ObjectMock())._subclass_instanceVariableNames_package_($recv($recv($Smalltalk())._globals())._at_("ObjectMock2"),"","Kernel-Tests");
  60581. self._assert_equals_($recv($recv($ObjectMock2())._class())._instanceVariableNames(),["foo", "bar"]);
  60582. $recv($Smalltalk())._removeClass_($ObjectMock2());
  60583. return self;
  60584. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60585. }, function($ctx1) {$ctx1.fill(self,"testClassMigrationWithClassInstanceVariables",{},$globals.ClassBuilderTest)});
  60586. //>>excludeEnd("ctx");
  60587. },
  60588. //>>excludeStart("ide", pragmas.excludeIdeData);
  60589. args: [],
  60590. source: "testClassMigrationWithClassInstanceVariables\x0a\x09\x0a\x09builder copyClass: ObjectMock named: 'ObjectMock2'.\x0a\x09ObjectMock2 class instanceVariableNames: 'foo bar'.\x0a\x09\x0a\x09\x22Change the superclass of ObjectMock2\x22\x0a\x09ObjectMock subclass: (Smalltalk globals at: 'ObjectMock2')\x0a\x09\x09instanceVariableNames: ''\x0a\x09\x09package: 'Kernel-Tests'.\x0a\x09\x0a\x09self assert: ObjectMock2 class instanceVariableNames equals: #('foo' 'bar').\x0a\x09\x0a\x09Smalltalk removeClass: ObjectMock2",
  60591. referencedClasses: ["ObjectMock", "ObjectMock2", "Smalltalk"],
  60592. //>>excludeEnd("ide");
  60593. messageSends: ["copyClass:named:", "instanceVariableNames:", "class", "subclass:instanceVariableNames:package:", "at:", "globals", "assert:equals:", "instanceVariableNames", "removeClass:"]
  60594. }),
  60595. $globals.ClassBuilderTest);
  60596. $core.addMethod(
  60597. $core.method({
  60598. selector: "testClassMigrationWithSubclasses",
  60599. protocol: 'tests',
  60600. fn: function (){
  60601. var self=this;
  60602. function $ObjectMock(){return $globals.ObjectMock||(typeof ObjectMock=="undefined"?nil:ObjectMock)}
  60603. function $ObjectMock2(){return $globals.ObjectMock2||(typeof ObjectMock2=="undefined"?nil:ObjectMock2)}
  60604. function $ObjectMock3(){return $globals.ObjectMock3||(typeof ObjectMock3=="undefined"?nil:ObjectMock3)}
  60605. function $Smalltalk(){return $globals.Smalltalk||(typeof Smalltalk=="undefined"?nil:Smalltalk)}
  60606. function $ObjectMock4(){return $globals.ObjectMock4||(typeof ObjectMock4=="undefined"?nil:ObjectMock4)}
  60607. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60608. return $core.withContext(function($ctx1) {
  60609. //>>excludeEnd("ctx");
  60610. var $2,$1,$4,$3;
  60611. $recv(self["@builder"])._copyClass_named_($ObjectMock(),"ObjectMock2");
  60612. $recv($ObjectMock2())._subclass_instanceVariableNames_package_("ObjectMock3","","Kernel-Tests");
  60613. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60614. $ctx1.sendIdx["subclass:instanceVariableNames:package:"]=1;
  60615. //>>excludeEnd("ctx");
  60616. $recv($ObjectMock3())._subclass_instanceVariableNames_package_("ObjectMock4","","Kernel-Tests");
  60617. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60618. $ctx1.sendIdx["subclass:instanceVariableNames:package:"]=2;
  60619. //>>excludeEnd("ctx");
  60620. $recv($ObjectMock())._subclass_instanceVariableNames_package_($recv($recv($Smalltalk())._globals())._at_("ObjectMock2"),"","Kernel-Tests");
  60621. $2=$recv($ObjectMock())._subclasses();
  60622. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60623. $ctx1.sendIdx["subclasses"]=1;
  60624. //>>excludeEnd("ctx");
  60625. $1=$recv($2)._includes_($ObjectMock2());
  60626. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60627. $ctx1.sendIdx["includes:"]=1;
  60628. //>>excludeEnd("ctx");
  60629. self._assert_($1);
  60630. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60631. $ctx1.sendIdx["assert:"]=1;
  60632. //>>excludeEnd("ctx");
  60633. $4=$recv($ObjectMock2())._subclasses();
  60634. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60635. $ctx1.sendIdx["subclasses"]=2;
  60636. //>>excludeEnd("ctx");
  60637. $3=$recv($4)._includes_($ObjectMock3());
  60638. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60639. $ctx1.sendIdx["includes:"]=2;
  60640. //>>excludeEnd("ctx");
  60641. self._assert_($3);
  60642. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60643. $ctx1.sendIdx["assert:"]=2;
  60644. //>>excludeEnd("ctx");
  60645. self._assert_($recv($recv($ObjectMock3())._subclasses())._includes_($ObjectMock4()));
  60646. $recv($recv($ObjectMock())._allSubclasses())._do_((function(each){
  60647. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60648. return $core.withContext(function($ctx2) {
  60649. //>>excludeEnd("ctx");
  60650. return $recv($Smalltalk())._removeClass_(each);
  60651. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60652. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  60653. //>>excludeEnd("ctx");
  60654. }));
  60655. return self;
  60656. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60657. }, function($ctx1) {$ctx1.fill(self,"testClassMigrationWithSubclasses",{},$globals.ClassBuilderTest)});
  60658. //>>excludeEnd("ctx");
  60659. },
  60660. //>>excludeStart("ide", pragmas.excludeIdeData);
  60661. args: [],
  60662. 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\x09ObjectMock subclass: (Smalltalk globals at: 'ObjectMock2')\x0a\x09\x09instanceVariableNames: ''\x0a\x09\x09package: 'Kernel-Tests'.\x0a\x09\x0a\x09self assert: (ObjectMock subclasses includes: ObjectMock2).\x0a\x09self assert: (ObjectMock2 subclasses includes: ObjectMock3).\x0a\x09self assert: (ObjectMock3 subclasses includes: ObjectMock4).\x0a\x09\x0a\x09ObjectMock allSubclasses do: [ :each | Smalltalk removeClass: each ]",
  60663. referencedClasses: ["ObjectMock", "ObjectMock2", "ObjectMock3", "Smalltalk", "ObjectMock4"],
  60664. //>>excludeEnd("ide");
  60665. messageSends: ["copyClass:named:", "subclass:instanceVariableNames:package:", "at:", "globals", "assert:", "includes:", "subclasses", "do:", "allSubclasses", "removeClass:"]
  60666. }),
  60667. $globals.ClassBuilderTest);
  60668. $core.addMethod(
  60669. $core.method({
  60670. selector: "testInstanceVariableNames",
  60671. protocol: 'tests',
  60672. fn: function (){
  60673. var self=this;
  60674. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60675. return $core.withContext(function($ctx1) {
  60676. //>>excludeEnd("ctx");
  60677. self._assert_equals_($recv(self["@builder"])._instanceVariableNamesFor_(" hello world "),["hello", "world"]);
  60678. return self;
  60679. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60680. }, function($ctx1) {$ctx1.fill(self,"testInstanceVariableNames",{},$globals.ClassBuilderTest)});
  60681. //>>excludeEnd("ctx");
  60682. },
  60683. //>>excludeStart("ide", pragmas.excludeIdeData);
  60684. args: [],
  60685. source: "testInstanceVariableNames\x0a\x09self assert: (builder instanceVariableNamesFor: ' hello world ') equals: #('hello' 'world')",
  60686. referencedClasses: [],
  60687. //>>excludeEnd("ide");
  60688. messageSends: ["assert:equals:", "instanceVariableNamesFor:"]
  60689. }),
  60690. $globals.ClassBuilderTest);
  60691. $core.addClass('CollectionTest', $globals.TestCase, [], 'Kernel-Tests');
  60692. $core.addMethod(
  60693. $core.method({
  60694. selector: "assertSameContents:as:",
  60695. protocol: 'convenience',
  60696. fn: function (aCollection,anotherCollection){
  60697. var self=this;
  60698. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60699. return $core.withContext(function($ctx1) {
  60700. //>>excludeEnd("ctx");
  60701. var $2,$1,$4,$3;
  60702. $2=$recv(aCollection)._size();
  60703. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60704. $ctx1.sendIdx["size"]=1;
  60705. //>>excludeEnd("ctx");
  60706. $1=$recv($2).__eq($recv(anotherCollection)._size());
  60707. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60708. $ctx1.sendIdx["="]=1;
  60709. //>>excludeEnd("ctx");
  60710. self._assert_($1);
  60711. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60712. $ctx1.sendIdx["assert:"]=1;
  60713. //>>excludeEnd("ctx");
  60714. $recv(aCollection)._do_((function(each){
  60715. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60716. return $core.withContext(function($ctx2) {
  60717. //>>excludeEnd("ctx");
  60718. $4=$recv(aCollection)._occurrencesOf_(each);
  60719. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60720. $ctx2.sendIdx["occurrencesOf:"]=1;
  60721. //>>excludeEnd("ctx");
  60722. $3=$recv($4).__eq($recv(anotherCollection)._occurrencesOf_(each));
  60723. return self._assert_($3);
  60724. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60725. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  60726. //>>excludeEnd("ctx");
  60727. }));
  60728. return self;
  60729. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60730. }, function($ctx1) {$ctx1.fill(self,"assertSameContents:as:",{aCollection:aCollection,anotherCollection:anotherCollection},$globals.CollectionTest)});
  60731. //>>excludeEnd("ctx");
  60732. },
  60733. //>>excludeStart("ide", pragmas.excludeIdeData);
  60734. args: ["aCollection", "anotherCollection"],
  60735. 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)) ]",
  60736. referencedClasses: [],
  60737. //>>excludeEnd("ide");
  60738. messageSends: ["assert:", "=", "size", "do:", "occurrencesOf:"]
  60739. }),
  60740. $globals.CollectionTest);
  60741. $core.addMethod(
  60742. $core.method({
  60743. selector: "collection",
  60744. protocol: 'fixture',
  60745. fn: function (){
  60746. var self=this;
  60747. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60748. return $core.withContext(function($ctx1) {
  60749. //>>excludeEnd("ctx");
  60750. self._subclassResponsibility();
  60751. return self;
  60752. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60753. }, function($ctx1) {$ctx1.fill(self,"collection",{},$globals.CollectionTest)});
  60754. //>>excludeEnd("ctx");
  60755. },
  60756. //>>excludeStart("ide", pragmas.excludeIdeData);
  60757. args: [],
  60758. source: "collection\x0a\x09\x22Answers pre-filled collection of type tested.\x22\x0a\x0a\x09self subclassResponsibility",
  60759. referencedClasses: [],
  60760. //>>excludeEnd("ide");
  60761. messageSends: ["subclassResponsibility"]
  60762. }),
  60763. $globals.CollectionTest);
  60764. $core.addMethod(
  60765. $core.method({
  60766. selector: "collectionClass",
  60767. protocol: 'fixture',
  60768. fn: function (){
  60769. var self=this;
  60770. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60771. return $core.withContext(function($ctx1) {
  60772. //>>excludeEnd("ctx");
  60773. var $1;
  60774. $1=$recv(self._class())._collectionClass();
  60775. return $1;
  60776. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60777. }, function($ctx1) {$ctx1.fill(self,"collectionClass",{},$globals.CollectionTest)});
  60778. //>>excludeEnd("ctx");
  60779. },
  60780. //>>excludeStart("ide", pragmas.excludeIdeData);
  60781. args: [],
  60782. source: "collectionClass\x0a\x09\x22Answers class of collection type tested\x22\x0a\x0a\x09^ self class collectionClass",
  60783. referencedClasses: [],
  60784. //>>excludeEnd("ide");
  60785. messageSends: ["collectionClass", "class"]
  60786. }),
  60787. $globals.CollectionTest);
  60788. $core.addMethod(
  60789. $core.method({
  60790. selector: "collectionOfPrintStrings",
  60791. protocol: 'fixture',
  60792. fn: function (){
  60793. var self=this;
  60794. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60795. return $core.withContext(function($ctx1) {
  60796. //>>excludeEnd("ctx");
  60797. self._subclassResponsibility();
  60798. return self;
  60799. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60800. }, function($ctx1) {$ctx1.fill(self,"collectionOfPrintStrings",{},$globals.CollectionTest)});
  60801. //>>excludeEnd("ctx");
  60802. },
  60803. //>>excludeStart("ide", pragmas.excludeIdeData);
  60804. args: [],
  60805. source: "collectionOfPrintStrings\x0a\x09\x22Answers self collection but with values\x0a\x09changed to their printStrings\x22\x0a\x0a\x09self subclassResponsibility",
  60806. referencedClasses: [],
  60807. //>>excludeEnd("ide");
  60808. messageSends: ["subclassResponsibility"]
  60809. }),
  60810. $globals.CollectionTest);
  60811. $core.addMethod(
  60812. $core.method({
  60813. selector: "collectionSize",
  60814. protocol: 'fixture',
  60815. fn: function (){
  60816. var self=this;
  60817. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60818. return $core.withContext(function($ctx1) {
  60819. //>>excludeEnd("ctx");
  60820. self._subclassResponsibility();
  60821. return self;
  60822. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60823. }, function($ctx1) {$ctx1.fill(self,"collectionSize",{},$globals.CollectionTest)});
  60824. //>>excludeEnd("ctx");
  60825. },
  60826. //>>excludeStart("ide", pragmas.excludeIdeData);
  60827. args: [],
  60828. source: "collectionSize\x0a\x09\x22Answers size of self collection.\x22\x0a\x0a\x09self subclassResponsibility",
  60829. referencedClasses: [],
  60830. //>>excludeEnd("ide");
  60831. messageSends: ["subclassResponsibility"]
  60832. }),
  60833. $globals.CollectionTest);
  60834. $core.addMethod(
  60835. $core.method({
  60836. selector: "collectionWithDuplicates",
  60837. protocol: 'fixture',
  60838. fn: function (){
  60839. var self=this;
  60840. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60841. return $core.withContext(function($ctx1) {
  60842. //>>excludeEnd("ctx");
  60843. self._subclassResponsibility();
  60844. return self;
  60845. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60846. }, function($ctx1) {$ctx1.fill(self,"collectionWithDuplicates",{},$globals.CollectionTest)});
  60847. //>>excludeEnd("ctx");
  60848. },
  60849. //>>excludeStart("ide", pragmas.excludeIdeData);
  60850. args: [],
  60851. source: "collectionWithDuplicates\x0a\x09\x22Answers pre-filled collection of type tested,\x0a\x09with exactly five distinct elements,\x0a\x09some of them appearing multiple times, if possible.\x22\x0a\x0a\x09self subclassResponsibility",
  60852. referencedClasses: [],
  60853. //>>excludeEnd("ide");
  60854. messageSends: ["subclassResponsibility"]
  60855. }),
  60856. $globals.CollectionTest);
  60857. $core.addMethod(
  60858. $core.method({
  60859. selector: "collectionWithNewValue",
  60860. protocol: 'fixture',
  60861. fn: function (){
  60862. var self=this;
  60863. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60864. return $core.withContext(function($ctx1) {
  60865. //>>excludeEnd("ctx");
  60866. self._subclassResponsibility();
  60867. return self;
  60868. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60869. }, function($ctx1) {$ctx1.fill(self,"collectionWithNewValue",{},$globals.CollectionTest)});
  60870. //>>excludeEnd("ctx");
  60871. },
  60872. //>>excludeStart("ide", pragmas.excludeIdeData);
  60873. args: [],
  60874. 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",
  60875. referencedClasses: [],
  60876. //>>excludeEnd("ide");
  60877. messageSends: ["subclassResponsibility"]
  60878. }),
  60879. $globals.CollectionTest);
  60880. $core.addMethod(
  60881. $core.method({
  60882. selector: "isCollectionReadOnly",
  60883. protocol: 'testing',
  60884. fn: function (){
  60885. var self=this;
  60886. return false;
  60887. },
  60888. //>>excludeStart("ide", pragmas.excludeIdeData);
  60889. args: [],
  60890. source: "isCollectionReadOnly\x0a\x09^ false",
  60891. referencedClasses: [],
  60892. //>>excludeEnd("ide");
  60893. messageSends: []
  60894. }),
  60895. $globals.CollectionTest);
  60896. $core.addMethod(
  60897. $core.method({
  60898. selector: "sampleNewValue",
  60899. protocol: 'fixture',
  60900. fn: function (){
  60901. var self=this;
  60902. return "N";
  60903. },
  60904. //>>excludeStart("ide", pragmas.excludeIdeData);
  60905. args: [],
  60906. 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'",
  60907. referencedClasses: [],
  60908. //>>excludeEnd("ide");
  60909. messageSends: []
  60910. }),
  60911. $globals.CollectionTest);
  60912. $core.addMethod(
  60913. $core.method({
  60914. selector: "sampleNewValueAsCollection",
  60915. protocol: 'fixture',
  60916. fn: function (){
  60917. var self=this;
  60918. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60919. return $core.withContext(function($ctx1) {
  60920. //>>excludeEnd("ctx");
  60921. var $1;
  60922. $1=$recv(self._collectionClass())._with_(self._sampleNewValue());
  60923. return $1;
  60924. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60925. }, function($ctx1) {$ctx1.fill(self,"sampleNewValueAsCollection",{},$globals.CollectionTest)});
  60926. //>>excludeEnd("ctx");
  60927. },
  60928. //>>excludeStart("ide", pragmas.excludeIdeData);
  60929. args: [],
  60930. 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",
  60931. referencedClasses: [],
  60932. //>>excludeEnd("ide");
  60933. messageSends: ["with:", "collectionClass", "sampleNewValue"]
  60934. }),
  60935. $globals.CollectionTest);
  60936. $core.addMethod(
  60937. $core.method({
  60938. selector: "testAddAll",
  60939. protocol: 'tests',
  60940. fn: function (){
  60941. var self=this;
  60942. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60943. return $core.withContext(function($ctx1) {
  60944. //>>excludeEnd("ctx");
  60945. var $2,$3,$5,$4,$6,$1,$7,$10,$9,$11,$12,$13,$8,$14,$17,$16,$18,$20,$19,$21,$15,$23,$24,$25,$26,$22,$27,$28,$29;
  60946. $2=self._collection();
  60947. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60948. $ctx1.sendIdx["collection"]=1;
  60949. //>>excludeEnd("ctx");
  60950. $3=$2;
  60951. $5=self._collectionClass();
  60952. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60953. $ctx1.sendIdx["collectionClass"]=1;
  60954. //>>excludeEnd("ctx");
  60955. $4=$recv($5)._new();
  60956. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60957. $ctx1.sendIdx["new"]=1;
  60958. //>>excludeEnd("ctx");
  60959. $recv($3)._addAll_($4);
  60960. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60961. $ctx1.sendIdx["addAll:"]=1;
  60962. //>>excludeEnd("ctx");
  60963. $6=$recv($2)._yourself();
  60964. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60965. $ctx1.sendIdx["yourself"]=1;
  60966. //>>excludeEnd("ctx");
  60967. $1=$6;
  60968. $7=self._collection();
  60969. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60970. $ctx1.sendIdx["collection"]=2;
  60971. //>>excludeEnd("ctx");
  60972. self._assert_equals_($1,$7);
  60973. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60974. $ctx1.sendIdx["assert:equals:"]=1;
  60975. //>>excludeEnd("ctx");
  60976. $10=self._collectionClass();
  60977. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60978. $ctx1.sendIdx["collectionClass"]=2;
  60979. //>>excludeEnd("ctx");
  60980. $9=$recv($10)._new();
  60981. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60982. $ctx1.sendIdx["new"]=2;
  60983. //>>excludeEnd("ctx");
  60984. $11=$9;
  60985. $12=self._collection();
  60986. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60987. $ctx1.sendIdx["collection"]=3;
  60988. //>>excludeEnd("ctx");
  60989. $recv($11)._addAll_($12);
  60990. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60991. $ctx1.sendIdx["addAll:"]=2;
  60992. //>>excludeEnd("ctx");
  60993. $13=$recv($9)._yourself();
  60994. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  60995. $ctx1.sendIdx["yourself"]=2;
  60996. //>>excludeEnd("ctx");
  60997. $8=$13;
  60998. $14=self._collection();
  60999. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61000. $ctx1.sendIdx["collection"]=4;
  61001. //>>excludeEnd("ctx");
  61002. self._assert_equals_($8,$14);
  61003. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61004. $ctx1.sendIdx["assert:equals:"]=2;
  61005. //>>excludeEnd("ctx");
  61006. $17=self._collectionClass();
  61007. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61008. $ctx1.sendIdx["collectionClass"]=3;
  61009. //>>excludeEnd("ctx");
  61010. $16=$recv($17)._new();
  61011. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61012. $ctx1.sendIdx["new"]=3;
  61013. //>>excludeEnd("ctx");
  61014. $18=$16;
  61015. $20=self._collectionClass();
  61016. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61017. $ctx1.sendIdx["collectionClass"]=4;
  61018. //>>excludeEnd("ctx");
  61019. $19=$recv($20)._new();
  61020. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61021. $ctx1.sendIdx["new"]=4;
  61022. //>>excludeEnd("ctx");
  61023. $recv($18)._addAll_($19);
  61024. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61025. $ctx1.sendIdx["addAll:"]=3;
  61026. //>>excludeEnd("ctx");
  61027. $21=$recv($16)._yourself();
  61028. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61029. $ctx1.sendIdx["yourself"]=3;
  61030. //>>excludeEnd("ctx");
  61031. $15=$21;
  61032. self._assert_equals_($15,$recv(self._collectionClass())._new());
  61033. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61034. $ctx1.sendIdx["assert:equals:"]=3;
  61035. //>>excludeEnd("ctx");
  61036. $23=self._collection();
  61037. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61038. $ctx1.sendIdx["collection"]=5;
  61039. //>>excludeEnd("ctx");
  61040. $24=$23;
  61041. $25=self._sampleNewValueAsCollection();
  61042. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61043. $ctx1.sendIdx["sampleNewValueAsCollection"]=1;
  61044. //>>excludeEnd("ctx");
  61045. $recv($24)._addAll_($25);
  61046. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61047. $ctx1.sendIdx["addAll:"]=4;
  61048. //>>excludeEnd("ctx");
  61049. $26=$recv($23)._yourself();
  61050. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61051. $ctx1.sendIdx["yourself"]=4;
  61052. //>>excludeEnd("ctx");
  61053. $22=$26;
  61054. $27=self._collectionWithNewValue();
  61055. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61056. $ctx1.sendIdx["collectionWithNewValue"]=1;
  61057. //>>excludeEnd("ctx");
  61058. self._assert_equals_($22,$27);
  61059. $28=self._sampleNewValueAsCollection();
  61060. $recv($28)._addAll_(self._collection());
  61061. $29=$recv($28)._yourself();
  61062. self._assertSameContents_as_($29,self._collectionWithNewValue());
  61063. return self;
  61064. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61065. }, function($ctx1) {$ctx1.fill(self,"testAddAll",{},$globals.CollectionTest)});
  61066. //>>excludeEnd("ctx");
  61067. },
  61068. //>>excludeStart("ide", pragmas.excludeIdeData);
  61069. args: [],
  61070. 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",
  61071. referencedClasses: [],
  61072. //>>excludeEnd("ide");
  61073. messageSends: ["assert:equals:", "addAll:", "collection", "new", "collectionClass", "yourself", "sampleNewValueAsCollection", "collectionWithNewValue", "assertSameContents:as:"]
  61074. }),
  61075. $globals.CollectionTest);
  61076. $core.addMethod(
  61077. $core.method({
  61078. selector: "testAllSatisfy",
  61079. protocol: 'tests',
  61080. fn: function (){
  61081. var self=this;
  61082. var collection,anyOne;
  61083. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61084. return $core.withContext(function($ctx1) {
  61085. //>>excludeEnd("ctx");
  61086. var $1;
  61087. collection=self._collection();
  61088. anyOne=$recv(collection)._anyOne();
  61089. $1=$recv(collection)._allSatisfy_((function(each){
  61090. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61091. return $core.withContext(function($ctx2) {
  61092. //>>excludeEnd("ctx");
  61093. return $recv(collection)._includes_(each);
  61094. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61095. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  61096. //>>excludeEnd("ctx");
  61097. }));
  61098. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61099. $ctx1.sendIdx["allSatisfy:"]=1;
  61100. //>>excludeEnd("ctx");
  61101. self._assert_($1);
  61102. self._deny_($recv(collection)._allSatisfy_((function(each){
  61103. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61104. return $core.withContext(function($ctx2) {
  61105. //>>excludeEnd("ctx");
  61106. return $recv(each).__tild_eq(anyOne);
  61107. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61108. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,2)});
  61109. //>>excludeEnd("ctx");
  61110. })));
  61111. return self;
  61112. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61113. }, function($ctx1) {$ctx1.fill(self,"testAllSatisfy",{collection:collection,anyOne:anyOne},$globals.CollectionTest)});
  61114. //>>excludeEnd("ctx");
  61115. },
  61116. //>>excludeStart("ide", pragmas.excludeIdeData);
  61117. args: [],
  61118. 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 ])",
  61119. referencedClasses: [],
  61120. //>>excludeEnd("ide");
  61121. messageSends: ["collection", "anyOne", "assert:", "allSatisfy:", "includes:", "deny:", "~="]
  61122. }),
  61123. $globals.CollectionTest);
  61124. $core.addMethod(
  61125. $core.method({
  61126. selector: "testAnyOne",
  61127. protocol: 'tests',
  61128. fn: function (){
  61129. var self=this;
  61130. function $Error(){return $globals.Error||(typeof Error=="undefined"?nil:Error)}
  61131. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61132. return $core.withContext(function($ctx1) {
  61133. //>>excludeEnd("ctx");
  61134. var $2,$1;
  61135. self._should_raise_((function(){
  61136. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61137. return $core.withContext(function($ctx2) {
  61138. //>>excludeEnd("ctx");
  61139. return $recv($recv(self._collectionClass())._new())._anyOne();
  61140. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61141. $ctx2.sendIdx["anyOne"]=1;
  61142. //>>excludeEnd("ctx");
  61143. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61144. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  61145. //>>excludeEnd("ctx");
  61146. }),$Error());
  61147. $2=self._collection();
  61148. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61149. $ctx1.sendIdx["collection"]=1;
  61150. //>>excludeEnd("ctx");
  61151. $1=$recv($2)._includes_($recv(self._collection())._anyOne());
  61152. self._assert_($1);
  61153. return self;
  61154. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61155. }, function($ctx1) {$ctx1.fill(self,"testAnyOne",{},$globals.CollectionTest)});
  61156. //>>excludeEnd("ctx");
  61157. },
  61158. //>>excludeStart("ide", pragmas.excludeIdeData);
  61159. args: [],
  61160. source: "testAnyOne\x0a\x09self should: [ self collectionClass new anyOne ] raise: Error.\x0a\x09self assert: (self collection includes: self collection anyOne)",
  61161. referencedClasses: ["Error"],
  61162. //>>excludeEnd("ide");
  61163. messageSends: ["should:raise:", "anyOne", "new", "collectionClass", "assert:", "includes:", "collection"]
  61164. }),
  61165. $globals.CollectionTest);
  61166. $core.addMethod(
  61167. $core.method({
  61168. selector: "testAnySatisfy",
  61169. protocol: 'tests',
  61170. fn: function (){
  61171. var self=this;
  61172. var anyOne;
  61173. function $Object(){return $globals.Object||(typeof Object=="undefined"?nil:Object)}
  61174. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61175. return $core.withContext(function($ctx1) {
  61176. //>>excludeEnd("ctx");
  61177. var $1,$3,$2;
  61178. $1=self._collection();
  61179. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61180. $ctx1.sendIdx["collection"]=1;
  61181. //>>excludeEnd("ctx");
  61182. anyOne=$recv($1)._anyOne();
  61183. $3=self._collection();
  61184. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61185. $ctx1.sendIdx["collection"]=2;
  61186. //>>excludeEnd("ctx");
  61187. $2=$recv($3)._anySatisfy_((function(each){
  61188. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61189. return $core.withContext(function($ctx2) {
  61190. //>>excludeEnd("ctx");
  61191. return $recv(each).__eq(anyOne);
  61192. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61193. $ctx2.sendIdx["="]=1;
  61194. //>>excludeEnd("ctx");
  61195. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61196. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  61197. //>>excludeEnd("ctx");
  61198. }));
  61199. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61200. $ctx1.sendIdx["anySatisfy:"]=1;
  61201. //>>excludeEnd("ctx");
  61202. self._assert_($2);
  61203. self._deny_($recv(self._collection())._anySatisfy_((function(each){
  61204. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61205. return $core.withContext(function($ctx2) {
  61206. //>>excludeEnd("ctx");
  61207. return $recv(each).__eq($recv($Object())._new());
  61208. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61209. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,2)});
  61210. //>>excludeEnd("ctx");
  61211. })));
  61212. return self;
  61213. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61214. }, function($ctx1) {$ctx1.fill(self,"testAnySatisfy",{anyOne:anyOne},$globals.CollectionTest)});
  61215. //>>excludeEnd("ctx");
  61216. },
  61217. //>>excludeStart("ide", pragmas.excludeIdeData);
  61218. args: [],
  61219. 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 ])",
  61220. referencedClasses: ["Object"],
  61221. //>>excludeEnd("ide");
  61222. messageSends: ["anyOne", "collection", "assert:", "anySatisfy:", "=", "deny:", "new"]
  61223. }),
  61224. $globals.CollectionTest);
  61225. $core.addMethod(
  61226. $core.method({
  61227. selector: "testAsArray",
  61228. protocol: 'tests',
  61229. fn: function (){
  61230. var self=this;
  61231. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61232. return $core.withContext(function($ctx1) {
  61233. //>>excludeEnd("ctx");
  61234. var $1;
  61235. $1=self._collection();
  61236. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61237. $ctx1.sendIdx["collection"]=1;
  61238. //>>excludeEnd("ctx");
  61239. self._assertSameContents_as_($1,$recv(self._collection())._asArray());
  61240. return self;
  61241. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61242. }, function($ctx1) {$ctx1.fill(self,"testAsArray",{},$globals.CollectionTest)});
  61243. //>>excludeEnd("ctx");
  61244. },
  61245. //>>excludeStart("ide", pragmas.excludeIdeData);
  61246. args: [],
  61247. source: "testAsArray\x0a\x09self\x0a\x09\x09assertSameContents: self collection\x0a\x09\x09as: self collection asArray",
  61248. referencedClasses: [],
  61249. //>>excludeEnd("ide");
  61250. messageSends: ["assertSameContents:as:", "collection", "asArray"]
  61251. }),
  61252. $globals.CollectionTest);
  61253. $core.addMethod(
  61254. $core.method({
  61255. selector: "testAsOrderedCollection",
  61256. protocol: 'tests',
  61257. fn: function (){
  61258. var self=this;
  61259. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61260. return $core.withContext(function($ctx1) {
  61261. //>>excludeEnd("ctx");
  61262. var $1;
  61263. $1=self._collection();
  61264. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61265. $ctx1.sendIdx["collection"]=1;
  61266. //>>excludeEnd("ctx");
  61267. self._assertSameContents_as_($1,$recv(self._collection())._asOrderedCollection());
  61268. return self;
  61269. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61270. }, function($ctx1) {$ctx1.fill(self,"testAsOrderedCollection",{},$globals.CollectionTest)});
  61271. //>>excludeEnd("ctx");
  61272. },
  61273. //>>excludeStart("ide", pragmas.excludeIdeData);
  61274. args: [],
  61275. source: "testAsOrderedCollection\x0a\x09self\x0a\x09\x09assertSameContents: self collection\x0a\x09\x09as: self collection asOrderedCollection",
  61276. referencedClasses: [],
  61277. //>>excludeEnd("ide");
  61278. messageSends: ["assertSameContents:as:", "collection", "asOrderedCollection"]
  61279. }),
  61280. $globals.CollectionTest);
  61281. $core.addMethod(
  61282. $core.method({
  61283. selector: "testAsSet",
  61284. protocol: 'tests',
  61285. fn: function (){
  61286. var self=this;
  61287. var c,set;
  61288. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61289. return $core.withContext(function($ctx1) {
  61290. //>>excludeEnd("ctx");
  61291. c=self._collectionWithDuplicates();
  61292. set=$recv(c)._asSet();
  61293. self._assert_equals_($recv(set)._size(),(5));
  61294. $recv(c)._do_((function(each){
  61295. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61296. return $core.withContext(function($ctx2) {
  61297. //>>excludeEnd("ctx");
  61298. return self._assert_($recv(set)._includes_(each));
  61299. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61300. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  61301. //>>excludeEnd("ctx");
  61302. }));
  61303. return self;
  61304. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61305. }, function($ctx1) {$ctx1.fill(self,"testAsSet",{c:c,set:set},$globals.CollectionTest)});
  61306. //>>excludeEnd("ctx");
  61307. },
  61308. //>>excludeStart("ide", pragmas.excludeIdeData);
  61309. args: [],
  61310. source: "testAsSet\x0a\x09| c set |\x0a\x09c := self collectionWithDuplicates.\x0a\x09set := c asSet.\x0a\x09self assert: set size equals: 5.\x0a\x09c do: [ :each |\x0a\x09\x09self assert: (set includes: each) ]",
  61311. referencedClasses: [],
  61312. //>>excludeEnd("ide");
  61313. messageSends: ["collectionWithDuplicates", "asSet", "assert:equals:", "size", "do:", "assert:", "includes:"]
  61314. }),
  61315. $globals.CollectionTest);
  61316. $core.addMethod(
  61317. $core.method({
  61318. selector: "testCollect",
  61319. protocol: 'tests',
  61320. fn: function (){
  61321. var self=this;
  61322. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61323. return $core.withContext(function($ctx1) {
  61324. //>>excludeEnd("ctx");
  61325. var $2,$1,$3,$5,$4,$8,$7,$6,$11,$10,$9;
  61326. $2=self._collection();
  61327. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61328. $ctx1.sendIdx["collection"]=1;
  61329. //>>excludeEnd("ctx");
  61330. $1=$recv($2)._collect_((function(each){
  61331. return each;
  61332. }));
  61333. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61334. $ctx1.sendIdx["collect:"]=1;
  61335. //>>excludeEnd("ctx");
  61336. $3=self._collection();
  61337. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61338. $ctx1.sendIdx["collection"]=2;
  61339. //>>excludeEnd("ctx");
  61340. self._assert_equals_($1,$3);
  61341. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61342. $ctx1.sendIdx["assert:equals:"]=1;
  61343. //>>excludeEnd("ctx");
  61344. $5=self._collectionWithNewValue();
  61345. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61346. $ctx1.sendIdx["collectionWithNewValue"]=1;
  61347. //>>excludeEnd("ctx");
  61348. $4=$recv($5)._collect_((function(each){
  61349. return each;
  61350. }));
  61351. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61352. $ctx1.sendIdx["collect:"]=2;
  61353. //>>excludeEnd("ctx");
  61354. self._assert_equals_($4,self._collectionWithNewValue());
  61355. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61356. $ctx1.sendIdx["assert:equals:"]=2;
  61357. //>>excludeEnd("ctx");
  61358. $8=self._collectionClass();
  61359. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61360. $ctx1.sendIdx["collectionClass"]=1;
  61361. //>>excludeEnd("ctx");
  61362. $7=$recv($8)._new();
  61363. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61364. $ctx1.sendIdx["new"]=1;
  61365. //>>excludeEnd("ctx");
  61366. $6=$recv($7)._collect_((function(each){
  61367. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61368. return $core.withContext(function($ctx2) {
  61369. //>>excludeEnd("ctx");
  61370. return $recv(each)._printString();
  61371. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61372. $ctx2.sendIdx["printString"]=1;
  61373. //>>excludeEnd("ctx");
  61374. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61375. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,3)});
  61376. //>>excludeEnd("ctx");
  61377. }));
  61378. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61379. $ctx1.sendIdx["collect:"]=3;
  61380. //>>excludeEnd("ctx");
  61381. self._assert_equals_($6,$recv(self._collectionClass())._new());
  61382. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61383. $ctx1.sendIdx["assert:equals:"]=3;
  61384. //>>excludeEnd("ctx");
  61385. $11=self._collection();
  61386. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61387. $ctx1.sendIdx["collection"]=3;
  61388. //>>excludeEnd("ctx");
  61389. $10=$recv($11)._collect_((function(){
  61390. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61391. return $core.withContext(function($ctx2) {
  61392. //>>excludeEnd("ctx");
  61393. return self._sampleNewValue();
  61394. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61395. $ctx2.sendIdx["sampleNewValue"]=1;
  61396. //>>excludeEnd("ctx");
  61397. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61398. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,4)});
  61399. //>>excludeEnd("ctx");
  61400. }));
  61401. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61402. $ctx1.sendIdx["collect:"]=4;
  61403. //>>excludeEnd("ctx");
  61404. $9=$recv($10)._detect_((function(){
  61405. return true;
  61406. }));
  61407. self._assert_equals_($9,self._sampleNewValue());
  61408. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61409. $ctx1.sendIdx["assert:equals:"]=4;
  61410. //>>excludeEnd("ctx");
  61411. self._assert_equals_($recv(self._collection())._collect_((function(each){
  61412. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61413. return $core.withContext(function($ctx2) {
  61414. //>>excludeEnd("ctx");
  61415. return $recv(each)._printString();
  61416. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61417. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,6)});
  61418. //>>excludeEnd("ctx");
  61419. })),self._collectionOfPrintStrings());
  61420. return self;
  61421. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61422. }, function($ctx1) {$ctx1.fill(self,"testCollect",{},$globals.CollectionTest)});
  61423. //>>excludeEnd("ctx");
  61424. },
  61425. //>>excludeStart("ide", pragmas.excludeIdeData);
  61426. args: [],
  61427. 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",
  61428. referencedClasses: [],
  61429. //>>excludeEnd("ide");
  61430. messageSends: ["assert:equals:", "collect:", "collection", "collectionWithNewValue", "new", "collectionClass", "printString", "detect:", "sampleNewValue", "collectionOfPrintStrings"]
  61431. }),
  61432. $globals.CollectionTest);
  61433. $core.addMethod(
  61434. $core.method({
  61435. selector: "testComma",
  61436. protocol: 'tests',
  61437. fn: function (){
  61438. var self=this;
  61439. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61440. return $core.withContext(function($ctx1) {
  61441. //>>excludeEnd("ctx");
  61442. var $2,$4,$3,$1,$5,$8,$7,$9,$6,$10,$13,$12,$15,$14,$11,$17,$18,$16,$19;
  61443. $2=self._collection();
  61444. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61445. $ctx1.sendIdx["collection"]=1;
  61446. //>>excludeEnd("ctx");
  61447. $4=self._collectionClass();
  61448. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61449. $ctx1.sendIdx["collectionClass"]=1;
  61450. //>>excludeEnd("ctx");
  61451. $3=$recv($4)._new();
  61452. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61453. $ctx1.sendIdx["new"]=1;
  61454. //>>excludeEnd("ctx");
  61455. $1=$recv($2).__comma($3);
  61456. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61457. $ctx1.sendIdx[","]=1;
  61458. //>>excludeEnd("ctx");
  61459. $5=self._collection();
  61460. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61461. $ctx1.sendIdx["collection"]=2;
  61462. //>>excludeEnd("ctx");
  61463. self._assert_equals_($1,$5);
  61464. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61465. $ctx1.sendIdx["assert:equals:"]=1;
  61466. //>>excludeEnd("ctx");
  61467. $8=self._collectionClass();
  61468. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61469. $ctx1.sendIdx["collectionClass"]=2;
  61470. //>>excludeEnd("ctx");
  61471. $7=$recv($8)._new();
  61472. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61473. $ctx1.sendIdx["new"]=2;
  61474. //>>excludeEnd("ctx");
  61475. $9=self._collection();
  61476. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61477. $ctx1.sendIdx["collection"]=3;
  61478. //>>excludeEnd("ctx");
  61479. $6=$recv($7).__comma($9);
  61480. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61481. $ctx1.sendIdx[","]=2;
  61482. //>>excludeEnd("ctx");
  61483. $10=self._collection();
  61484. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61485. $ctx1.sendIdx["collection"]=4;
  61486. //>>excludeEnd("ctx");
  61487. self._assert_equals_($6,$10);
  61488. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61489. $ctx1.sendIdx["assert:equals:"]=2;
  61490. //>>excludeEnd("ctx");
  61491. $13=self._collectionClass();
  61492. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61493. $ctx1.sendIdx["collectionClass"]=3;
  61494. //>>excludeEnd("ctx");
  61495. $12=$recv($13)._new();
  61496. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61497. $ctx1.sendIdx["new"]=3;
  61498. //>>excludeEnd("ctx");
  61499. $15=self._collectionClass();
  61500. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61501. $ctx1.sendIdx["collectionClass"]=4;
  61502. //>>excludeEnd("ctx");
  61503. $14=$recv($15)._new();
  61504. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61505. $ctx1.sendIdx["new"]=4;
  61506. //>>excludeEnd("ctx");
  61507. $11=$recv($12).__comma($14);
  61508. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61509. $ctx1.sendIdx[","]=3;
  61510. //>>excludeEnd("ctx");
  61511. self._assert_equals_($11,$recv(self._collectionClass())._new());
  61512. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61513. $ctx1.sendIdx["assert:equals:"]=3;
  61514. //>>excludeEnd("ctx");
  61515. $17=self._collection();
  61516. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61517. $ctx1.sendIdx["collection"]=5;
  61518. //>>excludeEnd("ctx");
  61519. $18=self._sampleNewValueAsCollection();
  61520. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61521. $ctx1.sendIdx["sampleNewValueAsCollection"]=1;
  61522. //>>excludeEnd("ctx");
  61523. $16=$recv($17).__comma($18);
  61524. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61525. $ctx1.sendIdx[","]=4;
  61526. //>>excludeEnd("ctx");
  61527. $19=self._collectionWithNewValue();
  61528. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61529. $ctx1.sendIdx["collectionWithNewValue"]=1;
  61530. //>>excludeEnd("ctx");
  61531. self._assert_equals_($16,$19);
  61532. self._assertSameContents_as_($recv(self._sampleNewValueAsCollection()).__comma(self._collection()),self._collectionWithNewValue());
  61533. return self;
  61534. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61535. }, function($ctx1) {$ctx1.fill(self,"testComma",{},$globals.CollectionTest)});
  61536. //>>excludeEnd("ctx");
  61537. },
  61538. //>>excludeStart("ide", pragmas.excludeIdeData);
  61539. args: [],
  61540. 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.\x0a\x09self assertSameContents: self sampleNewValueAsCollection, self collection as: self collectionWithNewValue",
  61541. referencedClasses: [],
  61542. //>>excludeEnd("ide");
  61543. messageSends: ["assert:equals:", ",", "collection", "new", "collectionClass", "sampleNewValueAsCollection", "collectionWithNewValue", "assertSameContents:as:"]
  61544. }),
  61545. $globals.CollectionTest);
  61546. $core.addMethod(
  61547. $core.method({
  61548. selector: "testDetect",
  61549. protocol: 'tests',
  61550. fn: function (){
  61551. var self=this;
  61552. function $Error(){return $globals.Error||(typeof Error=="undefined"?nil:Error)}
  61553. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61554. return $core.withContext(function($ctx1) {
  61555. //>>excludeEnd("ctx");
  61556. var $1,$2,$3,$4,$6,$5,$7;
  61557. self._shouldnt_raise_((function(){
  61558. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61559. return $core.withContext(function($ctx2) {
  61560. //>>excludeEnd("ctx");
  61561. $1=self._collection();
  61562. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61563. $ctx2.sendIdx["collection"]=1;
  61564. //>>excludeEnd("ctx");
  61565. return $recv($1)._detect_((function(){
  61566. return true;
  61567. }));
  61568. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61569. $ctx2.sendIdx["detect:"]=1;
  61570. //>>excludeEnd("ctx");
  61571. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61572. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  61573. //>>excludeEnd("ctx");
  61574. }),$Error());
  61575. self._should_raise_((function(){
  61576. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61577. return $core.withContext(function($ctx2) {
  61578. //>>excludeEnd("ctx");
  61579. $2=self._collection();
  61580. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61581. $ctx2.sendIdx["collection"]=2;
  61582. //>>excludeEnd("ctx");
  61583. return $recv($2)._detect_((function(){
  61584. return false;
  61585. }));
  61586. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61587. $ctx2.sendIdx["detect:"]=2;
  61588. //>>excludeEnd("ctx");
  61589. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61590. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,3)});
  61591. //>>excludeEnd("ctx");
  61592. }),$Error());
  61593. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61594. $ctx1.sendIdx["should:raise:"]=1;
  61595. //>>excludeEnd("ctx");
  61596. $3=$recv(self._sampleNewValueAsCollection())._detect_((function(){
  61597. return true;
  61598. }));
  61599. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61600. $ctx1.sendIdx["detect:"]=3;
  61601. //>>excludeEnd("ctx");
  61602. $4=self._sampleNewValue();
  61603. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61604. $ctx1.sendIdx["sampleNewValue"]=1;
  61605. //>>excludeEnd("ctx");
  61606. self._assert_equals_($3,$4);
  61607. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61608. $ctx1.sendIdx["assert:equals:"]=1;
  61609. //>>excludeEnd("ctx");
  61610. $5=$recv(self._collectionWithNewValue())._detect_((function(each){
  61611. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61612. return $core.withContext(function($ctx2) {
  61613. //>>excludeEnd("ctx");
  61614. $6=self._sampleNewValue();
  61615. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61616. $ctx2.sendIdx["sampleNewValue"]=2;
  61617. //>>excludeEnd("ctx");
  61618. return $recv(each).__eq($6);
  61619. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61620. $ctx2.sendIdx["="]=1;
  61621. //>>excludeEnd("ctx");
  61622. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61623. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,6)});
  61624. //>>excludeEnd("ctx");
  61625. }));
  61626. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61627. $ctx1.sendIdx["detect:"]=4;
  61628. //>>excludeEnd("ctx");
  61629. $7=self._sampleNewValue();
  61630. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61631. $ctx1.sendIdx["sampleNewValue"]=3;
  61632. //>>excludeEnd("ctx");
  61633. self._assert_equals_($5,$7);
  61634. self._should_raise_((function(){
  61635. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61636. return $core.withContext(function($ctx2) {
  61637. //>>excludeEnd("ctx");
  61638. return $recv(self._collection())._detect_((function(each){
  61639. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61640. return $core.withContext(function($ctx3) {
  61641. //>>excludeEnd("ctx");
  61642. return $recv(each).__eq(self._sampleNewValue());
  61643. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61644. }, function($ctx3) {$ctx3.fillBlock({each:each},$ctx2,8)});
  61645. //>>excludeEnd("ctx");
  61646. }));
  61647. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61648. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,7)});
  61649. //>>excludeEnd("ctx");
  61650. }),$Error());
  61651. return self;
  61652. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61653. }, function($ctx1) {$ctx1.fill(self,"testDetect",{},$globals.CollectionTest)});
  61654. //>>excludeEnd("ctx");
  61655. },
  61656. //>>excludeStart("ide", pragmas.excludeIdeData);
  61657. args: [],
  61658. 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",
  61659. referencedClasses: ["Error"],
  61660. //>>excludeEnd("ide");
  61661. messageSends: ["shouldnt:raise:", "detect:", "collection", "should:raise:", "assert:equals:", "sampleNewValueAsCollection", "sampleNewValue", "collectionWithNewValue", "="]
  61662. }),
  61663. $globals.CollectionTest);
  61664. $core.addMethod(
  61665. $core.method({
  61666. selector: "testDetectIfNone",
  61667. protocol: 'tests',
  61668. fn: function (){
  61669. var self=this;
  61670. var sentinel;
  61671. function $Object(){return $globals.Object||(typeof Object=="undefined"?nil:Object)}
  61672. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61673. return $core.withContext(function($ctx1) {
  61674. //>>excludeEnd("ctx");
  61675. var $3,$2,$1,$5,$4,$6,$7,$9,$8,$10;
  61676. sentinel=$recv($Object())._new();
  61677. $3=self._collection();
  61678. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61679. $ctx1.sendIdx["collection"]=1;
  61680. //>>excludeEnd("ctx");
  61681. $2=$recv($3)._detect_ifNone_((function(){
  61682. return true;
  61683. }),(function(){
  61684. return sentinel;
  61685. }));
  61686. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61687. $ctx1.sendIdx["detect:ifNone:"]=1;
  61688. //>>excludeEnd("ctx");
  61689. $1=$recv($2).__tild_eq(sentinel);
  61690. self._assert_($1);
  61691. $5=self._collection();
  61692. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61693. $ctx1.sendIdx["collection"]=2;
  61694. //>>excludeEnd("ctx");
  61695. $4=$recv($5)._detect_ifNone_((function(){
  61696. return false;
  61697. }),(function(){
  61698. return sentinel;
  61699. }));
  61700. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61701. $ctx1.sendIdx["detect:ifNone:"]=2;
  61702. //>>excludeEnd("ctx");
  61703. self._assert_equals_($4,sentinel);
  61704. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61705. $ctx1.sendIdx["assert:equals:"]=1;
  61706. //>>excludeEnd("ctx");
  61707. $6=$recv(self._sampleNewValueAsCollection())._detect_ifNone_((function(){
  61708. return true;
  61709. }),(function(){
  61710. return sentinel;
  61711. }));
  61712. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61713. $ctx1.sendIdx["detect:ifNone:"]=3;
  61714. //>>excludeEnd("ctx");
  61715. $7=self._sampleNewValue();
  61716. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61717. $ctx1.sendIdx["sampleNewValue"]=1;
  61718. //>>excludeEnd("ctx");
  61719. self._assert_equals_($6,$7);
  61720. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61721. $ctx1.sendIdx["assert:equals:"]=2;
  61722. //>>excludeEnd("ctx");
  61723. $8=$recv(self._collectionWithNewValue())._detect_ifNone_((function(each){
  61724. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61725. return $core.withContext(function($ctx2) {
  61726. //>>excludeEnd("ctx");
  61727. $9=self._sampleNewValue();
  61728. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61729. $ctx2.sendIdx["sampleNewValue"]=2;
  61730. //>>excludeEnd("ctx");
  61731. return $recv(each).__eq($9);
  61732. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61733. $ctx2.sendIdx["="]=1;
  61734. //>>excludeEnd("ctx");
  61735. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61736. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,7)});
  61737. //>>excludeEnd("ctx");
  61738. }),(function(){
  61739. return sentinel;
  61740. }));
  61741. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61742. $ctx1.sendIdx["detect:ifNone:"]=4;
  61743. //>>excludeEnd("ctx");
  61744. $10=self._sampleNewValue();
  61745. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61746. $ctx1.sendIdx["sampleNewValue"]=3;
  61747. //>>excludeEnd("ctx");
  61748. self._assert_equals_($8,$10);
  61749. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61750. $ctx1.sendIdx["assert:equals:"]=3;
  61751. //>>excludeEnd("ctx");
  61752. self._assert_equals_($recv(self._collection())._detect_ifNone_((function(each){
  61753. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61754. return $core.withContext(function($ctx2) {
  61755. //>>excludeEnd("ctx");
  61756. return $recv(each).__eq(self._sampleNewValue());
  61757. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61758. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,9)});
  61759. //>>excludeEnd("ctx");
  61760. }),(function(){
  61761. return sentinel;
  61762. })),sentinel);
  61763. return self;
  61764. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61765. }, function($ctx1) {$ctx1.fill(self,"testDetectIfNone",{sentinel:sentinel},$globals.CollectionTest)});
  61766. //>>excludeEnd("ctx");
  61767. },
  61768. //>>excludeStart("ide", pragmas.excludeIdeData);
  61769. args: [],
  61770. 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",
  61771. referencedClasses: ["Object"],
  61772. //>>excludeEnd("ide");
  61773. messageSends: ["new", "assert:", "~=", "detect:ifNone:", "collection", "assert:equals:", "sampleNewValueAsCollection", "sampleNewValue", "collectionWithNewValue", "="]
  61774. }),
  61775. $globals.CollectionTest);
  61776. $core.addMethod(
  61777. $core.method({
  61778. selector: "testDo",
  61779. protocol: 'tests',
  61780. fn: function (){
  61781. var self=this;
  61782. var newCollection;
  61783. function $OrderedCollection(){return $globals.OrderedCollection||(typeof OrderedCollection=="undefined"?nil:OrderedCollection)}
  61784. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61785. return $core.withContext(function($ctx1) {
  61786. //>>excludeEnd("ctx");
  61787. var $1,$2;
  61788. newCollection=$recv($OrderedCollection())._new();
  61789. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61790. $ctx1.sendIdx["new"]=1;
  61791. //>>excludeEnd("ctx");
  61792. $1=self._collection();
  61793. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61794. $ctx1.sendIdx["collection"]=1;
  61795. //>>excludeEnd("ctx");
  61796. $recv($1)._do_((function(each){
  61797. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61798. return $core.withContext(function($ctx2) {
  61799. //>>excludeEnd("ctx");
  61800. return $recv(newCollection)._add_(each);
  61801. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61802. $ctx2.sendIdx["add:"]=1;
  61803. //>>excludeEnd("ctx");
  61804. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61805. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  61806. //>>excludeEnd("ctx");
  61807. }));
  61808. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61809. $ctx1.sendIdx["do:"]=1;
  61810. //>>excludeEnd("ctx");
  61811. self._assertSameContents_as_(self._collection(),newCollection);
  61812. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61813. $ctx1.sendIdx["assertSameContents:as:"]=1;
  61814. //>>excludeEnd("ctx");
  61815. newCollection=$recv($OrderedCollection())._new();
  61816. $2=self._collectionWithDuplicates();
  61817. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61818. $ctx1.sendIdx["collectionWithDuplicates"]=1;
  61819. //>>excludeEnd("ctx");
  61820. $recv($2)._do_((function(each){
  61821. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61822. return $core.withContext(function($ctx2) {
  61823. //>>excludeEnd("ctx");
  61824. return $recv(newCollection)._add_(each);
  61825. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61826. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,2)});
  61827. //>>excludeEnd("ctx");
  61828. }));
  61829. self._assertSameContents_as_(self._collectionWithDuplicates(),newCollection);
  61830. return self;
  61831. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61832. }, function($ctx1) {$ctx1.fill(self,"testDo",{newCollection:newCollection},$globals.CollectionTest)});
  61833. //>>excludeEnd("ctx");
  61834. },
  61835. //>>excludeStart("ide", pragmas.excludeIdeData);
  61836. args: [],
  61837. 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",
  61838. referencedClasses: ["OrderedCollection"],
  61839. //>>excludeEnd("ide");
  61840. messageSends: ["new", "do:", "collection", "add:", "assertSameContents:as:", "collectionWithDuplicates"]
  61841. }),
  61842. $globals.CollectionTest);
  61843. $core.addMethod(
  61844. $core.method({
  61845. selector: "testIfEmptyFamily",
  61846. protocol: 'tests',
  61847. fn: function (){
  61848. var self=this;
  61849. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61850. return $core.withContext(function($ctx1) {
  61851. //>>excludeEnd("ctx");
  61852. var $3,$2,$1,$5,$4,$6,$9,$8,$7,$11,$10,$13,$12,$15,$14,$16,$19,$18,$17,$21,$20,$23,$22,$24,$25,$27,$26,$29,$28;
  61853. $3=self._collectionClass();
  61854. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61855. $ctx1.sendIdx["collectionClass"]=1;
  61856. //>>excludeEnd("ctx");
  61857. $2=$recv($3)._new();
  61858. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61859. $ctx1.sendIdx["new"]=1;
  61860. //>>excludeEnd("ctx");
  61861. $1=$recv($2)._ifEmpty_((function(){
  61862. return (42);
  61863. }));
  61864. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61865. $ctx1.sendIdx["ifEmpty:"]=1;
  61866. //>>excludeEnd("ctx");
  61867. self._assert_equals_($1,(42));
  61868. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61869. $ctx1.sendIdx["assert:equals:"]=1;
  61870. //>>excludeEnd("ctx");
  61871. $5=self._collection();
  61872. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61873. $ctx1.sendIdx["collection"]=1;
  61874. //>>excludeEnd("ctx");
  61875. $4=$recv($5)._ifEmpty_((function(){
  61876. return (42);
  61877. }));
  61878. $6=self._collection();
  61879. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61880. $ctx1.sendIdx["collection"]=2;
  61881. //>>excludeEnd("ctx");
  61882. self._assert_equals_($4,$6);
  61883. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61884. $ctx1.sendIdx["assert:equals:"]=2;
  61885. //>>excludeEnd("ctx");
  61886. $9=self._collectionClass();
  61887. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61888. $ctx1.sendIdx["collectionClass"]=2;
  61889. //>>excludeEnd("ctx");
  61890. $8=$recv($9)._new();
  61891. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61892. $ctx1.sendIdx["new"]=2;
  61893. //>>excludeEnd("ctx");
  61894. $7=$recv($8)._ifNotEmpty_((function(){
  61895. return (42);
  61896. }));
  61897. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61898. $ctx1.sendIdx["ifNotEmpty:"]=1;
  61899. //>>excludeEnd("ctx");
  61900. $11=self._collectionClass();
  61901. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61902. $ctx1.sendIdx["collectionClass"]=3;
  61903. //>>excludeEnd("ctx");
  61904. $10=$recv($11)._new();
  61905. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61906. $ctx1.sendIdx["new"]=3;
  61907. //>>excludeEnd("ctx");
  61908. self._assert_equals_($7,$10);
  61909. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61910. $ctx1.sendIdx["assert:equals:"]=3;
  61911. //>>excludeEnd("ctx");
  61912. $13=self._collection();
  61913. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61914. $ctx1.sendIdx["collection"]=3;
  61915. //>>excludeEnd("ctx");
  61916. $12=$recv($13)._ifNotEmpty_((function(){
  61917. return (42);
  61918. }));
  61919. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61920. $ctx1.sendIdx["ifNotEmpty:"]=2;
  61921. //>>excludeEnd("ctx");
  61922. self._assert_equals_($12,(42));
  61923. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61924. $ctx1.sendIdx["assert:equals:"]=4;
  61925. //>>excludeEnd("ctx");
  61926. $15=self._collection();
  61927. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61928. $ctx1.sendIdx["collection"]=4;
  61929. //>>excludeEnd("ctx");
  61930. $14=$recv($15)._ifNotEmpty_((function(col){
  61931. return col;
  61932. }));
  61933. $16=self._collection();
  61934. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61935. $ctx1.sendIdx["collection"]=5;
  61936. //>>excludeEnd("ctx");
  61937. self._assert_equals_($14,$16);
  61938. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61939. $ctx1.sendIdx["assert:equals:"]=5;
  61940. //>>excludeEnd("ctx");
  61941. $19=self._collectionClass();
  61942. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61943. $ctx1.sendIdx["collectionClass"]=4;
  61944. //>>excludeEnd("ctx");
  61945. $18=$recv($19)._new();
  61946. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61947. $ctx1.sendIdx["new"]=4;
  61948. //>>excludeEnd("ctx");
  61949. $17=$recv($18)._ifEmpty_ifNotEmpty_((function(){
  61950. return (42);
  61951. }),(function(){
  61952. return (999);
  61953. }));
  61954. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61955. $ctx1.sendIdx["ifEmpty:ifNotEmpty:"]=1;
  61956. //>>excludeEnd("ctx");
  61957. self._assert_equals_($17,(42));
  61958. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61959. $ctx1.sendIdx["assert:equals:"]=6;
  61960. //>>excludeEnd("ctx");
  61961. $21=self._collection();
  61962. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61963. $ctx1.sendIdx["collection"]=6;
  61964. //>>excludeEnd("ctx");
  61965. $20=$recv($21)._ifEmpty_ifNotEmpty_((function(){
  61966. return (42);
  61967. }),(function(){
  61968. return (999);
  61969. }));
  61970. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61971. $ctx1.sendIdx["ifEmpty:ifNotEmpty:"]=2;
  61972. //>>excludeEnd("ctx");
  61973. self._assert_equals_($20,(999));
  61974. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61975. $ctx1.sendIdx["assert:equals:"]=7;
  61976. //>>excludeEnd("ctx");
  61977. $23=self._collection();
  61978. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61979. $ctx1.sendIdx["collection"]=7;
  61980. //>>excludeEnd("ctx");
  61981. $22=$recv($23)._ifEmpty_ifNotEmpty_((function(){
  61982. return (42);
  61983. }),(function(col){
  61984. return col;
  61985. }));
  61986. $24=self._collection();
  61987. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61988. $ctx1.sendIdx["collection"]=8;
  61989. //>>excludeEnd("ctx");
  61990. self._assert_equals_($22,$24);
  61991. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61992. $ctx1.sendIdx["assert:equals:"]=8;
  61993. //>>excludeEnd("ctx");
  61994. $25=$recv($recv(self._collectionClass())._new())._ifNotEmpty_ifEmpty_((function(){
  61995. return (42);
  61996. }),(function(){
  61997. return (999);
  61998. }));
  61999. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62000. $ctx1.sendIdx["ifNotEmpty:ifEmpty:"]=1;
  62001. //>>excludeEnd("ctx");
  62002. self._assert_equals_($25,(999));
  62003. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62004. $ctx1.sendIdx["assert:equals:"]=9;
  62005. //>>excludeEnd("ctx");
  62006. $27=self._collection();
  62007. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62008. $ctx1.sendIdx["collection"]=9;
  62009. //>>excludeEnd("ctx");
  62010. $26=$recv($27)._ifNotEmpty_ifEmpty_((function(){
  62011. return (42);
  62012. }),(function(){
  62013. return (999);
  62014. }));
  62015. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62016. $ctx1.sendIdx["ifNotEmpty:ifEmpty:"]=2;
  62017. //>>excludeEnd("ctx");
  62018. self._assert_equals_($26,(42));
  62019. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62020. $ctx1.sendIdx["assert:equals:"]=10;
  62021. //>>excludeEnd("ctx");
  62022. $29=self._collection();
  62023. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62024. $ctx1.sendIdx["collection"]=10;
  62025. //>>excludeEnd("ctx");
  62026. $28=$recv($29)._ifNotEmpty_ifEmpty_((function(col){
  62027. return col;
  62028. }),(function(){
  62029. return (999);
  62030. }));
  62031. self._assert_equals_($28,self._collection());
  62032. return self;
  62033. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62034. }, function($ctx1) {$ctx1.fill(self,"testIfEmptyFamily",{},$globals.CollectionTest)});
  62035. //>>excludeEnd("ctx");
  62036. },
  62037. //>>excludeStart("ide", pragmas.excludeIdeData);
  62038. args: [],
  62039. 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.",
  62040. referencedClasses: [],
  62041. //>>excludeEnd("ide");
  62042. messageSends: ["assert:equals:", "ifEmpty:", "new", "collectionClass", "collection", "ifNotEmpty:", "ifEmpty:ifNotEmpty:", "ifNotEmpty:ifEmpty:"]
  62043. }),
  62044. $globals.CollectionTest);
  62045. $core.addMethod(
  62046. $core.method({
  62047. selector: "testIsEmpty",
  62048. protocol: 'tests',
  62049. fn: function (){
  62050. var self=this;
  62051. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62052. return $core.withContext(function($ctx1) {
  62053. //>>excludeEnd("ctx");
  62054. var $1;
  62055. $1=$recv($recv(self._collectionClass())._new())._isEmpty();
  62056. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62057. $ctx1.sendIdx["isEmpty"]=1;
  62058. //>>excludeEnd("ctx");
  62059. self._assert_($1);
  62060. self._deny_($recv(self._collection())._isEmpty());
  62061. return self;
  62062. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62063. }, function($ctx1) {$ctx1.fill(self,"testIsEmpty",{},$globals.CollectionTest)});
  62064. //>>excludeEnd("ctx");
  62065. },
  62066. //>>excludeStart("ide", pragmas.excludeIdeData);
  62067. args: [],
  62068. source: "testIsEmpty\x0a\x09self assert: self collectionClass new isEmpty.\x0a\x09self deny: self collection isEmpty",
  62069. referencedClasses: [],
  62070. //>>excludeEnd("ide");
  62071. messageSends: ["assert:", "isEmpty", "new", "collectionClass", "deny:", "collection"]
  62072. }),
  62073. $globals.CollectionTest);
  62074. $core.addMethod(
  62075. $core.method({
  62076. selector: "testNoneSatisfy",
  62077. protocol: 'tests',
  62078. fn: function (){
  62079. var self=this;
  62080. var anyOne;
  62081. function $Object(){return $globals.Object||(typeof Object=="undefined"?nil:Object)}
  62082. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62083. return $core.withContext(function($ctx1) {
  62084. //>>excludeEnd("ctx");
  62085. var $1,$3,$2;
  62086. $1=self._collection();
  62087. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62088. $ctx1.sendIdx["collection"]=1;
  62089. //>>excludeEnd("ctx");
  62090. anyOne=$recv($1)._anyOne();
  62091. $3=self._collection();
  62092. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62093. $ctx1.sendIdx["collection"]=2;
  62094. //>>excludeEnd("ctx");
  62095. $2=$recv($3)._noneSatisfy_((function(each){
  62096. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62097. return $core.withContext(function($ctx2) {
  62098. //>>excludeEnd("ctx");
  62099. return $recv(each).__eq(anyOne);
  62100. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62101. $ctx2.sendIdx["="]=1;
  62102. //>>excludeEnd("ctx");
  62103. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62104. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  62105. //>>excludeEnd("ctx");
  62106. }));
  62107. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62108. $ctx1.sendIdx["noneSatisfy:"]=1;
  62109. //>>excludeEnd("ctx");
  62110. self._deny_($2);
  62111. self._assert_($recv(self._collection())._noneSatisfy_((function(each){
  62112. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62113. return $core.withContext(function($ctx2) {
  62114. //>>excludeEnd("ctx");
  62115. return $recv(each).__eq($recv($Object())._new());
  62116. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62117. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,2)});
  62118. //>>excludeEnd("ctx");
  62119. })));
  62120. return self;
  62121. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62122. }, function($ctx1) {$ctx1.fill(self,"testNoneSatisfy",{anyOne:anyOne},$globals.CollectionTest)});
  62123. //>>excludeEnd("ctx");
  62124. },
  62125. //>>excludeStart("ide", pragmas.excludeIdeData);
  62126. args: [],
  62127. 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 ])",
  62128. referencedClasses: ["Object"],
  62129. //>>excludeEnd("ide");
  62130. messageSends: ["anyOne", "collection", "deny:", "noneSatisfy:", "=", "assert:", "new"]
  62131. }),
  62132. $globals.CollectionTest);
  62133. $core.addMethod(
  62134. $core.method({
  62135. selector: "testRemoveAll",
  62136. protocol: 'tests',
  62137. fn: function (){
  62138. var self=this;
  62139. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62140. return $core.withContext(function($ctx1) {
  62141. //>>excludeEnd("ctx");
  62142. var $1,$2;
  62143. $1=self._collection();
  62144. $recv($1)._removeAll();
  62145. $2=$recv($1)._yourself();
  62146. self._assert_equals_($2,$recv(self._collectionClass())._new());
  62147. return self;
  62148. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62149. }, function($ctx1) {$ctx1.fill(self,"testRemoveAll",{},$globals.CollectionTest)});
  62150. //>>excludeEnd("ctx");
  62151. },
  62152. //>>excludeStart("ide", pragmas.excludeIdeData);
  62153. args: [],
  62154. source: "testRemoveAll\x0a\x09self assert: (self collection removeAll; yourself) equals: self collectionClass new",
  62155. referencedClasses: [],
  62156. //>>excludeEnd("ide");
  62157. messageSends: ["assert:equals:", "removeAll", "collection", "yourself", "new", "collectionClass"]
  62158. }),
  62159. $globals.CollectionTest);
  62160. $core.addMethod(
  62161. $core.method({
  62162. selector: "testSelect",
  62163. protocol: 'tests',
  62164. fn: function (){
  62165. var self=this;
  62166. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62167. return $core.withContext(function($ctx1) {
  62168. //>>excludeEnd("ctx");
  62169. var $2,$1,$4,$3,$6,$5,$7,$9,$10,$8,$12,$13,$11,$14,$16,$17,$15;
  62170. $2=self._collection();
  62171. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62172. $ctx1.sendIdx["collection"]=1;
  62173. //>>excludeEnd("ctx");
  62174. $1=$recv($2)._select_((function(){
  62175. return false;
  62176. }));
  62177. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62178. $ctx1.sendIdx["select:"]=1;
  62179. //>>excludeEnd("ctx");
  62180. $4=self._collectionClass();
  62181. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62182. $ctx1.sendIdx["collectionClass"]=1;
  62183. //>>excludeEnd("ctx");
  62184. $3=$recv($4)._new();
  62185. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62186. $ctx1.sendIdx["new"]=1;
  62187. //>>excludeEnd("ctx");
  62188. self._assert_equals_($1,$3);
  62189. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62190. $ctx1.sendIdx["assert:equals:"]=1;
  62191. //>>excludeEnd("ctx");
  62192. $6=self._collection();
  62193. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62194. $ctx1.sendIdx["collection"]=2;
  62195. //>>excludeEnd("ctx");
  62196. $5=$recv($6)._select_((function(){
  62197. return true;
  62198. }));
  62199. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62200. $ctx1.sendIdx["select:"]=2;
  62201. //>>excludeEnd("ctx");
  62202. $7=self._collection();
  62203. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62204. $ctx1.sendIdx["collection"]=3;
  62205. //>>excludeEnd("ctx");
  62206. self._assert_equals_($5,$7);
  62207. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62208. $ctx1.sendIdx["assert:equals:"]=2;
  62209. //>>excludeEnd("ctx");
  62210. $9=self._collectionWithNewValue();
  62211. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62212. $ctx1.sendIdx["collectionWithNewValue"]=1;
  62213. //>>excludeEnd("ctx");
  62214. $8=$recv($9)._select_((function(each){
  62215. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62216. return $core.withContext(function($ctx2) {
  62217. //>>excludeEnd("ctx");
  62218. $10=self._sampleNewValue();
  62219. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62220. $ctx2.sendIdx["sampleNewValue"]=1;
  62221. //>>excludeEnd("ctx");
  62222. return $recv(each).__eq($10);
  62223. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62224. $ctx2.sendIdx["="]=1;
  62225. //>>excludeEnd("ctx");
  62226. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62227. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,3)});
  62228. //>>excludeEnd("ctx");
  62229. }));
  62230. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62231. $ctx1.sendIdx["select:"]=3;
  62232. //>>excludeEnd("ctx");
  62233. self._assert_equals_($8,self._sampleNewValueAsCollection());
  62234. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62235. $ctx1.sendIdx["assert:equals:"]=3;
  62236. //>>excludeEnd("ctx");
  62237. $12=self._collectionWithNewValue();
  62238. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62239. $ctx1.sendIdx["collectionWithNewValue"]=2;
  62240. //>>excludeEnd("ctx");
  62241. $11=$recv($12)._select_((function(each){
  62242. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62243. return $core.withContext(function($ctx2) {
  62244. //>>excludeEnd("ctx");
  62245. $13=self._sampleNewValue();
  62246. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62247. $ctx2.sendIdx["sampleNewValue"]=2;
  62248. //>>excludeEnd("ctx");
  62249. return $recv(each).__tild_eq($13);
  62250. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62251. $ctx2.sendIdx["~="]=1;
  62252. //>>excludeEnd("ctx");
  62253. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62254. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,4)});
  62255. //>>excludeEnd("ctx");
  62256. }));
  62257. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62258. $ctx1.sendIdx["select:"]=4;
  62259. //>>excludeEnd("ctx");
  62260. $14=self._collection();
  62261. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62262. $ctx1.sendIdx["collection"]=4;
  62263. //>>excludeEnd("ctx");
  62264. self._assert_equals_($11,$14);
  62265. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62266. $ctx1.sendIdx["assert:equals:"]=4;
  62267. //>>excludeEnd("ctx");
  62268. $16=self._collection();
  62269. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62270. $ctx1.sendIdx["collection"]=5;
  62271. //>>excludeEnd("ctx");
  62272. $15=$recv($16)._select_((function(each){
  62273. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62274. return $core.withContext(function($ctx2) {
  62275. //>>excludeEnd("ctx");
  62276. $17=self._sampleNewValue();
  62277. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62278. $ctx2.sendIdx["sampleNewValue"]=3;
  62279. //>>excludeEnd("ctx");
  62280. return $recv(each).__eq($17);
  62281. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62282. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,5)});
  62283. //>>excludeEnd("ctx");
  62284. }));
  62285. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62286. $ctx1.sendIdx["select:"]=5;
  62287. //>>excludeEnd("ctx");
  62288. self._assert_equals_($15,$recv(self._collectionClass())._new());
  62289. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62290. $ctx1.sendIdx["assert:equals:"]=5;
  62291. //>>excludeEnd("ctx");
  62292. self._assert_equals_($recv(self._collectionWithNewValue())._select_((function(each){
  62293. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62294. return $core.withContext(function($ctx2) {
  62295. //>>excludeEnd("ctx");
  62296. return $recv(each).__tild_eq(self._sampleNewValue());
  62297. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62298. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,6)});
  62299. //>>excludeEnd("ctx");
  62300. })),self._collection());
  62301. return self;
  62302. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62303. }, function($ctx1) {$ctx1.fill(self,"testSelect",{},$globals.CollectionTest)});
  62304. //>>excludeEnd("ctx");
  62305. },
  62306. //>>excludeStart("ide", pragmas.excludeIdeData);
  62307. args: [],
  62308. 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",
  62309. referencedClasses: [],
  62310. //>>excludeEnd("ide");
  62311. messageSends: ["assert:equals:", "select:", "collection", "new", "collectionClass", "collectionWithNewValue", "=", "sampleNewValue", "sampleNewValueAsCollection", "~="]
  62312. }),
  62313. $globals.CollectionTest);
  62314. $core.addMethod(
  62315. $core.method({
  62316. selector: "testSize",
  62317. protocol: 'tests',
  62318. fn: function (){
  62319. var self=this;
  62320. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62321. return $core.withContext(function($ctx1) {
  62322. //>>excludeEnd("ctx");
  62323. var $1,$2;
  62324. $1=$recv($recv(self._collectionClass())._new())._size();
  62325. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62326. $ctx1.sendIdx["size"]=1;
  62327. //>>excludeEnd("ctx");
  62328. self._assert_equals_($1,(0));
  62329. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62330. $ctx1.sendIdx["assert:equals:"]=1;
  62331. //>>excludeEnd("ctx");
  62332. $2=$recv(self._sampleNewValueAsCollection())._size();
  62333. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62334. $ctx1.sendIdx["size"]=2;
  62335. //>>excludeEnd("ctx");
  62336. self._assert_equals_($2,(1));
  62337. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62338. $ctx1.sendIdx["assert:equals:"]=2;
  62339. //>>excludeEnd("ctx");
  62340. self._assert_equals_($recv(self._collection())._size(),self._collectionSize());
  62341. return self;
  62342. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62343. }, function($ctx1) {$ctx1.fill(self,"testSize",{},$globals.CollectionTest)});
  62344. //>>excludeEnd("ctx");
  62345. },
  62346. //>>excludeStart("ide", pragmas.excludeIdeData);
  62347. args: [],
  62348. 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",
  62349. referencedClasses: [],
  62350. //>>excludeEnd("ide");
  62351. messageSends: ["assert:equals:", "size", "new", "collectionClass", "sampleNewValueAsCollection", "collection", "collectionSize"]
  62352. }),
  62353. $globals.CollectionTest);
  62354. $core.addMethod(
  62355. $core.method({
  62356. selector: "collectionClass",
  62357. protocol: 'fixture',
  62358. fn: function (){
  62359. var self=this;
  62360. return nil;
  62361. },
  62362. //>>excludeStart("ide", pragmas.excludeIdeData);
  62363. args: [],
  62364. source: "collectionClass\x0a\x09\x22Answers class of collection type tested,\x0a\x09or nil if test is abstract\x22\x0a\x0a\x09^ nil",
  62365. referencedClasses: [],
  62366. //>>excludeEnd("ide");
  62367. messageSends: []
  62368. }),
  62369. $globals.CollectionTest.klass);
  62370. $core.addMethod(
  62371. $core.method({
  62372. selector: "isAbstract",
  62373. protocol: 'testing',
  62374. fn: function (){
  62375. var self=this;
  62376. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62377. return $core.withContext(function($ctx1) {
  62378. //>>excludeEnd("ctx");
  62379. var $1;
  62380. $1=$recv(self._collectionClass())._isNil();
  62381. return $1;
  62382. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62383. }, function($ctx1) {$ctx1.fill(self,"isAbstract",{},$globals.CollectionTest.klass)});
  62384. //>>excludeEnd("ctx");
  62385. },
  62386. //>>excludeStart("ide", pragmas.excludeIdeData);
  62387. args: [],
  62388. source: "isAbstract\x0a\x09^ self collectionClass isNil",
  62389. referencedClasses: [],
  62390. //>>excludeEnd("ide");
  62391. messageSends: ["isNil", "collectionClass"]
  62392. }),
  62393. $globals.CollectionTest.klass);
  62394. $core.addClass('IndexableCollectionTest', $globals.CollectionTest, [], 'Kernel-Tests');
  62395. $core.addMethod(
  62396. $core.method({
  62397. selector: "collectionWithNewValue",
  62398. protocol: 'fixture',
  62399. fn: function (){
  62400. var self=this;
  62401. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62402. return $core.withContext(function($ctx1) {
  62403. //>>excludeEnd("ctx");
  62404. self._subclassResponsibility();
  62405. return self;
  62406. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62407. }, function($ctx1) {$ctx1.fill(self,"collectionWithNewValue",{},$globals.IndexableCollectionTest)});
  62408. //>>excludeEnd("ctx");
  62409. },
  62410. //>>excludeStart("ide", pragmas.excludeIdeData);
  62411. args: [],
  62412. source: "collectionWithNewValue\x0a\x09\x22Answers a collection which shows how\x0a\x09self collection would look after adding\x0a\x09self sampleNewValue at self sampleNewIndex\x22\x0a\x09\x0a\x09self subclassResponsibility",
  62413. referencedClasses: [],
  62414. //>>excludeEnd("ide");
  62415. messageSends: ["subclassResponsibility"]
  62416. }),
  62417. $globals.IndexableCollectionTest);
  62418. $core.addMethod(
  62419. $core.method({
  62420. selector: "sampleNewIndex",
  62421. protocol: 'fixture',
  62422. fn: function (){
  62423. var self=this;
  62424. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62425. return $core.withContext(function($ctx1) {
  62426. //>>excludeEnd("ctx");
  62427. self._subclassResponsibility();
  62428. return self;
  62429. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62430. }, function($ctx1) {$ctx1.fill(self,"sampleNewIndex",{},$globals.IndexableCollectionTest)});
  62431. //>>excludeEnd("ctx");
  62432. },
  62433. //>>excludeStart("ide", pragmas.excludeIdeData);
  62434. args: [],
  62435. 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",
  62436. referencedClasses: [],
  62437. //>>excludeEnd("ide");
  62438. messageSends: ["subclassResponsibility"]
  62439. }),
  62440. $globals.IndexableCollectionTest);
  62441. $core.addMethod(
  62442. $core.method({
  62443. selector: "sampleNonIndexesDo:",
  62444. protocol: 'fixture',
  62445. fn: function (aBlock){
  62446. var self=this;
  62447. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62448. return $core.withContext(function($ctx1) {
  62449. //>>excludeEnd("ctx");
  62450. self._subclassResponsibility();
  62451. return self;
  62452. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62453. }, function($ctx1) {$ctx1.fill(self,"sampleNonIndexesDo:",{aBlock:aBlock},$globals.IndexableCollectionTest)});
  62454. //>>excludeEnd("ctx");
  62455. },
  62456. //>>excludeStart("ide", pragmas.excludeIdeData);
  62457. args: ["aBlock"],
  62458. source: "sampleNonIndexesDo: 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",
  62459. referencedClasses: [],
  62460. //>>excludeEnd("ide");
  62461. messageSends: ["subclassResponsibility"]
  62462. }),
  62463. $globals.IndexableCollectionTest);
  62464. $core.addMethod(
  62465. $core.method({
  62466. selector: "samplesDo:",
  62467. protocol: 'fixture',
  62468. fn: function (aBlock){
  62469. var self=this;
  62470. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62471. return $core.withContext(function($ctx1) {
  62472. //>>excludeEnd("ctx");
  62473. self._subclassResponsibility();
  62474. return self;
  62475. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62476. }, function($ctx1) {$ctx1.fill(self,"samplesDo:",{aBlock:aBlock},$globals.IndexableCollectionTest)});
  62477. //>>excludeEnd("ctx");
  62478. },
  62479. //>>excludeStart("ide", pragmas.excludeIdeData);
  62480. args: ["aBlock"],
  62481. 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",
  62482. referencedClasses: [],
  62483. //>>excludeEnd("ide");
  62484. messageSends: ["subclassResponsibility"]
  62485. }),
  62486. $globals.IndexableCollectionTest);
  62487. $core.addMethod(
  62488. $core.method({
  62489. selector: "testAt",
  62490. protocol: 'tests',
  62491. fn: function (){
  62492. var self=this;
  62493. function $Error(){return $globals.Error||(typeof Error=="undefined"?nil:Error)}
  62494. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62495. return $core.withContext(function($ctx1) {
  62496. //>>excludeEnd("ctx");
  62497. var $1;
  62498. self._nonIndexesDo_((function(each){
  62499. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62500. return $core.withContext(function($ctx2) {
  62501. //>>excludeEnd("ctx");
  62502. return self._should_raise_((function(){
  62503. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62504. return $core.withContext(function($ctx3) {
  62505. //>>excludeEnd("ctx");
  62506. $1=self._collection();
  62507. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62508. $ctx3.sendIdx["collection"]=1;
  62509. //>>excludeEnd("ctx");
  62510. return $recv($1)._at_(each);
  62511. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62512. $ctx3.sendIdx["at:"]=1;
  62513. //>>excludeEnd("ctx");
  62514. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62515. }, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)});
  62516. //>>excludeEnd("ctx");
  62517. }),$Error());
  62518. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62519. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  62520. //>>excludeEnd("ctx");
  62521. }));
  62522. self._samplesDo_((function(index,value){
  62523. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62524. return $core.withContext(function($ctx2) {
  62525. //>>excludeEnd("ctx");
  62526. return self._assert_equals_($recv(self._collection())._at_(index),value);
  62527. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62528. }, function($ctx2) {$ctx2.fillBlock({index:index,value:value},$ctx1,3)});
  62529. //>>excludeEnd("ctx");
  62530. }));
  62531. return self;
  62532. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62533. }, function($ctx1) {$ctx1.fill(self,"testAt",{},$globals.IndexableCollectionTest)});
  62534. //>>excludeEnd("ctx");
  62535. },
  62536. //>>excludeStart("ide", pragmas.excludeIdeData);
  62537. args: [],
  62538. 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 ]",
  62539. referencedClasses: ["Error"],
  62540. //>>excludeEnd("ide");
  62541. messageSends: ["nonIndexesDo:", "should:raise:", "at:", "collection", "samplesDo:", "assert:equals:"]
  62542. }),
  62543. $globals.IndexableCollectionTest);
  62544. $core.addMethod(
  62545. $core.method({
  62546. selector: "testAtIfAbsent",
  62547. protocol: 'tests',
  62548. fn: function (){
  62549. var self=this;
  62550. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62551. return $core.withContext(function($ctx1) {
  62552. //>>excludeEnd("ctx");
  62553. var $2,$1,$3;
  62554. self._nonIndexesDo_((function(each){
  62555. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62556. return $core.withContext(function($ctx2) {
  62557. //>>excludeEnd("ctx");
  62558. $2=self._collection();
  62559. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62560. $ctx2.sendIdx["collection"]=1;
  62561. //>>excludeEnd("ctx");
  62562. $1=$recv($2)._at_ifAbsent_(each,(function(){
  62563. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62564. return $core.withContext(function($ctx3) {
  62565. //>>excludeEnd("ctx");
  62566. return self._sampleNewValue();
  62567. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62568. $ctx3.sendIdx["sampleNewValue"]=1;
  62569. //>>excludeEnd("ctx");
  62570. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62571. }, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)});
  62572. //>>excludeEnd("ctx");
  62573. }));
  62574. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62575. $ctx2.sendIdx["at:ifAbsent:"]=1;
  62576. //>>excludeEnd("ctx");
  62577. $3=self._sampleNewValue();
  62578. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62579. $ctx2.sendIdx["sampleNewValue"]=2;
  62580. //>>excludeEnd("ctx");
  62581. return self._assert_equals_($1,$3);
  62582. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62583. $ctx2.sendIdx["assert:equals:"]=1;
  62584. //>>excludeEnd("ctx");
  62585. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62586. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  62587. //>>excludeEnd("ctx");
  62588. }));
  62589. self._samplesDo_((function(index,value){
  62590. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62591. return $core.withContext(function($ctx2) {
  62592. //>>excludeEnd("ctx");
  62593. return self._assert_equals_($recv(self._collection())._at_ifAbsent_(index,(function(){
  62594. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62595. return $core.withContext(function($ctx3) {
  62596. //>>excludeEnd("ctx");
  62597. return self._sampleNewValue();
  62598. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62599. }, function($ctx3) {$ctx3.fillBlock({},$ctx2,4)});
  62600. //>>excludeEnd("ctx");
  62601. })),value);
  62602. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62603. }, function($ctx2) {$ctx2.fillBlock({index:index,value:value},$ctx1,3)});
  62604. //>>excludeEnd("ctx");
  62605. }));
  62606. return self;
  62607. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62608. }, function($ctx1) {$ctx1.fill(self,"testAtIfAbsent",{},$globals.IndexableCollectionTest)});
  62609. //>>excludeEnd("ctx");
  62610. },
  62611. //>>excludeStart("ide", pragmas.excludeIdeData);
  62612. args: [],
  62613. 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 ].",
  62614. referencedClasses: [],
  62615. //>>excludeEnd("ide");
  62616. messageSends: ["nonIndexesDo:", "assert:equals:", "at:ifAbsent:", "collection", "sampleNewValue", "samplesDo:"]
  62617. }),
  62618. $globals.IndexableCollectionTest);
  62619. $core.addMethod(
  62620. $core.method({
  62621. selector: "testAtIfAbsentPut",
  62622. protocol: 'tests',
  62623. fn: function (){
  62624. var self=this;
  62625. var newCollection;
  62626. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62627. return $core.withContext(function($ctx1) {
  62628. //>>excludeEnd("ctx");
  62629. var $1;
  62630. newCollection=self._collection();
  62631. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62632. $ctx1.sendIdx["collection"]=1;
  62633. //>>excludeEnd("ctx");
  62634. self._samplesDo_((function(index,value){
  62635. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62636. return $core.withContext(function($ctx2) {
  62637. //>>excludeEnd("ctx");
  62638. $1=$recv(newCollection)._at_ifAbsentPut_(index,(function(){
  62639. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62640. return $core.withContext(function($ctx3) {
  62641. //>>excludeEnd("ctx");
  62642. return self._sampleNewValue();
  62643. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62644. $ctx3.sendIdx["sampleNewValue"]=1;
  62645. //>>excludeEnd("ctx");
  62646. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62647. }, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)});
  62648. //>>excludeEnd("ctx");
  62649. }));
  62650. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62651. $ctx2.sendIdx["at:ifAbsentPut:"]=1;
  62652. //>>excludeEnd("ctx");
  62653. return self._assert_equals_($1,value);
  62654. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62655. $ctx2.sendIdx["assert:equals:"]=1;
  62656. //>>excludeEnd("ctx");
  62657. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62658. }, function($ctx2) {$ctx2.fillBlock({index:index,value:value},$ctx1,1)});
  62659. //>>excludeEnd("ctx");
  62660. }));
  62661. self._assert_equals_(newCollection,self._collection());
  62662. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62663. $ctx1.sendIdx["assert:equals:"]=2;
  62664. //>>excludeEnd("ctx");
  62665. self._assert_equals_($recv(newCollection)._at_ifAbsentPut_(self._sampleNewIndex(),(function(){
  62666. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62667. return $core.withContext(function($ctx2) {
  62668. //>>excludeEnd("ctx");
  62669. return self._sampleNewValue();
  62670. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62671. $ctx2.sendIdx["sampleNewValue"]=2;
  62672. //>>excludeEnd("ctx");
  62673. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62674. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,3)});
  62675. //>>excludeEnd("ctx");
  62676. })),self._sampleNewValue());
  62677. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62678. $ctx1.sendIdx["assert:equals:"]=3;
  62679. //>>excludeEnd("ctx");
  62680. self._assert_equals_(newCollection,self._collectionWithNewValue());
  62681. return self;
  62682. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62683. }, function($ctx1) {$ctx1.fill(self,"testAtIfAbsentPut",{newCollection:newCollection},$globals.IndexableCollectionTest)});
  62684. //>>excludeEnd("ctx");
  62685. },
  62686. //>>excludeStart("ide", pragmas.excludeIdeData);
  62687. args: [],
  62688. 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",
  62689. referencedClasses: [],
  62690. //>>excludeEnd("ide");
  62691. messageSends: ["collection", "samplesDo:", "assert:equals:", "at:ifAbsentPut:", "sampleNewValue", "sampleNewIndex", "collectionWithNewValue"]
  62692. }),
  62693. $globals.IndexableCollectionTest);
  62694. $core.addMethod(
  62695. $core.method({
  62696. selector: "testAtIfPresent",
  62697. protocol: 'tests',
  62698. fn: function (){
  62699. var self=this;
  62700. var visited,sentinel;
  62701. function $Object(){return $globals.Object||(typeof Object=="undefined"?nil:Object)}
  62702. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62703. return $core.withContext(function($ctx1) {
  62704. //>>excludeEnd("ctx");
  62705. var $2,$1,$4,$3;
  62706. sentinel=$recv($Object())._new();
  62707. self._nonIndexesDo_((function(each){
  62708. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62709. return $core.withContext(function($ctx2) {
  62710. //>>excludeEnd("ctx");
  62711. visited=nil;
  62712. visited;
  62713. $2=self._collection();
  62714. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62715. $ctx2.sendIdx["collection"]=1;
  62716. //>>excludeEnd("ctx");
  62717. $1=$recv($2)._at_ifPresent_(each,(function(value1){
  62718. visited=value1;
  62719. visited;
  62720. return sentinel;
  62721. }));
  62722. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62723. $ctx2.sendIdx["at:ifPresent:"]=1;
  62724. //>>excludeEnd("ctx");
  62725. self._assert_equals_($1,nil);
  62726. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62727. $ctx2.sendIdx["assert:equals:"]=1;
  62728. //>>excludeEnd("ctx");
  62729. return self._assert_($recv(visited)._isNil());
  62730. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62731. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  62732. //>>excludeEnd("ctx");
  62733. }));
  62734. self._samplesDo_((function(index,value){
  62735. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62736. return $core.withContext(function($ctx2) {
  62737. //>>excludeEnd("ctx");
  62738. visited=nil;
  62739. visited;
  62740. $4=self._collection();
  62741. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62742. $ctx2.sendIdx["collection"]=2;
  62743. //>>excludeEnd("ctx");
  62744. $3=$recv($4)._at_ifPresent_(index,(function(value2){
  62745. visited=value2;
  62746. visited;
  62747. return sentinel;
  62748. }));
  62749. self._assert_equals_($3,sentinel);
  62750. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62751. $ctx2.sendIdx["assert:equals:"]=2;
  62752. //>>excludeEnd("ctx");
  62753. return self._assert_equals_(visited,$recv(self._collection())._at_(index));
  62754. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62755. }, function($ctx2) {$ctx2.fillBlock({index:index,value:value},$ctx1,3)});
  62756. //>>excludeEnd("ctx");
  62757. }));
  62758. return self;
  62759. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62760. }, function($ctx1) {$ctx1.fill(self,"testAtIfPresent",{visited:visited,sentinel:sentinel},$globals.IndexableCollectionTest)});
  62761. //>>excludeEnd("ctx");
  62762. },
  62763. //>>excludeStart("ide", pragmas.excludeIdeData);
  62764. args: [],
  62765. 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) ]",
  62766. referencedClasses: ["Object"],
  62767. //>>excludeEnd("ide");
  62768. messageSends: ["new", "nonIndexesDo:", "assert:equals:", "at:ifPresent:", "collection", "assert:", "isNil", "samplesDo:", "at:"]
  62769. }),
  62770. $globals.IndexableCollectionTest);
  62771. $core.addMethod(
  62772. $core.method({
  62773. selector: "testAtIfPresentIfAbsent",
  62774. protocol: 'tests',
  62775. fn: function (){
  62776. var self=this;
  62777. var visited,sentinel;
  62778. function $Object(){return $globals.Object||(typeof Object=="undefined"?nil:Object)}
  62779. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62780. return $core.withContext(function($ctx1) {
  62781. //>>excludeEnd("ctx");
  62782. var $2,$1,$3,$5,$4;
  62783. sentinel=$recv($Object())._new();
  62784. self._nonIndexesDo_((function(each){
  62785. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62786. return $core.withContext(function($ctx2) {
  62787. //>>excludeEnd("ctx");
  62788. visited=nil;
  62789. visited;
  62790. $2=self._collection();
  62791. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62792. $ctx2.sendIdx["collection"]=1;
  62793. //>>excludeEnd("ctx");
  62794. $1=$recv($2)._at_ifPresent_ifAbsent_(each,(function(value1){
  62795. visited=value1;
  62796. visited;
  62797. return sentinel;
  62798. }),(function(){
  62799. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62800. return $core.withContext(function($ctx3) {
  62801. //>>excludeEnd("ctx");
  62802. return self._sampleNewValue();
  62803. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62804. $ctx3.sendIdx["sampleNewValue"]=1;
  62805. //>>excludeEnd("ctx");
  62806. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62807. }, function($ctx3) {$ctx3.fillBlock({},$ctx2,3)});
  62808. //>>excludeEnd("ctx");
  62809. }));
  62810. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62811. $ctx2.sendIdx["at:ifPresent:ifAbsent:"]=1;
  62812. //>>excludeEnd("ctx");
  62813. $3=self._sampleNewValue();
  62814. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62815. $ctx2.sendIdx["sampleNewValue"]=2;
  62816. //>>excludeEnd("ctx");
  62817. self._assert_equals_($1,$3);
  62818. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62819. $ctx2.sendIdx["assert:equals:"]=1;
  62820. //>>excludeEnd("ctx");
  62821. return self._assert_($recv(visited)._isNil());
  62822. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62823. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  62824. //>>excludeEnd("ctx");
  62825. }));
  62826. self._samplesDo_((function(index,value){
  62827. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62828. return $core.withContext(function($ctx2) {
  62829. //>>excludeEnd("ctx");
  62830. visited=nil;
  62831. visited;
  62832. $5=self._collection();
  62833. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62834. $ctx2.sendIdx["collection"]=2;
  62835. //>>excludeEnd("ctx");
  62836. $4=$recv($5)._at_ifPresent_ifAbsent_(index,(function(value2){
  62837. visited=value2;
  62838. visited;
  62839. return sentinel;
  62840. }),(function(){
  62841. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62842. return $core.withContext(function($ctx3) {
  62843. //>>excludeEnd("ctx");
  62844. return self._sampleNewValue();
  62845. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62846. }, function($ctx3) {$ctx3.fillBlock({},$ctx2,6)});
  62847. //>>excludeEnd("ctx");
  62848. }));
  62849. self._assert_equals_($4,sentinel);
  62850. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62851. $ctx2.sendIdx["assert:equals:"]=2;
  62852. //>>excludeEnd("ctx");
  62853. return self._assert_equals_(visited,$recv(self._collection())._at_(index));
  62854. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62855. }, function($ctx2) {$ctx2.fillBlock({index:index,value:value},$ctx1,4)});
  62856. //>>excludeEnd("ctx");
  62857. }));
  62858. return self;
  62859. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62860. }, function($ctx1) {$ctx1.fill(self,"testAtIfPresentIfAbsent",{visited:visited,sentinel:sentinel},$globals.IndexableCollectionTest)});
  62861. //>>excludeEnd("ctx");
  62862. },
  62863. //>>excludeStart("ide", pragmas.excludeIdeData);
  62864. args: [],
  62865. 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) ]",
  62866. referencedClasses: ["Object"],
  62867. //>>excludeEnd("ide");
  62868. messageSends: ["new", "nonIndexesDo:", "assert:equals:", "at:ifPresent:ifAbsent:", "collection", "sampleNewValue", "assert:", "isNil", "samplesDo:", "at:"]
  62869. }),
  62870. $globals.IndexableCollectionTest);
  62871. $core.addMethod(
  62872. $core.method({
  62873. selector: "testAtPut",
  62874. protocol: 'tests',
  62875. fn: function (){
  62876. var self=this;
  62877. var newCollection;
  62878. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62879. return $core.withContext(function($ctx1) {
  62880. //>>excludeEnd("ctx");
  62881. newCollection=self._collection();
  62882. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62883. $ctx1.sendIdx["collection"]=1;
  62884. //>>excludeEnd("ctx");
  62885. self._samplesDo_((function(index,value){
  62886. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62887. return $core.withContext(function($ctx2) {
  62888. //>>excludeEnd("ctx");
  62889. return $recv(newCollection)._at_put_(index,value);
  62890. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62891. $ctx2.sendIdx["at:put:"]=1;
  62892. //>>excludeEnd("ctx");
  62893. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62894. }, function($ctx2) {$ctx2.fillBlock({index:index,value:value},$ctx1,1)});
  62895. //>>excludeEnd("ctx");
  62896. }));
  62897. self._assert_equals_(newCollection,self._collection());
  62898. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62899. $ctx1.sendIdx["assert:equals:"]=1;
  62900. //>>excludeEnd("ctx");
  62901. $recv(newCollection)._at_put_(self._sampleNewIndex(),self._sampleNewValue());
  62902. self._assert_equals_(newCollection,self._collectionWithNewValue());
  62903. return self;
  62904. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62905. }, function($ctx1) {$ctx1.fill(self,"testAtPut",{newCollection:newCollection},$globals.IndexableCollectionTest)});
  62906. //>>excludeEnd("ctx");
  62907. },
  62908. //>>excludeStart("ide", pragmas.excludeIdeData);
  62909. args: [],
  62910. 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",
  62911. referencedClasses: [],
  62912. //>>excludeEnd("ide");
  62913. messageSends: ["collection", "samplesDo:", "at:put:", "assert:equals:", "sampleNewIndex", "sampleNewValue", "collectionWithNewValue"]
  62914. }),
  62915. $globals.IndexableCollectionTest);
  62916. $core.addMethod(
  62917. $core.method({
  62918. selector: "testEquality",
  62919. protocol: 'tests',
  62920. fn: function (){
  62921. var self=this;
  62922. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62923. return $core.withContext(function($ctx1) {
  62924. //>>excludeEnd("ctx");
  62925. var $2,$1,$4,$3,$5,$6,$7,$10,$9,$11,$8;
  62926. $2=self._collectionClass();
  62927. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62928. $ctx1.sendIdx["collectionClass"]=1;
  62929. //>>excludeEnd("ctx");
  62930. $1=$recv($2)._new();
  62931. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62932. $ctx1.sendIdx["new"]=1;
  62933. //>>excludeEnd("ctx");
  62934. $4=self._collectionClass();
  62935. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62936. $ctx1.sendIdx["collectionClass"]=2;
  62937. //>>excludeEnd("ctx");
  62938. $3=$recv($4)._new();
  62939. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62940. $ctx1.sendIdx["new"]=2;
  62941. //>>excludeEnd("ctx");
  62942. self._assert_equals_($1,$3);
  62943. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62944. $ctx1.sendIdx["assert:equals:"]=1;
  62945. //>>excludeEnd("ctx");
  62946. $5=self._collection();
  62947. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62948. $ctx1.sendIdx["collection"]=1;
  62949. //>>excludeEnd("ctx");
  62950. $6=self._collection();
  62951. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62952. $ctx1.sendIdx["collection"]=2;
  62953. //>>excludeEnd("ctx");
  62954. self._assert_equals_($5,$6);
  62955. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62956. $ctx1.sendIdx["assert:equals:"]=2;
  62957. //>>excludeEnd("ctx");
  62958. $7=self._collectionWithNewValue();
  62959. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62960. $ctx1.sendIdx["collectionWithNewValue"]=1;
  62961. //>>excludeEnd("ctx");
  62962. self._assert_equals_($7,self._collectionWithNewValue());
  62963. $10=self._collectionClass();
  62964. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62965. $ctx1.sendIdx["collectionClass"]=3;
  62966. //>>excludeEnd("ctx");
  62967. $9=$recv($10)._new();
  62968. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62969. $ctx1.sendIdx["new"]=3;
  62970. //>>excludeEnd("ctx");
  62971. $11=self._collection();
  62972. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62973. $ctx1.sendIdx["collection"]=3;
  62974. //>>excludeEnd("ctx");
  62975. $8=$recv($9).__eq($11);
  62976. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62977. $ctx1.sendIdx["="]=1;
  62978. //>>excludeEnd("ctx");
  62979. self._deny_($8);
  62980. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62981. $ctx1.sendIdx["deny:"]=1;
  62982. //>>excludeEnd("ctx");
  62983. self._deny_($recv(self._collection()).__eq($recv(self._collectionClass())._new()));
  62984. return self;
  62985. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  62986. }, function($ctx1) {$ctx1.fill(self,"testEquality",{},$globals.IndexableCollectionTest)});
  62987. //>>excludeEnd("ctx");
  62988. },
  62989. //>>excludeStart("ide", pragmas.excludeIdeData);
  62990. args: [],
  62991. 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",
  62992. referencedClasses: [],
  62993. //>>excludeEnd("ide");
  62994. messageSends: ["assert:equals:", "new", "collectionClass", "collection", "collectionWithNewValue", "deny:", "="]
  62995. }),
  62996. $globals.IndexableCollectionTest);
  62997. $core.addMethod(
  62998. $core.method({
  62999. selector: "testIndexOf",
  63000. protocol: 'tests',
  63001. fn: function (){
  63002. var self=this;
  63003. function $Error(){return $globals.Error||(typeof Error=="undefined"?nil:Error)}
  63004. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63005. return $core.withContext(function($ctx1) {
  63006. //>>excludeEnd("ctx");
  63007. var $1;
  63008. self._should_raise_((function(){
  63009. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63010. return $core.withContext(function($ctx2) {
  63011. //>>excludeEnd("ctx");
  63012. $1=self._collection();
  63013. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63014. $ctx2.sendIdx["collection"]=1;
  63015. //>>excludeEnd("ctx");
  63016. return $recv($1)._indexOf_(self._sampleNewValue());
  63017. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63018. $ctx2.sendIdx["indexOf:"]=1;
  63019. //>>excludeEnd("ctx");
  63020. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63021. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  63022. //>>excludeEnd("ctx");
  63023. }),$Error());
  63024. self._samplesDo_((function(index,value){
  63025. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63026. return $core.withContext(function($ctx2) {
  63027. //>>excludeEnd("ctx");
  63028. return self._assert_equals_($recv(self._collection())._indexOf_(value),index);
  63029. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63030. }, function($ctx2) {$ctx2.fillBlock({index:index,value:value},$ctx1,2)});
  63031. //>>excludeEnd("ctx");
  63032. }));
  63033. return self;
  63034. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63035. }, function($ctx1) {$ctx1.fill(self,"testIndexOf",{},$globals.IndexableCollectionTest)});
  63036. //>>excludeEnd("ctx");
  63037. },
  63038. //>>excludeStart("ide", pragmas.excludeIdeData);
  63039. args: [],
  63040. 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 ]",
  63041. referencedClasses: ["Error"],
  63042. //>>excludeEnd("ide");
  63043. messageSends: ["should:raise:", "indexOf:", "collection", "sampleNewValue", "samplesDo:", "assert:equals:"]
  63044. }),
  63045. $globals.IndexableCollectionTest);
  63046. $core.addMethod(
  63047. $core.method({
  63048. selector: "testIndexOfWithNull",
  63049. protocol: 'tests',
  63050. fn: function (){
  63051. var self=this;
  63052. var jsNull;
  63053. function $JSON(){return $globals.JSON||(typeof JSON=="undefined"?nil:JSON)}
  63054. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63055. return $core.withContext(function($ctx1) {
  63056. //>>excludeEnd("ctx");
  63057. var $1,$2;
  63058. jsNull=$recv($JSON())._parse_("null");
  63059. self._samplesDo_((function(index,value){
  63060. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63061. return $core.withContext(function($ctx2) {
  63062. //>>excludeEnd("ctx");
  63063. $1=self._collection();
  63064. $recv($1)._at_put_(index,jsNull);
  63065. $2=$recv($1)._indexOf_(jsNull);
  63066. return self._assert_equals_($2,index);
  63067. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63068. }, function($ctx2) {$ctx2.fillBlock({index:index,value:value},$ctx1,1)});
  63069. //>>excludeEnd("ctx");
  63070. }));
  63071. return self;
  63072. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63073. }, function($ctx1) {$ctx1.fill(self,"testIndexOfWithNull",{jsNull:jsNull},$globals.IndexableCollectionTest)});
  63074. //>>excludeEnd("ctx");
  63075. },
  63076. //>>excludeStart("ide", pragmas.excludeIdeData);
  63077. args: [],
  63078. 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 ]",
  63079. referencedClasses: ["JSON"],
  63080. //>>excludeEnd("ide");
  63081. messageSends: ["parse:", "samplesDo:", "assert:equals:", "at:put:", "collection", "indexOf:"]
  63082. }),
  63083. $globals.IndexableCollectionTest);
  63084. $core.addMethod(
  63085. $core.method({
  63086. selector: "testWithIndexDo",
  63087. protocol: 'tests',
  63088. fn: function (){
  63089. var self=this;
  63090. var collection;
  63091. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63092. return $core.withContext(function($ctx1) {
  63093. //>>excludeEnd("ctx");
  63094. collection=self._collection();
  63095. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63096. $ctx1.sendIdx["collection"]=1;
  63097. //>>excludeEnd("ctx");
  63098. $recv(self._collection())._withIndexDo_((function(each,index){
  63099. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63100. return $core.withContext(function($ctx2) {
  63101. //>>excludeEnd("ctx");
  63102. return self._assert_equals_($recv(collection)._at_(index),each);
  63103. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63104. }, function($ctx2) {$ctx2.fillBlock({each:each,index:index},$ctx1,1)});
  63105. //>>excludeEnd("ctx");
  63106. }));
  63107. return self;
  63108. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63109. }, function($ctx1) {$ctx1.fill(self,"testWithIndexDo",{collection:collection},$globals.IndexableCollectionTest)});
  63110. //>>excludeEnd("ctx");
  63111. },
  63112. //>>excludeStart("ide", pragmas.excludeIdeData);
  63113. args: [],
  63114. 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 ]",
  63115. referencedClasses: [],
  63116. //>>excludeEnd("ide");
  63117. messageSends: ["collection", "withIndexDo:", "assert:equals:", "at:"]
  63118. }),
  63119. $globals.IndexableCollectionTest);
  63120. $core.addClass('AssociativeCollectionTest', $globals.IndexableCollectionTest, [], 'Kernel-Tests');
  63121. $core.addMethod(
  63122. $core.method({
  63123. selector: "collectionKeys",
  63124. protocol: 'fixture',
  63125. fn: function (){
  63126. var self=this;
  63127. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63128. return $core.withContext(function($ctx1) {
  63129. //>>excludeEnd("ctx");
  63130. self._subclassResponsibility();
  63131. return self;
  63132. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63133. }, function($ctx1) {$ctx1.fill(self,"collectionKeys",{},$globals.AssociativeCollectionTest)});
  63134. //>>excludeEnd("ctx");
  63135. },
  63136. //>>excludeStart("ide", pragmas.excludeIdeData);
  63137. args: [],
  63138. source: "collectionKeys\x0a\x09self subclassResponsibility",
  63139. referencedClasses: [],
  63140. //>>excludeEnd("ide");
  63141. messageSends: ["subclassResponsibility"]
  63142. }),
  63143. $globals.AssociativeCollectionTest);
  63144. $core.addMethod(
  63145. $core.method({
  63146. selector: "collectionValues",
  63147. protocol: 'fixture',
  63148. fn: function (){
  63149. var self=this;
  63150. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63151. return $core.withContext(function($ctx1) {
  63152. //>>excludeEnd("ctx");
  63153. self._subclassResponsibility();
  63154. return self;
  63155. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63156. }, function($ctx1) {$ctx1.fill(self,"collectionValues",{},$globals.AssociativeCollectionTest)});
  63157. //>>excludeEnd("ctx");
  63158. },
  63159. //>>excludeStart("ide", pragmas.excludeIdeData);
  63160. args: [],
  63161. source: "collectionValues\x0a\x09self subclassResponsibility",
  63162. referencedClasses: [],
  63163. //>>excludeEnd("ide");
  63164. messageSends: ["subclassResponsibility"]
  63165. }),
  63166. $globals.AssociativeCollectionTest);
  63167. $core.addMethod(
  63168. $core.method({
  63169. selector: "nonIndexesDo:",
  63170. protocol: 'fixture',
  63171. fn: function (aBlock){
  63172. var self=this;
  63173. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63174. return $core.withContext(function($ctx1) {
  63175. //>>excludeEnd("ctx");
  63176. $recv(aBlock)._value_((5));
  63177. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63178. $ctx1.sendIdx["value:"]=1;
  63179. //>>excludeEnd("ctx");
  63180. $recv(aBlock)._value_("z");
  63181. return self;
  63182. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63183. }, function($ctx1) {$ctx1.fill(self,"nonIndexesDo:",{aBlock:aBlock},$globals.AssociativeCollectionTest)});
  63184. //>>excludeEnd("ctx");
  63185. },
  63186. //>>excludeStart("ide", pragmas.excludeIdeData);
  63187. args: ["aBlock"],
  63188. source: "nonIndexesDo: aBlock\x0a\x09aBlock value: 5.\x0a\x09aBlock value: 'z'",
  63189. referencedClasses: [],
  63190. //>>excludeEnd("ide");
  63191. messageSends: ["value:"]
  63192. }),
  63193. $globals.AssociativeCollectionTest);
  63194. $core.addMethod(
  63195. $core.method({
  63196. selector: "sampleNewIndex",
  63197. protocol: 'fixture',
  63198. fn: function (){
  63199. var self=this;
  63200. return "new";
  63201. },
  63202. //>>excludeStart("ide", pragmas.excludeIdeData);
  63203. args: [],
  63204. source: "sampleNewIndex\x0a\x09^ 'new'",
  63205. referencedClasses: [],
  63206. //>>excludeEnd("ide");
  63207. messageSends: []
  63208. }),
  63209. $globals.AssociativeCollectionTest);
  63210. $core.addMethod(
  63211. $core.method({
  63212. selector: "samplesDo:",
  63213. protocol: 'fixture',
  63214. fn: function (aBlock){
  63215. var self=this;
  63216. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63217. return $core.withContext(function($ctx1) {
  63218. //>>excludeEnd("ctx");
  63219. $recv(aBlock)._value_value_("a",(2));
  63220. return self;
  63221. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63222. }, function($ctx1) {$ctx1.fill(self,"samplesDo:",{aBlock:aBlock},$globals.AssociativeCollectionTest)});
  63223. //>>excludeEnd("ctx");
  63224. },
  63225. //>>excludeStart("ide", pragmas.excludeIdeData);
  63226. args: ["aBlock"],
  63227. source: "samplesDo: aBlock\x0a\x09aBlock value: 'a' value: 2",
  63228. referencedClasses: [],
  63229. //>>excludeEnd("ide");
  63230. messageSends: ["value:value:"]
  63231. }),
  63232. $globals.AssociativeCollectionTest);
  63233. $core.addMethod(
  63234. $core.method({
  63235. selector: "testAddAll",
  63236. protocol: 'tests',
  63237. fn: function (){
  63238. var self=this;
  63239. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63240. return $core.withContext(function($ctx1) {
  63241. //>>excludeEnd("ctx");
  63242. var $2,$3,$4,$5,$1,$6,$8,$9,$10,$11,$7,$12,$14,$15,$13;
  63243. (
  63244. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63245. $ctx1.supercall = true,
  63246. //>>excludeEnd("ctx");
  63247. $globals.AssociativeCollectionTest.superclass.fn.prototype._testAddAll.apply($recv(self), []));
  63248. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63249. $ctx1.supercall = false;
  63250. //>>excludeEnd("ctx");;
  63251. $2=self._collection();
  63252. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63253. $ctx1.sendIdx["collection"]=1;
  63254. //>>excludeEnd("ctx");
  63255. $3=$2;
  63256. $4=self._collection();
  63257. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63258. $ctx1.sendIdx["collection"]=2;
  63259. //>>excludeEnd("ctx");
  63260. $recv($3)._addAll_($4);
  63261. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63262. $ctx1.sendIdx["addAll:"]=1;
  63263. //>>excludeEnd("ctx");
  63264. $5=$recv($2)._yourself();
  63265. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63266. $ctx1.sendIdx["yourself"]=1;
  63267. //>>excludeEnd("ctx");
  63268. $1=$5;
  63269. $6=self._collection();
  63270. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63271. $ctx1.sendIdx["collection"]=3;
  63272. //>>excludeEnd("ctx");
  63273. self._assert_equals_($1,$6);
  63274. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63275. $ctx1.sendIdx["assert:equals:"]=1;
  63276. //>>excludeEnd("ctx");
  63277. $8=self._collection();
  63278. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63279. $ctx1.sendIdx["collection"]=4;
  63280. //>>excludeEnd("ctx");
  63281. $9=$8;
  63282. $10=self._collectionWithNewValue();
  63283. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63284. $ctx1.sendIdx["collectionWithNewValue"]=1;
  63285. //>>excludeEnd("ctx");
  63286. $recv($9)._addAll_($10);
  63287. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63288. $ctx1.sendIdx["addAll:"]=2;
  63289. //>>excludeEnd("ctx");
  63290. $11=$recv($8)._yourself();
  63291. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63292. $ctx1.sendIdx["yourself"]=2;
  63293. //>>excludeEnd("ctx");
  63294. $7=$11;
  63295. $12=self._collectionWithNewValue();
  63296. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63297. $ctx1.sendIdx["collectionWithNewValue"]=2;
  63298. //>>excludeEnd("ctx");
  63299. self._assert_equals_($7,$12);
  63300. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63301. $ctx1.sendIdx["assert:equals:"]=2;
  63302. //>>excludeEnd("ctx");
  63303. $14=self._collectionWithNewValue();
  63304. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63305. $ctx1.sendIdx["collectionWithNewValue"]=3;
  63306. //>>excludeEnd("ctx");
  63307. $recv($14)._addAll_(self._collection());
  63308. $15=$recv($14)._yourself();
  63309. $13=$15;
  63310. self._assert_equals_($13,self._collectionWithNewValue());
  63311. return self;
  63312. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63313. }, function($ctx1) {$ctx1.fill(self,"testAddAll",{},$globals.AssociativeCollectionTest)});
  63314. //>>excludeEnd("ctx");
  63315. },
  63316. //>>excludeStart("ide", pragmas.excludeIdeData);
  63317. args: [],
  63318. 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",
  63319. referencedClasses: [],
  63320. //>>excludeEnd("ide");
  63321. messageSends: ["testAddAll", "assert:equals:", "addAll:", "collection", "yourself", "collectionWithNewValue"]
  63322. }),
  63323. $globals.AssociativeCollectionTest);
  63324. $core.addMethod(
  63325. $core.method({
  63326. selector: "testAsDictionary",
  63327. protocol: 'tests',
  63328. fn: function (){
  63329. var self=this;
  63330. function $Dictionary(){return $globals.Dictionary||(typeof Dictionary=="undefined"?nil:Dictionary)}
  63331. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63332. return $core.withContext(function($ctx1) {
  63333. //>>excludeEnd("ctx");
  63334. self._assert_($recv($recv($recv(self._collectionClass())._new())._asDictionary())._isMemberOf_($Dictionary()));
  63335. return self;
  63336. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63337. }, function($ctx1) {$ctx1.fill(self,"testAsDictionary",{},$globals.AssociativeCollectionTest)});
  63338. //>>excludeEnd("ctx");
  63339. },
  63340. //>>excludeStart("ide", pragmas.excludeIdeData);
  63341. args: [],
  63342. source: "testAsDictionary\x0aself assert: ( self collectionClass new asDictionary isMemberOf: Dictionary ).",
  63343. referencedClasses: ["Dictionary"],
  63344. //>>excludeEnd("ide");
  63345. messageSends: ["assert:", "isMemberOf:", "asDictionary", "new", "collectionClass"]
  63346. }),
  63347. $globals.AssociativeCollectionTest);
  63348. $core.addMethod(
  63349. $core.method({
  63350. selector: "testAsHashedCollection",
  63351. protocol: 'tests',
  63352. fn: function (){
  63353. var self=this;
  63354. function $HashedCollection(){return $globals.HashedCollection||(typeof HashedCollection=="undefined"?nil:HashedCollection)}
  63355. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63356. return $core.withContext(function($ctx1) {
  63357. //>>excludeEnd("ctx");
  63358. self._assert_($recv($recv($recv(self._collectionClass())._new())._asHashedCollection())._isMemberOf_($HashedCollection()));
  63359. return self;
  63360. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63361. }, function($ctx1) {$ctx1.fill(self,"testAsHashedCollection",{},$globals.AssociativeCollectionTest)});
  63362. //>>excludeEnd("ctx");
  63363. },
  63364. //>>excludeStart("ide", pragmas.excludeIdeData);
  63365. args: [],
  63366. source: "testAsHashedCollection\x0aself assert: ( self collectionClass new asHashedCollection isMemberOf: HashedCollection ).",
  63367. referencedClasses: ["HashedCollection"],
  63368. //>>excludeEnd("ide");
  63369. messageSends: ["assert:", "isMemberOf:", "asHashedCollection", "new", "collectionClass"]
  63370. }),
  63371. $globals.AssociativeCollectionTest);
  63372. $core.addMethod(
  63373. $core.method({
  63374. selector: "testComma",
  63375. protocol: 'tests',
  63376. fn: function (){
  63377. var self=this;
  63378. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63379. return $core.withContext(function($ctx1) {
  63380. //>>excludeEnd("ctx");
  63381. var $2,$3,$1,$4,$6,$7,$5,$8,$10,$9;
  63382. (
  63383. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63384. $ctx1.supercall = true,
  63385. //>>excludeEnd("ctx");
  63386. $globals.AssociativeCollectionTest.superclass.fn.prototype._testComma.apply($recv(self), []));
  63387. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63388. $ctx1.supercall = false;
  63389. //>>excludeEnd("ctx");;
  63390. $2=self._collection();
  63391. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63392. $ctx1.sendIdx["collection"]=1;
  63393. //>>excludeEnd("ctx");
  63394. $3=self._collection();
  63395. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63396. $ctx1.sendIdx["collection"]=2;
  63397. //>>excludeEnd("ctx");
  63398. $1=$recv($2).__comma($3);
  63399. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63400. $ctx1.sendIdx[","]=1;
  63401. //>>excludeEnd("ctx");
  63402. $4=self._collection();
  63403. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63404. $ctx1.sendIdx["collection"]=3;
  63405. //>>excludeEnd("ctx");
  63406. self._assert_equals_($1,$4);
  63407. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63408. $ctx1.sendIdx["assert:equals:"]=1;
  63409. //>>excludeEnd("ctx");
  63410. $6=self._collection();
  63411. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63412. $ctx1.sendIdx["collection"]=4;
  63413. //>>excludeEnd("ctx");
  63414. $7=self._collectionWithNewValue();
  63415. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63416. $ctx1.sendIdx["collectionWithNewValue"]=1;
  63417. //>>excludeEnd("ctx");
  63418. $5=$recv($6).__comma($7);
  63419. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63420. $ctx1.sendIdx[","]=2;
  63421. //>>excludeEnd("ctx");
  63422. $8=self._collectionWithNewValue();
  63423. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63424. $ctx1.sendIdx["collectionWithNewValue"]=2;
  63425. //>>excludeEnd("ctx");
  63426. self._assert_equals_($5,$8);
  63427. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63428. $ctx1.sendIdx["assert:equals:"]=2;
  63429. //>>excludeEnd("ctx");
  63430. $10=self._collectionWithNewValue();
  63431. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63432. $ctx1.sendIdx["collectionWithNewValue"]=3;
  63433. //>>excludeEnd("ctx");
  63434. $9=$recv($10).__comma(self._collection());
  63435. self._assert_equals_($9,self._collectionWithNewValue());
  63436. return self;
  63437. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63438. }, function($ctx1) {$ctx1.fill(self,"testComma",{},$globals.AssociativeCollectionTest)});
  63439. //>>excludeEnd("ctx");
  63440. },
  63441. //>>excludeStart("ide", pragmas.excludeIdeData);
  63442. args: [],
  63443. source: "testComma\x0a\x09super testComma.\x0a\x09self assert: self collection, self collection equals: self collection.\x0a\x09self assert: self collection, self collectionWithNewValue equals: self collectionWithNewValue.\x0a\x09self assert: self collectionWithNewValue, self collection equals: self collectionWithNewValue",
  63444. referencedClasses: [],
  63445. //>>excludeEnd("ide");
  63446. messageSends: ["testComma", "assert:equals:", ",", "collection", "collectionWithNewValue"]
  63447. }),
  63448. $globals.AssociativeCollectionTest);
  63449. $core.addMethod(
  63450. $core.method({
  63451. selector: "testFrom",
  63452. protocol: 'tests',
  63453. fn: function (){
  63454. var self=this;
  63455. var associations;
  63456. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63457. return $core.withContext(function($ctx1) {
  63458. //>>excludeEnd("ctx");
  63459. var $1;
  63460. $1="a".__minus_gt((1));
  63461. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63462. $ctx1.sendIdx["->"]=1;
  63463. //>>excludeEnd("ctx");
  63464. associations=[$1,"b".__minus_gt((2))];
  63465. self._assertSameContents_as_($recv($recv(self._class())._collectionClass())._from_(associations),$globals.HashedCollection._newFromPairs_(["a",(1),"b",(2)]));
  63466. return self;
  63467. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63468. }, function($ctx1) {$ctx1.fill(self,"testFrom",{associations:associations},$globals.AssociativeCollectionTest)});
  63469. //>>excludeEnd("ctx");
  63470. },
  63471. //>>excludeStart("ide", pragmas.excludeIdeData);
  63472. args: [],
  63473. 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 }.",
  63474. referencedClasses: [],
  63475. //>>excludeEnd("ide");
  63476. messageSends: ["->", "assertSameContents:as:", "from:", "collectionClass", "class"]
  63477. }),
  63478. $globals.AssociativeCollectionTest);
  63479. $core.addMethod(
  63480. $core.method({
  63481. selector: "testKeys",
  63482. protocol: 'tests',
  63483. fn: function (){
  63484. var self=this;
  63485. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63486. return $core.withContext(function($ctx1) {
  63487. //>>excludeEnd("ctx");
  63488. var $2,$1,$3,$4;
  63489. $2=$recv($recv(self._collectionClass())._new())._keys();
  63490. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63491. $ctx1.sendIdx["keys"]=1;
  63492. //>>excludeEnd("ctx");
  63493. $1=$recv($2)._isEmpty();
  63494. self._assert_($1);
  63495. $3=$recv(self._collection())._keys();
  63496. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63497. $ctx1.sendIdx["keys"]=2;
  63498. //>>excludeEnd("ctx");
  63499. $4=self._collectionKeys();
  63500. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63501. $ctx1.sendIdx["collectionKeys"]=1;
  63502. //>>excludeEnd("ctx");
  63503. self._assertSameContents_as_($3,$4);
  63504. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63505. $ctx1.sendIdx["assertSameContents:as:"]=1;
  63506. //>>excludeEnd("ctx");
  63507. self._assertSameContents_as_($recv(self._collectionWithNewValue())._keys(),$recv(self._collectionKeys()).__comma([self._sampleNewIndex()]));
  63508. return self;
  63509. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63510. }, function($ctx1) {$ctx1.fill(self,"testKeys",{},$globals.AssociativeCollectionTest)});
  63511. //>>excludeEnd("ctx");
  63512. },
  63513. //>>excludeStart("ide", pragmas.excludeIdeData);
  63514. args: [],
  63515. 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 }",
  63516. referencedClasses: [],
  63517. //>>excludeEnd("ide");
  63518. messageSends: ["assert:", "isEmpty", "keys", "new", "collectionClass", "assertSameContents:as:", "collection", "collectionKeys", "collectionWithNewValue", ",", "sampleNewIndex"]
  63519. }),
  63520. $globals.AssociativeCollectionTest);
  63521. $core.addMethod(
  63522. $core.method({
  63523. selector: "testNewFromPairs",
  63524. protocol: 'tests',
  63525. fn: function (){
  63526. var self=this;
  63527. var flattenedAssociations;
  63528. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63529. return $core.withContext(function($ctx1) {
  63530. //>>excludeEnd("ctx");
  63531. flattenedAssociations=["a",(1),"b",(2)];
  63532. self._assertSameContents_as_($recv($recv(self._class())._collectionClass())._newFromPairs_(flattenedAssociations),$globals.HashedCollection._newFromPairs_(["a",(1),"b",(2)]));
  63533. return self;
  63534. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63535. }, function($ctx1) {$ctx1.fill(self,"testNewFromPairs",{flattenedAssociations:flattenedAssociations},$globals.AssociativeCollectionTest)});
  63536. //>>excludeEnd("ctx");
  63537. },
  63538. //>>excludeStart("ide", pragmas.excludeIdeData);
  63539. args: [],
  63540. 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 }.",
  63541. referencedClasses: [],
  63542. //>>excludeEnd("ide");
  63543. messageSends: ["assertSameContents:as:", "newFromPairs:", "collectionClass", "class"]
  63544. }),
  63545. $globals.AssociativeCollectionTest);
  63546. $core.addMethod(
  63547. $core.method({
  63548. selector: "testPrintString",
  63549. protocol: 'tests',
  63550. fn: function (){
  63551. var self=this;
  63552. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63553. return $core.withContext(function($ctx1) {
  63554. //>>excludeEnd("ctx");
  63555. var $3,$2,$4,$1,$5;
  63556. $3=self._collectionClass();
  63557. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63558. $ctx1.sendIdx["collectionClass"]=1;
  63559. //>>excludeEnd("ctx");
  63560. $2=$recv($3)._new();
  63561. $recv($2)._at_put_("firstname","James");
  63562. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63563. $ctx1.sendIdx["at:put:"]=1;
  63564. //>>excludeEnd("ctx");
  63565. $recv($2)._at_put_("lastname","Bond");
  63566. $4=$recv($2)._printString();
  63567. $1=$4;
  63568. $5=$recv("a ".__comma($recv(self._collectionClass())._name())).__comma(" ('firstname' -> 'James' , 'lastname' -> 'Bond')");
  63569. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63570. $ctx1.sendIdx[","]=1;
  63571. //>>excludeEnd("ctx");
  63572. self._assert_equals_($1,$5);
  63573. return self;
  63574. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63575. }, function($ctx1) {$ctx1.fill(self,"testPrintString",{},$globals.AssociativeCollectionTest)});
  63576. //>>excludeEnd("ctx");
  63577. },
  63578. //>>excludeStart("ide", pragmas.excludeIdeData);
  63579. args: [],
  63580. 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'')'",
  63581. referencedClasses: [],
  63582. //>>excludeEnd("ide");
  63583. messageSends: ["assert:equals:", "at:put:", "new", "collectionClass", "printString", ",", "name"]
  63584. }),
  63585. $globals.AssociativeCollectionTest);
  63586. $core.addMethod(
  63587. $core.method({
  63588. selector: "testRemoveKey",
  63589. protocol: 'tests',
  63590. fn: function (){
  63591. var self=this;
  63592. function $Error(){return $globals.Error||(typeof Error=="undefined"?nil:Error)}
  63593. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63594. return $core.withContext(function($ctx1) {
  63595. //>>excludeEnd("ctx");
  63596. var $1,$2,$3,$5,$6,$4,$7,$8;
  63597. self._nonIndexesDo_((function(each){
  63598. var collection;
  63599. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63600. return $core.withContext(function($ctx2) {
  63601. //>>excludeEnd("ctx");
  63602. collection=self._collection();
  63603. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63604. $ctx2.sendIdx["collection"]=1;
  63605. //>>excludeEnd("ctx");
  63606. collection;
  63607. self._should_raise_((function(){
  63608. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63609. return $core.withContext(function($ctx3) {
  63610. //>>excludeEnd("ctx");
  63611. return $recv(collection)._removeKey_(each);
  63612. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63613. $ctx3.sendIdx["removeKey:"]=1;
  63614. //>>excludeEnd("ctx");
  63615. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63616. }, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)});
  63617. //>>excludeEnd("ctx");
  63618. }),$Error());
  63619. $1=collection;
  63620. $2=self._collection();
  63621. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63622. $ctx2.sendIdx["collection"]=2;
  63623. //>>excludeEnd("ctx");
  63624. return self._assert_equals_($1,$2);
  63625. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63626. $ctx2.sendIdx["assert:equals:"]=1;
  63627. //>>excludeEnd("ctx");
  63628. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63629. }, function($ctx2) {$ctx2.fillBlock({each:each,collection:collection},$ctx1,1)});
  63630. //>>excludeEnd("ctx");
  63631. }));
  63632. self._samplesDo_((function(index,value){
  63633. var collection;
  63634. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63635. return $core.withContext(function($ctx2) {
  63636. //>>excludeEnd("ctx");
  63637. collection=self._collection();
  63638. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63639. $ctx2.sendIdx["collection"]=3;
  63640. //>>excludeEnd("ctx");
  63641. collection;
  63642. $3=$recv(collection)._removeKey_(index);
  63643. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63644. $ctx2.sendIdx["removeKey:"]=2;
  63645. //>>excludeEnd("ctx");
  63646. self._assert_equals_($3,value);
  63647. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63648. $ctx2.sendIdx["assert:equals:"]=2;
  63649. //>>excludeEnd("ctx");
  63650. $5=collection;
  63651. $6=self._collection();
  63652. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63653. $ctx2.sendIdx["collection"]=4;
  63654. //>>excludeEnd("ctx");
  63655. $4=$recv($5).__eq($6);
  63656. return self._deny_($4);
  63657. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63658. }, function($ctx2) {$ctx2.fillBlock({index:index,value:value,collection:collection},$ctx1,3)});
  63659. //>>excludeEnd("ctx");
  63660. }));
  63661. $7=self._collectionWithNewValue();
  63662. $recv($7)._removeKey_(self._sampleNewIndex());
  63663. $8=$recv($7)._yourself();
  63664. self._assert_equals_($8,self._collection());
  63665. return self;
  63666. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63667. }, function($ctx1) {$ctx1.fill(self,"testRemoveKey",{},$globals.AssociativeCollectionTest)});
  63668. //>>excludeEnd("ctx");
  63669. },
  63670. //>>excludeStart("ide", pragmas.excludeIdeData);
  63671. args: [],
  63672. 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",
  63673. referencedClasses: ["Error"],
  63674. //>>excludeEnd("ide");
  63675. messageSends: ["nonIndexesDo:", "collection", "should:raise:", "removeKey:", "assert:equals:", "samplesDo:", "deny:", "=", "collectionWithNewValue", "sampleNewIndex", "yourself"]
  63676. }),
  63677. $globals.AssociativeCollectionTest);
  63678. $core.addMethod(
  63679. $core.method({
  63680. selector: "testRemoveKeyIfAbsent",
  63681. protocol: 'tests',
  63682. fn: function (){
  63683. var self=this;
  63684. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63685. return $core.withContext(function($ctx1) {
  63686. //>>excludeEnd("ctx");
  63687. var $1,$2,$3,$4,$5,$7,$8,$6,$9,$10;
  63688. self._nonIndexesDo_((function(each){
  63689. var collection;
  63690. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63691. return $core.withContext(function($ctx2) {
  63692. //>>excludeEnd("ctx");
  63693. collection=self._collection();
  63694. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63695. $ctx2.sendIdx["collection"]=1;
  63696. //>>excludeEnd("ctx");
  63697. collection;
  63698. $1=$recv(collection)._removeKey_ifAbsent_(each,(function(){
  63699. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63700. return $core.withContext(function($ctx3) {
  63701. //>>excludeEnd("ctx");
  63702. return self._sampleNewValue();
  63703. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63704. $ctx3.sendIdx["sampleNewValue"]=1;
  63705. //>>excludeEnd("ctx");
  63706. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63707. }, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)});
  63708. //>>excludeEnd("ctx");
  63709. }));
  63710. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63711. $ctx2.sendIdx["removeKey:ifAbsent:"]=1;
  63712. //>>excludeEnd("ctx");
  63713. $2=self._sampleNewValue();
  63714. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63715. $ctx2.sendIdx["sampleNewValue"]=2;
  63716. //>>excludeEnd("ctx");
  63717. self._assert_equals_($1,$2);
  63718. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63719. $ctx2.sendIdx["assert:equals:"]=1;
  63720. //>>excludeEnd("ctx");
  63721. $3=collection;
  63722. $4=self._collection();
  63723. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63724. $ctx2.sendIdx["collection"]=2;
  63725. //>>excludeEnd("ctx");
  63726. return self._assert_equals_($3,$4);
  63727. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63728. $ctx2.sendIdx["assert:equals:"]=2;
  63729. //>>excludeEnd("ctx");
  63730. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63731. }, function($ctx2) {$ctx2.fillBlock({each:each,collection:collection},$ctx1,1)});
  63732. //>>excludeEnd("ctx");
  63733. }));
  63734. self._samplesDo_((function(index,value){
  63735. var collection;
  63736. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63737. return $core.withContext(function($ctx2) {
  63738. //>>excludeEnd("ctx");
  63739. collection=self._collection();
  63740. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63741. $ctx2.sendIdx["collection"]=3;
  63742. //>>excludeEnd("ctx");
  63743. collection;
  63744. $5=$recv(collection)._removeKey_ifAbsent_(index,(function(){
  63745. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63746. return $core.withContext(function($ctx3) {
  63747. //>>excludeEnd("ctx");
  63748. return self._sampleNewValue();
  63749. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63750. }, function($ctx3) {$ctx3.fillBlock({},$ctx2,4)});
  63751. //>>excludeEnd("ctx");
  63752. }));
  63753. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63754. $ctx2.sendIdx["removeKey:ifAbsent:"]=2;
  63755. //>>excludeEnd("ctx");
  63756. self._assert_equals_($5,value);
  63757. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63758. $ctx2.sendIdx["assert:equals:"]=3;
  63759. //>>excludeEnd("ctx");
  63760. $7=collection;
  63761. $8=self._collection();
  63762. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63763. $ctx2.sendIdx["collection"]=4;
  63764. //>>excludeEnd("ctx");
  63765. $6=$recv($7).__eq($8);
  63766. return self._deny_($6);
  63767. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63768. }, function($ctx2) {$ctx2.fillBlock({index:index,value:value,collection:collection},$ctx1,3)});
  63769. //>>excludeEnd("ctx");
  63770. }));
  63771. $9=self._collectionWithNewValue();
  63772. $recv($9)._removeKey_ifAbsent_(self._sampleNewIndex(),(function(){
  63773. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63774. return $core.withContext(function($ctx2) {
  63775. //>>excludeEnd("ctx");
  63776. return self._assert_(false);
  63777. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63778. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,5)});
  63779. //>>excludeEnd("ctx");
  63780. }));
  63781. $10=$recv($9)._yourself();
  63782. self._assert_equals_($10,self._collection());
  63783. return self;
  63784. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63785. }, function($ctx1) {$ctx1.fill(self,"testRemoveKeyIfAbsent",{},$globals.AssociativeCollectionTest)});
  63786. //>>excludeEnd("ctx");
  63787. },
  63788. //>>excludeStart("ide", pragmas.excludeIdeData);
  63789. args: [],
  63790. 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",
  63791. referencedClasses: [],
  63792. //>>excludeEnd("ide");
  63793. messageSends: ["nonIndexesDo:", "collection", "assert:equals:", "removeKey:ifAbsent:", "sampleNewValue", "samplesDo:", "deny:", "=", "collectionWithNewValue", "sampleNewIndex", "assert:", "yourself"]
  63794. }),
  63795. $globals.AssociativeCollectionTest);
  63796. $core.addMethod(
  63797. $core.method({
  63798. selector: "testValues",
  63799. protocol: 'tests',
  63800. fn: function (){
  63801. var self=this;
  63802. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63803. return $core.withContext(function($ctx1) {
  63804. //>>excludeEnd("ctx");
  63805. var $2,$1,$3,$4;
  63806. $2=$recv($recv(self._collectionClass())._new())._values();
  63807. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63808. $ctx1.sendIdx["values"]=1;
  63809. //>>excludeEnd("ctx");
  63810. $1=$recv($2)._isEmpty();
  63811. self._assert_($1);
  63812. $3=$recv(self._collection())._values();
  63813. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63814. $ctx1.sendIdx["values"]=2;
  63815. //>>excludeEnd("ctx");
  63816. $4=self._collectionValues();
  63817. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63818. $ctx1.sendIdx["collectionValues"]=1;
  63819. //>>excludeEnd("ctx");
  63820. self._assertSameContents_as_($3,$4);
  63821. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63822. $ctx1.sendIdx["assertSameContents:as:"]=1;
  63823. //>>excludeEnd("ctx");
  63824. self._assertSameContents_as_($recv(self._collectionWithNewValue())._values(),$recv(self._collectionValues()).__comma([self._sampleNewValue()]));
  63825. return self;
  63826. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63827. }, function($ctx1) {$ctx1.fill(self,"testValues",{},$globals.AssociativeCollectionTest)});
  63828. //>>excludeEnd("ctx");
  63829. },
  63830. //>>excludeStart("ide", pragmas.excludeIdeData);
  63831. args: [],
  63832. 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 }",
  63833. referencedClasses: [],
  63834. //>>excludeEnd("ide");
  63835. messageSends: ["assert:", "isEmpty", "values", "new", "collectionClass", "assertSameContents:as:", "collection", "collectionValues", "collectionWithNewValue", ",", "sampleNewValue"]
  63836. }),
  63837. $globals.AssociativeCollectionTest);
  63838. $core.addClass('DictionaryTest', $globals.AssociativeCollectionTest, [], 'Kernel-Tests');
  63839. $core.addMethod(
  63840. $core.method({
  63841. selector: "collection",
  63842. protocol: 'fixture',
  63843. fn: function (){
  63844. var self=this;
  63845. function $Dictionary(){return $globals.Dictionary||(typeof Dictionary=="undefined"?nil:Dictionary)}
  63846. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63847. return $core.withContext(function($ctx1) {
  63848. //>>excludeEnd("ctx");
  63849. var $2,$3,$1;
  63850. $2=$recv($Dictionary())._new();
  63851. $recv($2)._at_put_((1),(1));
  63852. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63853. $ctx1.sendIdx["at:put:"]=1;
  63854. //>>excludeEnd("ctx");
  63855. $recv($2)._at_put_("a",(2));
  63856. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63857. $ctx1.sendIdx["at:put:"]=2;
  63858. //>>excludeEnd("ctx");
  63859. $recv($2)._at_put_(true,(3));
  63860. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63861. $ctx1.sendIdx["at:put:"]=3;
  63862. //>>excludeEnd("ctx");
  63863. $recv($2)._at_put_((1).__at((3)),(-4));
  63864. $3=$recv($2)._yourself();
  63865. $1=$3;
  63866. return $1;
  63867. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63868. }, function($ctx1) {$ctx1.fill(self,"collection",{},$globals.DictionaryTest)});
  63869. //>>excludeEnd("ctx");
  63870. },
  63871. //>>excludeStart("ide", pragmas.excludeIdeData);
  63872. args: [],
  63873. 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\x09yourself",
  63874. referencedClasses: ["Dictionary"],
  63875. //>>excludeEnd("ide");
  63876. messageSends: ["at:put:", "new", "@", "yourself"]
  63877. }),
  63878. $globals.DictionaryTest);
  63879. $core.addMethod(
  63880. $core.method({
  63881. selector: "collectionKeys",
  63882. protocol: 'fixture',
  63883. fn: function (){
  63884. var self=this;
  63885. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63886. return $core.withContext(function($ctx1) {
  63887. //>>excludeEnd("ctx");
  63888. var $1;
  63889. $1=[(1),"a",true,(1).__at((3))];
  63890. return $1;
  63891. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63892. }, function($ctx1) {$ctx1.fill(self,"collectionKeys",{},$globals.DictionaryTest)});
  63893. //>>excludeEnd("ctx");
  63894. },
  63895. //>>excludeStart("ide", pragmas.excludeIdeData);
  63896. args: [],
  63897. source: "collectionKeys\x0a\x09^ {1. 'a'. true. 1@3}",
  63898. referencedClasses: [],
  63899. //>>excludeEnd("ide");
  63900. messageSends: ["@"]
  63901. }),
  63902. $globals.DictionaryTest);
  63903. $core.addMethod(
  63904. $core.method({
  63905. selector: "collectionOfPrintStrings",
  63906. protocol: 'fixture',
  63907. fn: function (){
  63908. var self=this;
  63909. function $Dictionary(){return $globals.Dictionary||(typeof Dictionary=="undefined"?nil:Dictionary)}
  63910. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63911. return $core.withContext(function($ctx1) {
  63912. //>>excludeEnd("ctx");
  63913. var $2,$3,$1;
  63914. $2=$recv($Dictionary())._new();
  63915. $recv($2)._at_put_((1),"1");
  63916. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63917. $ctx1.sendIdx["at:put:"]=1;
  63918. //>>excludeEnd("ctx");
  63919. $recv($2)._at_put_("a","2");
  63920. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63921. $ctx1.sendIdx["at:put:"]=2;
  63922. //>>excludeEnd("ctx");
  63923. $recv($2)._at_put_(true,"3");
  63924. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63925. $ctx1.sendIdx["at:put:"]=3;
  63926. //>>excludeEnd("ctx");
  63927. $recv($2)._at_put_((1).__at((3)),"-4");
  63928. $3=$recv($2)._yourself();
  63929. $1=$3;
  63930. return $1;
  63931. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63932. }, function($ctx1) {$ctx1.fill(self,"collectionOfPrintStrings",{},$globals.DictionaryTest)});
  63933. //>>excludeEnd("ctx");
  63934. },
  63935. //>>excludeStart("ide", pragmas.excludeIdeData);
  63936. args: [],
  63937. 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\x09yourself",
  63938. referencedClasses: ["Dictionary"],
  63939. //>>excludeEnd("ide");
  63940. messageSends: ["at:put:", "new", "@", "yourself"]
  63941. }),
  63942. $globals.DictionaryTest);
  63943. $core.addMethod(
  63944. $core.method({
  63945. selector: "collectionSize",
  63946. protocol: 'fixture',
  63947. fn: function (){
  63948. var self=this;
  63949. return (4);
  63950. },
  63951. //>>excludeStart("ide", pragmas.excludeIdeData);
  63952. args: [],
  63953. source: "collectionSize\x0a\x09^ 4",
  63954. referencedClasses: [],
  63955. //>>excludeEnd("ide");
  63956. messageSends: []
  63957. }),
  63958. $globals.DictionaryTest);
  63959. $core.addMethod(
  63960. $core.method({
  63961. selector: "collectionValues",
  63962. protocol: 'fixture',
  63963. fn: function (){
  63964. var self=this;
  63965. var $1;
  63966. $1=[(1),(2),(3),(-4)];
  63967. return $1;
  63968. },
  63969. //>>excludeStart("ide", pragmas.excludeIdeData);
  63970. args: [],
  63971. source: "collectionValues\x0a\x09^ {1. 2. 3. -4}",
  63972. referencedClasses: [],
  63973. //>>excludeEnd("ide");
  63974. messageSends: []
  63975. }),
  63976. $globals.DictionaryTest);
  63977. $core.addMethod(
  63978. $core.method({
  63979. selector: "collectionWithDuplicates",
  63980. protocol: 'fixture',
  63981. fn: function (){
  63982. var self=this;
  63983. function $Dictionary(){return $globals.Dictionary||(typeof Dictionary=="undefined"?nil:Dictionary)}
  63984. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63985. return $core.withContext(function($ctx1) {
  63986. //>>excludeEnd("ctx");
  63987. var $2,$3,$1;
  63988. $2=$recv($Dictionary())._new();
  63989. $recv($2)._at_put_((1),(1));
  63990. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63991. $ctx1.sendIdx["at:put:"]=1;
  63992. //>>excludeEnd("ctx");
  63993. $recv($2)._at_put_("a",(2));
  63994. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63995. $ctx1.sendIdx["at:put:"]=2;
  63996. //>>excludeEnd("ctx");
  63997. $recv($2)._at_put_(true,(3));
  63998. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  63999. $ctx1.sendIdx["at:put:"]=3;
  64000. //>>excludeEnd("ctx");
  64001. $recv($2)._at_put_((4),(-4));
  64002. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64003. $ctx1.sendIdx["at:put:"]=4;
  64004. //>>excludeEnd("ctx");
  64005. $recv($2)._at_put_("b",(1));
  64006. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64007. $ctx1.sendIdx["at:put:"]=5;
  64008. //>>excludeEnd("ctx");
  64009. $recv($2)._at_put_((3),(3));
  64010. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64011. $ctx1.sendIdx["at:put:"]=6;
  64012. //>>excludeEnd("ctx");
  64013. $recv($2)._at_put_(false,(12));
  64014. $3=$recv($2)._yourself();
  64015. $1=$3;
  64016. return $1;
  64017. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64018. }, function($ctx1) {$ctx1.fill(self,"collectionWithDuplicates",{},$globals.DictionaryTest)});
  64019. //>>excludeEnd("ctx");
  64020. },
  64021. //>>excludeStart("ide", pragmas.excludeIdeData);
  64022. args: [],
  64023. 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: 'b' put: 1;\x0a\x09\x09at: 3 put: 3;\x0a\x09\x09at: false put: 12;\x0a\x09\x09yourself",
  64024. referencedClasses: ["Dictionary"],
  64025. //>>excludeEnd("ide");
  64026. messageSends: ["at:put:", "new", "yourself"]
  64027. }),
  64028. $globals.DictionaryTest);
  64029. $core.addMethod(
  64030. $core.method({
  64031. selector: "collectionWithNewValue",
  64032. protocol: 'fixture',
  64033. fn: function (){
  64034. var self=this;
  64035. function $Dictionary(){return $globals.Dictionary||(typeof Dictionary=="undefined"?nil:Dictionary)}
  64036. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64037. return $core.withContext(function($ctx1) {
  64038. //>>excludeEnd("ctx");
  64039. var $2,$3,$1;
  64040. $2=$recv($Dictionary())._new();
  64041. $recv($2)._at_put_((1),(1));
  64042. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64043. $ctx1.sendIdx["at:put:"]=1;
  64044. //>>excludeEnd("ctx");
  64045. $recv($2)._at_put_("a",(2));
  64046. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64047. $ctx1.sendIdx["at:put:"]=2;
  64048. //>>excludeEnd("ctx");
  64049. $recv($2)._at_put_(true,(3));
  64050. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64051. $ctx1.sendIdx["at:put:"]=3;
  64052. //>>excludeEnd("ctx");
  64053. $recv($2)._at_put_((1).__at((3)),(-4));
  64054. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64055. $ctx1.sendIdx["at:put:"]=4;
  64056. //>>excludeEnd("ctx");
  64057. $recv($2)._at_put_("new","N");
  64058. $3=$recv($2)._yourself();
  64059. $1=$3;
  64060. return $1;
  64061. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64062. }, function($ctx1) {$ctx1.fill(self,"collectionWithNewValue",{},$globals.DictionaryTest)});
  64063. //>>excludeEnd("ctx");
  64064. },
  64065. //>>excludeStart("ide", pragmas.excludeIdeData);
  64066. args: [],
  64067. 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: 'new' put: 'N';\x0a\x09\x09yourself",
  64068. referencedClasses: ["Dictionary"],
  64069. //>>excludeEnd("ide");
  64070. messageSends: ["at:put:", "new", "@", "yourself"]
  64071. }),
  64072. $globals.DictionaryTest);
  64073. $core.addMethod(
  64074. $core.method({
  64075. selector: "sampleNewValueAsCollection",
  64076. protocol: 'fixture',
  64077. fn: function (){
  64078. var self=this;
  64079. function $Dictionary(){return $globals.Dictionary||(typeof Dictionary=="undefined"?nil:Dictionary)}
  64080. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64081. return $core.withContext(function($ctx1) {
  64082. //>>excludeEnd("ctx");
  64083. var $2,$3,$1;
  64084. $2=$recv($Dictionary())._new();
  64085. $recv($2)._at_put_("new","N");
  64086. $3=$recv($2)._yourself();
  64087. $1=$3;
  64088. return $1;
  64089. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64090. }, function($ctx1) {$ctx1.fill(self,"sampleNewValueAsCollection",{},$globals.DictionaryTest)});
  64091. //>>excludeEnd("ctx");
  64092. },
  64093. //>>excludeStart("ide", pragmas.excludeIdeData);
  64094. args: [],
  64095. source: "sampleNewValueAsCollection\x0a\x09^ Dictionary new\x0a\x09\x09at: 'new' put: 'N';\x0a\x09\x09yourself",
  64096. referencedClasses: ["Dictionary"],
  64097. //>>excludeEnd("ide");
  64098. messageSends: ["at:put:", "new", "yourself"]
  64099. }),
  64100. $globals.DictionaryTest);
  64101. $core.addMethod(
  64102. $core.method({
  64103. selector: "samplesDo:",
  64104. protocol: 'fixture',
  64105. fn: function (aBlock){
  64106. var self=this;
  64107. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64108. return $core.withContext(function($ctx1) {
  64109. //>>excludeEnd("ctx");
  64110. (
  64111. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64112. $ctx1.supercall = true,
  64113. //>>excludeEnd("ctx");
  64114. $globals.DictionaryTest.superclass.fn.prototype._samplesDo_.apply($recv(self), [aBlock]));
  64115. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64116. $ctx1.supercall = false;
  64117. //>>excludeEnd("ctx");;
  64118. $recv(aBlock)._value_value_(true,(3));
  64119. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64120. $ctx1.sendIdx["value:value:"]=1;
  64121. //>>excludeEnd("ctx");
  64122. $recv(aBlock)._value_value_((1).__at((3)),(-4));
  64123. return self;
  64124. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64125. }, function($ctx1) {$ctx1.fill(self,"samplesDo:",{aBlock:aBlock},$globals.DictionaryTest)});
  64126. //>>excludeEnd("ctx");
  64127. },
  64128. //>>excludeStart("ide", pragmas.excludeIdeData);
  64129. args: ["aBlock"],
  64130. source: "samplesDo: aBlock\x0a\x09super samplesDo: aBlock.\x0a\x09aBlock value: true value: 3.\x0a\x09aBlock value: 1@3 value: -4",
  64131. referencedClasses: [],
  64132. //>>excludeEnd("ide");
  64133. messageSends: ["samplesDo:", "value:value:", "@"]
  64134. }),
  64135. $globals.DictionaryTest);
  64136. $core.addMethod(
  64137. $core.method({
  64138. selector: "testAccessing",
  64139. protocol: 'tests',
  64140. fn: function (){
  64141. var self=this;
  64142. var d;
  64143. function $Dictionary(){return $globals.Dictionary||(typeof Dictionary=="undefined"?nil:Dictionary)}
  64144. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64145. return $core.withContext(function($ctx1) {
  64146. //>>excludeEnd("ctx");
  64147. var $1,$2,$3,$4,$5,$6,$7,$9,$10,$8,$12,$13,$11;
  64148. d=$recv($Dictionary())._new();
  64149. $recv(d)._at_put_("hello","world");
  64150. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64151. $ctx1.sendIdx["at:put:"]=1;
  64152. //>>excludeEnd("ctx");
  64153. $1=$recv(d)._at_("hello");
  64154. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64155. $ctx1.sendIdx["at:"]=1;
  64156. //>>excludeEnd("ctx");
  64157. self._assert_equals_($1,"world");
  64158. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64159. $ctx1.sendIdx["assert:equals:"]=1;
  64160. //>>excludeEnd("ctx");
  64161. $2=$recv(d)._at_ifAbsent_("hello",(function(){
  64162. return nil;
  64163. }));
  64164. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64165. $ctx1.sendIdx["at:ifAbsent:"]=1;
  64166. //>>excludeEnd("ctx");
  64167. self._assert_equals_($2,"world");
  64168. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64169. $ctx1.sendIdx["assert:equals:"]=2;
  64170. //>>excludeEnd("ctx");
  64171. self._deny_($recv($recv(d)._at_ifAbsent_("foo",(function(){
  64172. return nil;
  64173. }))).__eq("world"));
  64174. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64175. $ctx1.sendIdx["deny:"]=1;
  64176. //>>excludeEnd("ctx");
  64177. $3=$recv(d)._includesKey_("hello");
  64178. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64179. $ctx1.sendIdx["includesKey:"]=1;
  64180. //>>excludeEnd("ctx");
  64181. self._assert_($3);
  64182. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64183. $ctx1.sendIdx["assert:"]=1;
  64184. //>>excludeEnd("ctx");
  64185. $4=$recv(d)._includesKey_("foo");
  64186. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64187. $ctx1.sendIdx["includesKey:"]=2;
  64188. //>>excludeEnd("ctx");
  64189. self._deny_($4);
  64190. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64191. $ctx1.sendIdx["deny:"]=2;
  64192. //>>excludeEnd("ctx");
  64193. $recv(d)._at_put_((1),(2));
  64194. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64195. $ctx1.sendIdx["at:put:"]=2;
  64196. //>>excludeEnd("ctx");
  64197. $5=$recv(d)._at_((1));
  64198. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64199. $ctx1.sendIdx["at:"]=2;
  64200. //>>excludeEnd("ctx");
  64201. self._assert_equals_($5,(2));
  64202. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64203. $ctx1.sendIdx["assert:equals:"]=3;
  64204. //>>excludeEnd("ctx");
  64205. $6=d;
  64206. $7=(1).__at((3));
  64207. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64208. $ctx1.sendIdx["@"]=1;
  64209. //>>excludeEnd("ctx");
  64210. $recv($6)._at_put_($7,(3));
  64211. $9=d;
  64212. $10=(1).__at((3));
  64213. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64214. $ctx1.sendIdx["@"]=2;
  64215. //>>excludeEnd("ctx");
  64216. $8=$recv($9)._at_($10);
  64217. self._assert_equals_($8,(3));
  64218. $12=d;
  64219. $13=(1).__at((3));
  64220. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64221. $ctx1.sendIdx["@"]=3;
  64222. //>>excludeEnd("ctx");
  64223. $11=$recv($12)._includesKey_($13);
  64224. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64225. $ctx1.sendIdx["includesKey:"]=3;
  64226. //>>excludeEnd("ctx");
  64227. self._assert_($11);
  64228. self._deny_($recv(d)._includesKey_((3).__at((1))));
  64229. return self;
  64230. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64231. }, function($ctx1) {$ctx1.fill(self,"testAccessing",{d:d},$globals.DictionaryTest)});
  64232. //>>excludeEnd("ctx");
  64233. },
  64234. //>>excludeStart("ide", pragmas.excludeIdeData);
  64235. args: [],
  64236. 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)",
  64237. referencedClasses: ["Dictionary"],
  64238. //>>excludeEnd("ide");
  64239. messageSends: ["new", "at:put:", "assert:equals:", "at:", "at:ifAbsent:", "deny:", "=", "assert:", "includesKey:", "@"]
  64240. }),
  64241. $globals.DictionaryTest);
  64242. $core.addMethod(
  64243. $core.method({
  64244. selector: "testDynamicDictionaries",
  64245. protocol: 'tests',
  64246. fn: function (){
  64247. var self=this;
  64248. function $Dictionary(){return $globals.Dictionary||(typeof Dictionary=="undefined"?nil:Dictionary)}
  64249. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64250. return $core.withContext(function($ctx1) {
  64251. //>>excludeEnd("ctx");
  64252. self._assert_equals_($recv($globals.HashedCollection._newFromPairs_(["hello",(1)]))._asDictionary(),$recv($Dictionary())._with_("hello".__minus_gt((1))));
  64253. return self;
  64254. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64255. }, function($ctx1) {$ctx1.fill(self,"testDynamicDictionaries",{},$globals.DictionaryTest)});
  64256. //>>excludeEnd("ctx");
  64257. },
  64258. //>>excludeStart("ide", pragmas.excludeIdeData);
  64259. args: [],
  64260. source: "testDynamicDictionaries\x0a\x09self assert: #{'hello' -> 1} asDictionary equals: (Dictionary with: 'hello' -> 1)",
  64261. referencedClasses: ["Dictionary"],
  64262. //>>excludeEnd("ide");
  64263. messageSends: ["assert:equals:", "asDictionary", "with:", "->"]
  64264. }),
  64265. $globals.DictionaryTest);
  64266. $core.addMethod(
  64267. $core.method({
  64268. selector: "collectionClass",
  64269. protocol: 'fixture',
  64270. fn: function (){
  64271. var self=this;
  64272. function $Dictionary(){return $globals.Dictionary||(typeof Dictionary=="undefined"?nil:Dictionary)}
  64273. return $Dictionary();
  64274. },
  64275. //>>excludeStart("ide", pragmas.excludeIdeData);
  64276. args: [],
  64277. source: "collectionClass\x0a\x09^ Dictionary",
  64278. referencedClasses: ["Dictionary"],
  64279. //>>excludeEnd("ide");
  64280. messageSends: []
  64281. }),
  64282. $globals.DictionaryTest.klass);
  64283. $core.addClass('HashedCollectionTest', $globals.AssociativeCollectionTest, [], 'Kernel-Tests');
  64284. $core.addMethod(
  64285. $core.method({
  64286. selector: "collection",
  64287. protocol: 'fixture',
  64288. fn: function (){
  64289. var self=this;
  64290. var $1;
  64291. $1=$globals.HashedCollection._newFromPairs_(["b",(1),"a",(2),"c",(3),"d",(-4)]);
  64292. return $1;
  64293. },
  64294. //>>excludeStart("ide", pragmas.excludeIdeData);
  64295. args: [],
  64296. source: "collection\x0a\x09^ #{ 'b' -> 1. 'a' -> 2. 'c' -> 3. 'd' -> -4 }",
  64297. referencedClasses: [],
  64298. //>>excludeEnd("ide");
  64299. messageSends: []
  64300. }),
  64301. $globals.HashedCollectionTest);
  64302. $core.addMethod(
  64303. $core.method({
  64304. selector: "collectionKeys",
  64305. protocol: 'fixture',
  64306. fn: function (){
  64307. var self=this;
  64308. var $1;
  64309. $1=["b","a","c","d"];
  64310. return $1;
  64311. },
  64312. //>>excludeStart("ide", pragmas.excludeIdeData);
  64313. args: [],
  64314. source: "collectionKeys\x0a\x09^ { 'b'. 'a'. 'c'. 'd' }",
  64315. referencedClasses: [],
  64316. //>>excludeEnd("ide");
  64317. messageSends: []
  64318. }),
  64319. $globals.HashedCollectionTest);
  64320. $core.addMethod(
  64321. $core.method({
  64322. selector: "collectionOfPrintStrings",
  64323. protocol: 'fixture',
  64324. fn: function (){
  64325. var self=this;
  64326. var $1;
  64327. $1=$globals.HashedCollection._newFromPairs_(["b","1","a","2","c","3","d","-4"]);
  64328. return $1;
  64329. },
  64330. //>>excludeStart("ide", pragmas.excludeIdeData);
  64331. args: [],
  64332. source: "collectionOfPrintStrings\x0a\x09^ #{ 'b' -> '1'. 'a' -> '2'. 'c' -> '3'. 'd' -> '-4' }",
  64333. referencedClasses: [],
  64334. //>>excludeEnd("ide");
  64335. messageSends: []
  64336. }),
  64337. $globals.HashedCollectionTest);
  64338. $core.addMethod(
  64339. $core.method({
  64340. selector: "collectionSize",
  64341. protocol: 'fixture',
  64342. fn: function (){
  64343. var self=this;
  64344. return (4);
  64345. },
  64346. //>>excludeStart("ide", pragmas.excludeIdeData);
  64347. args: [],
  64348. source: "collectionSize\x0a\x09^ 4",
  64349. referencedClasses: [],
  64350. //>>excludeEnd("ide");
  64351. messageSends: []
  64352. }),
  64353. $globals.HashedCollectionTest);
  64354. $core.addMethod(
  64355. $core.method({
  64356. selector: "collectionValues",
  64357. protocol: 'fixture',
  64358. fn: function (){
  64359. var self=this;
  64360. var $1;
  64361. $1=[(1),(2),(3),(-4)];
  64362. return $1;
  64363. },
  64364. //>>excludeStart("ide", pragmas.excludeIdeData);
  64365. args: [],
  64366. source: "collectionValues\x0a\x09^ { 1. 2. 3. -4 }",
  64367. referencedClasses: [],
  64368. //>>excludeEnd("ide");
  64369. messageSends: []
  64370. }),
  64371. $globals.HashedCollectionTest);
  64372. $core.addMethod(
  64373. $core.method({
  64374. selector: "collectionWithDuplicates",
  64375. protocol: 'fixture',
  64376. fn: function (){
  64377. var self=this;
  64378. var $1;
  64379. $1=$globals.HashedCollection._newFromPairs_(["b",(1),"a",(2),"c",(3),"d",(-4),"e",(1),"f",(2),"g",(10)]);
  64380. return $1;
  64381. },
  64382. //>>excludeStart("ide", pragmas.excludeIdeData);
  64383. args: [],
  64384. source: "collectionWithDuplicates\x0a\x09^ #{ 'b' -> 1. 'a' -> 2. 'c' -> 3. 'd' -> -4. 'e' -> 1. 'f' -> 2. 'g' -> 10 }",
  64385. referencedClasses: [],
  64386. //>>excludeEnd("ide");
  64387. messageSends: []
  64388. }),
  64389. $globals.HashedCollectionTest);
  64390. $core.addMethod(
  64391. $core.method({
  64392. selector: "collectionWithNewValue",
  64393. protocol: 'fixture',
  64394. fn: function (){
  64395. var self=this;
  64396. var $1;
  64397. $1=$globals.HashedCollection._newFromPairs_(["b",(1),"a",(2),"c",(3),"d",(-4),"new","N"]);
  64398. return $1;
  64399. },
  64400. //>>excludeStart("ide", pragmas.excludeIdeData);
  64401. args: [],
  64402. source: "collectionWithNewValue\x0a\x09^ #{ 'b' -> 1. 'a' -> 2. 'c' -> 3. 'd' -> -4. 'new' -> 'N' }",
  64403. referencedClasses: [],
  64404. //>>excludeEnd("ide");
  64405. messageSends: []
  64406. }),
  64407. $globals.HashedCollectionTest);
  64408. $core.addMethod(
  64409. $core.method({
  64410. selector: "sampleNewValueAsCollection",
  64411. protocol: 'fixture',
  64412. fn: function (){
  64413. var self=this;
  64414. var $1;
  64415. $1=$globals.HashedCollection._newFromPairs_(["new","N"]);
  64416. return $1;
  64417. },
  64418. //>>excludeStart("ide", pragmas.excludeIdeData);
  64419. args: [],
  64420. source: "sampleNewValueAsCollection\x0a\x09^ #{ 'new' -> 'N' }",
  64421. referencedClasses: [],
  64422. //>>excludeEnd("ide");
  64423. messageSends: []
  64424. }),
  64425. $globals.HashedCollectionTest);
  64426. $core.addMethod(
  64427. $core.method({
  64428. selector: "testDynamicDictionaries",
  64429. protocol: 'tests',
  64430. fn: function (){
  64431. var self=this;
  64432. function $HashedCollection(){return $globals.HashedCollection||(typeof HashedCollection=="undefined"?nil:HashedCollection)}
  64433. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64434. return $core.withContext(function($ctx1) {
  64435. //>>excludeEnd("ctx");
  64436. self._assert_equals_($recv($globals.HashedCollection._newFromPairs_(["hello",(1)]))._asHashedCollection(),$recv($HashedCollection())._with_("hello".__minus_gt((1))));
  64437. return self;
  64438. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64439. }, function($ctx1) {$ctx1.fill(self,"testDynamicDictionaries",{},$globals.HashedCollectionTest)});
  64440. //>>excludeEnd("ctx");
  64441. },
  64442. //>>excludeStart("ide", pragmas.excludeIdeData);
  64443. args: [],
  64444. source: "testDynamicDictionaries\x0a\x09self assert: #{'hello' -> 1} asHashedCollection equals: (HashedCollection with: 'hello' -> 1)",
  64445. referencedClasses: ["HashedCollection"],
  64446. //>>excludeEnd("ide");
  64447. messageSends: ["assert:equals:", "asHashedCollection", "with:", "->"]
  64448. }),
  64449. $globals.HashedCollectionTest);
  64450. $core.addMethod(
  64451. $core.method({
  64452. selector: "collectionClass",
  64453. protocol: 'fixture',
  64454. fn: function (){
  64455. var self=this;
  64456. function $HashedCollection(){return $globals.HashedCollection||(typeof HashedCollection=="undefined"?nil:HashedCollection)}
  64457. return $HashedCollection();
  64458. },
  64459. //>>excludeStart("ide", pragmas.excludeIdeData);
  64460. args: [],
  64461. source: "collectionClass\x0a\x09^ HashedCollection",
  64462. referencedClasses: ["HashedCollection"],
  64463. //>>excludeEnd("ide");
  64464. messageSends: []
  64465. }),
  64466. $globals.HashedCollectionTest.klass);
  64467. $core.addClass('SequenceableCollectionTest', $globals.IndexableCollectionTest, [], 'Kernel-Tests');
  64468. $core.addMethod(
  64469. $core.method({
  64470. selector: "collectionFirst",
  64471. protocol: 'fixture',
  64472. fn: function (){
  64473. var self=this;
  64474. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64475. return $core.withContext(function($ctx1) {
  64476. //>>excludeEnd("ctx");
  64477. self._subclassResponsibility();
  64478. return self;
  64479. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64480. }, function($ctx1) {$ctx1.fill(self,"collectionFirst",{},$globals.SequenceableCollectionTest)});
  64481. //>>excludeEnd("ctx");
  64482. },
  64483. //>>excludeStart("ide", pragmas.excludeIdeData);
  64484. args: [],
  64485. source: "collectionFirst\x0a\x09self subclassResponsibility",
  64486. referencedClasses: [],
  64487. //>>excludeEnd("ide");
  64488. messageSends: ["subclassResponsibility"]
  64489. }),
  64490. $globals.SequenceableCollectionTest);
  64491. $core.addMethod(
  64492. $core.method({
  64493. selector: "collectionFirstTwo",
  64494. protocol: 'fixture',
  64495. fn: function (){
  64496. var self=this;
  64497. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64498. return $core.withContext(function($ctx1) {
  64499. //>>excludeEnd("ctx");
  64500. self._subclassResponsibility();
  64501. return self;
  64502. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64503. }, function($ctx1) {$ctx1.fill(self,"collectionFirstTwo",{},$globals.SequenceableCollectionTest)});
  64504. //>>excludeEnd("ctx");
  64505. },
  64506. //>>excludeStart("ide", pragmas.excludeIdeData);
  64507. args: [],
  64508. source: "collectionFirstTwo\x0a\x09self subclassResponsibility",
  64509. referencedClasses: [],
  64510. //>>excludeEnd("ide");
  64511. messageSends: ["subclassResponsibility"]
  64512. }),
  64513. $globals.SequenceableCollectionTest);
  64514. $core.addMethod(
  64515. $core.method({
  64516. selector: "collectionLast",
  64517. protocol: 'fixture',
  64518. fn: function (){
  64519. var self=this;
  64520. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64521. return $core.withContext(function($ctx1) {
  64522. //>>excludeEnd("ctx");
  64523. self._subclassResponsibility();
  64524. return self;
  64525. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64526. }, function($ctx1) {$ctx1.fill(self,"collectionLast",{},$globals.SequenceableCollectionTest)});
  64527. //>>excludeEnd("ctx");
  64528. },
  64529. //>>excludeStart("ide", pragmas.excludeIdeData);
  64530. args: [],
  64531. source: "collectionLast\x0a\x09self subclassResponsibility",
  64532. referencedClasses: [],
  64533. //>>excludeEnd("ide");
  64534. messageSends: ["subclassResponsibility"]
  64535. }),
  64536. $globals.SequenceableCollectionTest);
  64537. $core.addMethod(
  64538. $core.method({
  64539. selector: "collectionLastTwo",
  64540. protocol: 'fixture',
  64541. fn: function (){
  64542. var self=this;
  64543. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64544. return $core.withContext(function($ctx1) {
  64545. //>>excludeEnd("ctx");
  64546. self._subclassResponsibility();
  64547. return self;
  64548. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64549. }, function($ctx1) {$ctx1.fill(self,"collectionLastTwo",{},$globals.SequenceableCollectionTest)});
  64550. //>>excludeEnd("ctx");
  64551. },
  64552. //>>excludeStart("ide", pragmas.excludeIdeData);
  64553. args: [],
  64554. source: "collectionLastTwo\x0a\x09self subclassResponsibility",
  64555. referencedClasses: [],
  64556. //>>excludeEnd("ide");
  64557. messageSends: ["subclassResponsibility"]
  64558. }),
  64559. $globals.SequenceableCollectionTest);
  64560. $core.addMethod(
  64561. $core.method({
  64562. selector: "nonIndexesDo:",
  64563. protocol: 'fixture',
  64564. fn: function (aBlock){
  64565. var self=this;
  64566. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64567. return $core.withContext(function($ctx1) {
  64568. //>>excludeEnd("ctx");
  64569. $recv(aBlock)._value_((0));
  64570. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64571. $ctx1.sendIdx["value:"]=1;
  64572. //>>excludeEnd("ctx");
  64573. $recv(aBlock)._value_($recv(self._collectionSize()).__plus((1)));
  64574. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64575. $ctx1.sendIdx["value:"]=2;
  64576. //>>excludeEnd("ctx");
  64577. $recv(aBlock)._value_("z");
  64578. return self;
  64579. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64580. }, function($ctx1) {$ctx1.fill(self,"nonIndexesDo:",{aBlock:aBlock},$globals.SequenceableCollectionTest)});
  64581. //>>excludeEnd("ctx");
  64582. },
  64583. //>>excludeStart("ide", pragmas.excludeIdeData);
  64584. args: ["aBlock"],
  64585. source: "nonIndexesDo: aBlock\x0a\x09aBlock value: 0.\x0a\x09aBlock value: self collectionSize + 1.\x0a\x09aBlock value: 'z'",
  64586. referencedClasses: [],
  64587. //>>excludeEnd("ide");
  64588. messageSends: ["value:", "+", "collectionSize"]
  64589. }),
  64590. $globals.SequenceableCollectionTest);
  64591. $core.addMethod(
  64592. $core.method({
  64593. selector: "samplesDo:",
  64594. protocol: 'fixture',
  64595. fn: function (aBlock){
  64596. var self=this;
  64597. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64598. return $core.withContext(function($ctx1) {
  64599. //>>excludeEnd("ctx");
  64600. $recv(aBlock)._value_value_((1),self._collectionFirst());
  64601. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64602. $ctx1.sendIdx["value:value:"]=1;
  64603. //>>excludeEnd("ctx");
  64604. $recv(aBlock)._value_value_(self._collectionSize(),self._collectionLast());
  64605. return self;
  64606. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64607. }, function($ctx1) {$ctx1.fill(self,"samplesDo:",{aBlock:aBlock},$globals.SequenceableCollectionTest)});
  64608. //>>excludeEnd("ctx");
  64609. },
  64610. //>>excludeStart("ide", pragmas.excludeIdeData);
  64611. args: ["aBlock"],
  64612. source: "samplesDo: aBlock\x0a\x09aBlock value: 1 value: self collectionFirst.\x0a\x09aBlock value: self collectionSize value: self collectionLast",
  64613. referencedClasses: [],
  64614. //>>excludeEnd("ide");
  64615. messageSends: ["value:value:", "collectionFirst", "collectionSize", "collectionLast"]
  64616. }),
  64617. $globals.SequenceableCollectionTest);
  64618. $core.addMethod(
  64619. $core.method({
  64620. selector: "testBeginsWith",
  64621. protocol: 'tests',
  64622. fn: function (){
  64623. var self=this;
  64624. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64625. return $core.withContext(function($ctx1) {
  64626. //>>excludeEnd("ctx");
  64627. var $2,$1,$4,$5,$3,$7,$6;
  64628. $2=self._collection();
  64629. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64630. $ctx1.sendIdx["collection"]=1;
  64631. //>>excludeEnd("ctx");
  64632. $1=$recv($2)._beginsWith_($recv(self._collectionClass())._new());
  64633. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64634. $ctx1.sendIdx["beginsWith:"]=1;
  64635. //>>excludeEnd("ctx");
  64636. self._assert_($1);
  64637. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64638. $ctx1.sendIdx["assert:"]=1;
  64639. //>>excludeEnd("ctx");
  64640. $4=self._collection();
  64641. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64642. $ctx1.sendIdx["collection"]=2;
  64643. //>>excludeEnd("ctx");
  64644. $5=self._collection();
  64645. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64646. $ctx1.sendIdx["collection"]=3;
  64647. //>>excludeEnd("ctx");
  64648. $3=$recv($4)._beginsWith_($5);
  64649. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64650. $ctx1.sendIdx["beginsWith:"]=2;
  64651. //>>excludeEnd("ctx");
  64652. self._assert_($3);
  64653. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64654. $ctx1.sendIdx["assert:"]=2;
  64655. //>>excludeEnd("ctx");
  64656. $7=self._collection();
  64657. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64658. $ctx1.sendIdx["collection"]=4;
  64659. //>>excludeEnd("ctx");
  64660. $6=$recv($7)._beginsWith_(self._collectionFirstTwo());
  64661. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64662. $ctx1.sendIdx["beginsWith:"]=3;
  64663. //>>excludeEnd("ctx");
  64664. self._assert_($6);
  64665. self._deny_($recv(self._collection())._beginsWith_(self._collectionLastTwo()));
  64666. return self;
  64667. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64668. }, function($ctx1) {$ctx1.fill(self,"testBeginsWith",{},$globals.SequenceableCollectionTest)});
  64669. //>>excludeEnd("ctx");
  64670. },
  64671. //>>excludeStart("ide", pragmas.excludeIdeData);
  64672. args: [],
  64673. 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)",
  64674. referencedClasses: [],
  64675. //>>excludeEnd("ide");
  64676. messageSends: ["assert:", "beginsWith:", "collection", "new", "collectionClass", "collectionFirstTwo", "deny:", "collectionLastTwo"]
  64677. }),
  64678. $globals.SequenceableCollectionTest);
  64679. $core.addMethod(
  64680. $core.method({
  64681. selector: "testEndsWith",
  64682. protocol: 'tests',
  64683. fn: function (){
  64684. var self=this;
  64685. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64686. return $core.withContext(function($ctx1) {
  64687. //>>excludeEnd("ctx");
  64688. var $2,$1,$4,$5,$3,$7,$6;
  64689. $2=self._collection();
  64690. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64691. $ctx1.sendIdx["collection"]=1;
  64692. //>>excludeEnd("ctx");
  64693. $1=$recv($2)._endsWith_($recv(self._collectionClass())._new());
  64694. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64695. $ctx1.sendIdx["endsWith:"]=1;
  64696. //>>excludeEnd("ctx");
  64697. self._assert_($1);
  64698. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64699. $ctx1.sendIdx["assert:"]=1;
  64700. //>>excludeEnd("ctx");
  64701. $4=self._collection();
  64702. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64703. $ctx1.sendIdx["collection"]=2;
  64704. //>>excludeEnd("ctx");
  64705. $5=self._collection();
  64706. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64707. $ctx1.sendIdx["collection"]=3;
  64708. //>>excludeEnd("ctx");
  64709. $3=$recv($4)._endsWith_($5);
  64710. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64711. $ctx1.sendIdx["endsWith:"]=2;
  64712. //>>excludeEnd("ctx");
  64713. self._assert_($3);
  64714. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64715. $ctx1.sendIdx["assert:"]=2;
  64716. //>>excludeEnd("ctx");
  64717. $7=self._collection();
  64718. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64719. $ctx1.sendIdx["collection"]=4;
  64720. //>>excludeEnd("ctx");
  64721. $6=$recv($7)._endsWith_(self._collectionLastTwo());
  64722. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64723. $ctx1.sendIdx["endsWith:"]=3;
  64724. //>>excludeEnd("ctx");
  64725. self._assert_($6);
  64726. self._deny_($recv(self._collection())._endsWith_(self._collectionFirstTwo()));
  64727. return self;
  64728. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64729. }, function($ctx1) {$ctx1.fill(self,"testEndsWith",{},$globals.SequenceableCollectionTest)});
  64730. //>>excludeEnd("ctx");
  64731. },
  64732. //>>excludeStart("ide", pragmas.excludeIdeData);
  64733. args: [],
  64734. 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)",
  64735. referencedClasses: [],
  64736. //>>excludeEnd("ide");
  64737. messageSends: ["assert:", "endsWith:", "collection", "new", "collectionClass", "collectionLastTwo", "deny:", "collectionFirstTwo"]
  64738. }),
  64739. $globals.SequenceableCollectionTest);
  64740. $core.addMethod(
  64741. $core.method({
  64742. selector: "testFirst",
  64743. protocol: 'tests',
  64744. fn: function (){
  64745. var self=this;
  64746. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64747. return $core.withContext(function($ctx1) {
  64748. //>>excludeEnd("ctx");
  64749. self._assert_equals_($recv(self._collection())._first(),self._collectionFirst());
  64750. return self;
  64751. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64752. }, function($ctx1) {$ctx1.fill(self,"testFirst",{},$globals.SequenceableCollectionTest)});
  64753. //>>excludeEnd("ctx");
  64754. },
  64755. //>>excludeStart("ide", pragmas.excludeIdeData);
  64756. args: [],
  64757. source: "testFirst\x0a\x09self assert: self collection first equals: self collectionFirst",
  64758. referencedClasses: [],
  64759. //>>excludeEnd("ide");
  64760. messageSends: ["assert:equals:", "first", "collection", "collectionFirst"]
  64761. }),
  64762. $globals.SequenceableCollectionTest);
  64763. $core.addMethod(
  64764. $core.method({
  64765. selector: "testFirstN",
  64766. protocol: 'tests',
  64767. fn: function (){
  64768. var self=this;
  64769. function $Error(){return $globals.Error||(typeof Error=="undefined"?nil:Error)}
  64770. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64771. return $core.withContext(function($ctx1) {
  64772. //>>excludeEnd("ctx");
  64773. var $2,$1,$4,$3,$6,$5,$7;
  64774. $2=self._collection();
  64775. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64776. $ctx1.sendIdx["collection"]=1;
  64777. //>>excludeEnd("ctx");
  64778. $1=$recv($2)._first_((2));
  64779. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64780. $ctx1.sendIdx["first:"]=1;
  64781. //>>excludeEnd("ctx");
  64782. self._assert_equals_($1,self._collectionFirstTwo());
  64783. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64784. $ctx1.sendIdx["assert:equals:"]=1;
  64785. //>>excludeEnd("ctx");
  64786. $4=self._collection();
  64787. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64788. $ctx1.sendIdx["collection"]=2;
  64789. //>>excludeEnd("ctx");
  64790. $3=$recv($4)._first_((0));
  64791. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64792. $ctx1.sendIdx["first:"]=2;
  64793. //>>excludeEnd("ctx");
  64794. self._assert_equals_($3,$recv(self._collectionClass())._new());
  64795. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64796. $ctx1.sendIdx["assert:equals:"]=2;
  64797. //>>excludeEnd("ctx");
  64798. $6=self._collection();
  64799. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64800. $ctx1.sendIdx["collection"]=3;
  64801. //>>excludeEnd("ctx");
  64802. $5=$recv($6)._first_(self._collectionSize());
  64803. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64804. $ctx1.sendIdx["first:"]=3;
  64805. //>>excludeEnd("ctx");
  64806. $7=self._collection();
  64807. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64808. $ctx1.sendIdx["collection"]=4;
  64809. //>>excludeEnd("ctx");
  64810. self._assert_equals_($5,$7);
  64811. self._should_raise_((function(){
  64812. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64813. return $core.withContext(function($ctx2) {
  64814. //>>excludeEnd("ctx");
  64815. return $recv(self._collection())._first_((33));
  64816. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64817. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  64818. //>>excludeEnd("ctx");
  64819. }),$Error());
  64820. return self;
  64821. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64822. }, function($ctx1) {$ctx1.fill(self,"testFirstN",{},$globals.SequenceableCollectionTest)});
  64823. //>>excludeEnd("ctx");
  64824. },
  64825. //>>excludeStart("ide", pragmas.excludeIdeData);
  64826. args: [],
  64827. 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",
  64828. referencedClasses: ["Error"],
  64829. //>>excludeEnd("ide");
  64830. messageSends: ["assert:equals:", "first:", "collection", "collectionFirstTwo", "new", "collectionClass", "collectionSize", "should:raise:"]
  64831. }),
  64832. $globals.SequenceableCollectionTest);
  64833. $core.addMethod(
  64834. $core.method({
  64835. selector: "testFourth",
  64836. protocol: 'tests',
  64837. fn: function (){
  64838. var self=this;
  64839. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64840. return $core.withContext(function($ctx1) {
  64841. //>>excludeEnd("ctx");
  64842. var $2,$1;
  64843. $2=self._collection();
  64844. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64845. $ctx1.sendIdx["collection"]=1;
  64846. //>>excludeEnd("ctx");
  64847. $1=$recv($2)._fourth();
  64848. self._assert_equals_($1,$recv(self._collection())._at_((4)));
  64849. return self;
  64850. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64851. }, function($ctx1) {$ctx1.fill(self,"testFourth",{},$globals.SequenceableCollectionTest)});
  64852. //>>excludeEnd("ctx");
  64853. },
  64854. //>>excludeStart("ide", pragmas.excludeIdeData);
  64855. args: [],
  64856. source: "testFourth\x0a\x09self assert: (self collection fourth) equals: (self collection at: 4)",
  64857. referencedClasses: [],
  64858. //>>excludeEnd("ide");
  64859. messageSends: ["assert:equals:", "fourth", "collection", "at:"]
  64860. }),
  64861. $globals.SequenceableCollectionTest);
  64862. $core.addMethod(
  64863. $core.method({
  64864. selector: "testIndexOfStartingAt",
  64865. protocol: 'tests',
  64866. fn: function (){
  64867. var self=this;
  64868. var jsNull;
  64869. function $JSON(){return $globals.JSON||(typeof JSON=="undefined"?nil:JSON)}
  64870. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64871. return $core.withContext(function($ctx1) {
  64872. //>>excludeEnd("ctx");
  64873. var $2,$1,$4,$3;
  64874. jsNull=$recv($JSON())._parse_("null");
  64875. self._samplesDo_((function(index,value){
  64876. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64877. return $core.withContext(function($ctx2) {
  64878. //>>excludeEnd("ctx");
  64879. $2=self._collection();
  64880. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64881. $ctx2.sendIdx["collection"]=1;
  64882. //>>excludeEnd("ctx");
  64883. $1=$recv($2)._indexOf_startingAt_(value,(1));
  64884. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64885. $ctx2.sendIdx["indexOf:startingAt:"]=1;
  64886. //>>excludeEnd("ctx");
  64887. self._assert_equals_($1,index);
  64888. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64889. $ctx2.sendIdx["assert:equals:"]=1;
  64890. //>>excludeEnd("ctx");
  64891. $4=self._collection();
  64892. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64893. $ctx2.sendIdx["collection"]=2;
  64894. //>>excludeEnd("ctx");
  64895. $3=$recv($4)._indexOf_startingAt_(value,index);
  64896. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64897. $ctx2.sendIdx["indexOf:startingAt:"]=2;
  64898. //>>excludeEnd("ctx");
  64899. self._assert_equals_($3,index);
  64900. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64901. $ctx2.sendIdx["assert:equals:"]=2;
  64902. //>>excludeEnd("ctx");
  64903. return self._assert_equals_($recv(self._collection())._indexOf_startingAt_(value,$recv(index).__plus((1))),(0));
  64904. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64905. }, function($ctx2) {$ctx2.fillBlock({index:index,value:value},$ctx1,1)});
  64906. //>>excludeEnd("ctx");
  64907. }));
  64908. return self;
  64909. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64910. }, function($ctx1) {$ctx1.fill(self,"testIndexOfStartingAt",{jsNull:jsNull},$globals.SequenceableCollectionTest)});
  64911. //>>excludeEnd("ctx");
  64912. },
  64913. //>>excludeStart("ide", pragmas.excludeIdeData);
  64914. args: [],
  64915. 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 ]",
  64916. referencedClasses: ["JSON"],
  64917. //>>excludeEnd("ide");
  64918. messageSends: ["parse:", "samplesDo:", "assert:equals:", "indexOf:startingAt:", "collection", "+"]
  64919. }),
  64920. $globals.SequenceableCollectionTest);
  64921. $core.addMethod(
  64922. $core.method({
  64923. selector: "testIndexOfStartingAtWithNull",
  64924. protocol: 'tests',
  64925. fn: function (){
  64926. var self=this;
  64927. var jsNull;
  64928. function $JSON(){return $globals.JSON||(typeof JSON=="undefined"?nil:JSON)}
  64929. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64930. return $core.withContext(function($ctx1) {
  64931. //>>excludeEnd("ctx");
  64932. var $1,$2;
  64933. jsNull=$recv($JSON())._parse_("null");
  64934. self._samplesDo_((function(index,value){
  64935. var collection;
  64936. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64937. return $core.withContext(function($ctx2) {
  64938. //>>excludeEnd("ctx");
  64939. collection=self._collection();
  64940. collection;
  64941. $recv(collection)._at_put_(index,jsNull);
  64942. $1=$recv(collection)._indexOf_startingAt_(jsNull,(1));
  64943. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64944. $ctx2.sendIdx["indexOf:startingAt:"]=1;
  64945. //>>excludeEnd("ctx");
  64946. self._assert_equals_($1,index);
  64947. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64948. $ctx2.sendIdx["assert:equals:"]=1;
  64949. //>>excludeEnd("ctx");
  64950. $2=$recv(collection)._indexOf_startingAt_(jsNull,index);
  64951. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64952. $ctx2.sendIdx["indexOf:startingAt:"]=2;
  64953. //>>excludeEnd("ctx");
  64954. self._assert_equals_($2,index);
  64955. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64956. $ctx2.sendIdx["assert:equals:"]=2;
  64957. //>>excludeEnd("ctx");
  64958. return self._assert_equals_($recv(collection)._indexOf_startingAt_(jsNull,$recv(index).__plus((1))),(0));
  64959. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64960. }, function($ctx2) {$ctx2.fillBlock({index:index,value:value,collection:collection},$ctx1,1)});
  64961. //>>excludeEnd("ctx");
  64962. }));
  64963. return self;
  64964. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64965. }, function($ctx1) {$ctx1.fill(self,"testIndexOfStartingAtWithNull",{jsNull:jsNull},$globals.SequenceableCollectionTest)});
  64966. //>>excludeEnd("ctx");
  64967. },
  64968. //>>excludeStart("ide", pragmas.excludeIdeData);
  64969. args: [],
  64970. 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 ]",
  64971. referencedClasses: ["JSON"],
  64972. //>>excludeEnd("ide");
  64973. messageSends: ["parse:", "samplesDo:", "collection", "at:put:", "assert:equals:", "indexOf:startingAt:", "+"]
  64974. }),
  64975. $globals.SequenceableCollectionTest);
  64976. $core.addMethod(
  64977. $core.method({
  64978. selector: "testLast",
  64979. protocol: 'tests',
  64980. fn: function (){
  64981. var self=this;
  64982. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64983. return $core.withContext(function($ctx1) {
  64984. //>>excludeEnd("ctx");
  64985. self._assert_equals_($recv(self._collection())._last(),self._collectionLast());
  64986. return self;
  64987. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  64988. }, function($ctx1) {$ctx1.fill(self,"testLast",{},$globals.SequenceableCollectionTest)});
  64989. //>>excludeEnd("ctx");
  64990. },
  64991. //>>excludeStart("ide", pragmas.excludeIdeData);
  64992. args: [],
  64993. source: "testLast\x0a\x09self assert: self collection last equals: self collectionLast",
  64994. referencedClasses: [],
  64995. //>>excludeEnd("ide");
  64996. messageSends: ["assert:equals:", "last", "collection", "collectionLast"]
  64997. }),
  64998. $globals.SequenceableCollectionTest);
  64999. $core.addMethod(
  65000. $core.method({
  65001. selector: "testLastN",
  65002. protocol: 'tests',
  65003. fn: function (){
  65004. var self=this;
  65005. function $Error(){return $globals.Error||(typeof Error=="undefined"?nil:Error)}
  65006. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  65007. return $core.withContext(function($ctx1) {
  65008. //>>excludeEnd("ctx");
  65009. var $2,$1,$4,$3,$6,$5,$7;
  65010. $2=self._collection();
  65011. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  65012. $ctx1.sendIdx["collection"]=1;
  65013. //>>excludeEnd("ctx");
  65014. $1=$recv($2)._last_((2));
  65015. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  65016. $ctx1.sendIdx["last:"]=1;
  65017. //>>excludeEnd("ctx");
  65018. self._assert_equals_($1,self._collectionLastTwo());
  65019. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  65020. $ctx1.sendIdx["assert:equals:"]=1;
  65021. //>>excludeEnd("ctx");
  65022. $4=self._collection();
  65023. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  65024. $ctx1.sendIdx["collection"]=2;
  65025. //>>excludeEnd("ctx");
  65026. $3=$recv($4)._last_((0));
  65027. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  65028. $ctx1.sendIdx["last:"]=2;
  65029. //>>excludeEnd("ctx");
  65030. self._assert_equals_($3,$recv(self._collectionClass())._new());
  65031. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  65032. $ctx1.sendIdx["assert:equals:"]=2;
  65033. //>>excludeEnd("ctx");
  65034. $6=self._collection();
  65035. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  65036. $ctx1.sendIdx["collection"]=3;
  65037. //>>excludeEnd("ctx");
  65038. $5=$recv($6)._last_(self._collectionSize());
  65039. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  65040. $ctx1.sendIdx["last:"]=3;
  65041. //>>excludeEnd("ctx");
  65042. $7=self._collection();
  65043. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  65044. $ctx1.sendIdx["collection"]=4;
  65045. //>>excludeEnd("ctx");
  65046. self._assert_equals_($5,$7);
  65047. self._should_raise_((function(){
  65048. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  65049. return $core.withContext(function($ctx2) {
  65050. //>>excludeEnd("ctx");
  65051. return $recv(self._collection())._last_((33));
  65052. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  65053. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  65054. //>>excludeEnd("ctx");
  65055. }),$Error());
  65056. return self;
  65057. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  65058. }, function($ctx1) {$ctx1.fill(self,"testLastN",{},$globals.SequenceableCollectionTest)});
  65059. //>>excludeEnd("ctx");
  65060. },
  65061. //>>excludeStart("ide", pragmas.excludeIdeData);
  65062. args: [],
  65063. 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",
  65064. referencedClasses: ["Error"],
  65065. //>>excludeEnd("ide");
  65066. messageSends: ["assert:equals:", "last:", "collection", "collectionLastTwo", "new", "collectionClass", "collectionSize", "should:raise:"]
  65067. }),
  65068. $globals.SequenceableCollectionTest);
  65069. $core.addMethod(
  65070. $core.method({
  65071. selector: "testSecond",
  65072. protocol: 'tests',
  65073. fn: function (){
  65074. var self=this;
  65075. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  65076. return $core.withContext(function($ctx1) {
  65077. //>>excludeEnd("ctx");
  65078. var $2,$1;
  65079. $2=self._collection();
  65080. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  65081. $ctx1.sendIdx["collection"]=1;
  65082. //>>excludeEnd("ctx");
  65083. $1=$recv($2)._second();
  65084. self._assert_equals_($1,$recv(self._collection())._at_((2)));
  65085. return self;
  65086. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  65087. }, function($ctx1) {$ctx1.fill(self,"testSecond",{},$globals.SequenceableCollectionTest)});
  65088. //>>excludeEnd("ctx");
  65089. },
  65090. //>>excludeStart("ide", pragmas.excludeIdeData);
  65091. args: [],
  65092. source: "testSecond\x0a\x09self assert: (self collection second) equals: (self collection at: 2)",
  65093. referencedClasses: [],
  65094. //>>excludeEnd("ide");
  65095. messageSends: ["assert:equals:", "second", "collection", "at:"]
  65096. }),
  65097. $globals.SequenceableCollectionTest);
  65098. $core.addMethod(
  65099. $core.method({
  65100. selector: "testThird",
  65101. protocol: 'tests',
  65102. fn: function (){
  65103. var self=this;
  65104. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  65105. return $core.withContext(function($ctx1) {
  65106. //>>excludeEnd("ctx");
  65107. var $2,$1;
  65108. $2=self._collection();
  65109. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  65110. $ctx1.sendIdx["collection"]=1;
  65111. //>>excludeEnd("ctx");
  65112. $1=$recv($2)._third();
  65113. self._assert_equals_($1,$recv(self._collection())._at_((3)));
  65114. return self;
  65115. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  65116. }, function($ctx1) {$ctx1.fill(self,"testThird",{},$globals.SequenceableCollectionTest)});
  65117. //>>excludeEnd("ctx");
  65118. },
  65119. //>>excludeStart("ide", pragmas.excludeIdeData);
  65120. args: [],
  65121. source: "testThird\x0a\x09self assert: (self collection third) equals: (self collection at: 3)",
  65122. referencedClasses: [],
  65123. //>>excludeEnd("ide");
  65124. messageSends: ["assert:equals:", "third", "collection", "at:"]
  65125. }),
  65126. $globals.SequenceableCollectionTest);
  65127. $core.addClass('ArrayTest', $globals.SequenceableCollectionTest, [], 'Kernel-Tests');
  65128. $core.addMethod(
  65129. $core.method({
  65130. selector: "collection",
  65131. protocol: 'fixture',
  65132. fn: function (){
  65133. var self=this;
  65134. var $1;
  65135. $1=[(1), (2), (3), (-4)];
  65136. return $1;
  65137. },
  65138. //>>excludeStart("ide", pragmas.excludeIdeData);
  65139. args: [],
  65140. source: "collection\x0a\x09^ #(1 2 3 -4)",
  65141. referencedClasses: [],
  65142. //>>excludeEnd("ide");
  65143. messageSends: []
  65144. }),
  65145. $globals.ArrayTest);
  65146. $core.addMethod(
  65147. $core.method({
  65148. selector: "collectionFirst",
  65149. protocol: 'fixture',
  65150. fn: function (){
  65151. var self=this;
  65152. return (1);
  65153. },
  65154. //>>excludeStart("ide", pragmas.excludeIdeData);
  65155. args: [],
  65156. source: "collectionFirst\x0a\x09^ 1",
  65157. referencedClasses: [],
  65158. //>>excludeEnd("ide");
  65159. messageSends: []
  65160. }),
  65161. $globals.ArrayTest);
  65162. $core.addMethod(
  65163. $core.method({
  65164. selector: "collectionFirstTwo",
  65165. protocol: 'fixture',
  65166. fn: function (){
  65167. var self=this;
  65168. var $1;
  65169. $1=[(1), (2)];
  65170. return $1;
  65171. },
  65172. //>>excludeStart("ide", pragmas.excludeIdeData);
  65173. args: [],
  65174. source: "collectionFirstTwo\x0a\x09^ #(1 2)",
  65175. referencedClasses: [],
  65176. //>>excludeEnd("ide");
  65177. messageSends: []
  65178. }),
  65179. $globals.ArrayTest);
  65180. $core.addMethod(
  65181. $core.method({
  65182. selector: "collectionLast",
  65183. protocol: 'fixture',
  65184. fn: function (){
  65185. var self=this;
  65186. return (-4);
  65187. },
  65188. //>>excludeStart("ide", pragmas.excludeIdeData);
  65189. args: [],
  65190. source: "collectionLast\x0a\x09^ -4",
  65191. referencedClasses: [],
  65192. //>>excludeEnd("ide");
  65193. messageSends: []
  65194. }),
  65195. $globals.ArrayTest);
  65196. $core.addMethod(
  65197. $core.method({
  65198. selector: "collectionLastTwo",
  65199. protocol: 'fixture',
  65200. fn: function (){
  65201. var self=this;
  65202. var $1;
  65203. $1=[(3), (-4)];
  65204. return $1;
  65205. },
  65206. //>>excludeStart("ide", pragmas.excludeIdeData);
  65207. args: [],
  65208. source: "collectionLastTwo\x0a\x09^ #(3 -4)",
  65209. referencedClasses: [],
  65210. //>>excludeEnd("ide");
  65211. messageSends: []
  65212. }),
  65213. $globals.ArrayTest);
  65214. $core.addMethod(
  65215. $core.method({
  65216. selector: "collectionOfPrintStrings",
  65217. protocol: 'fixture',
  65218. fn: function (){
  65219. var self=this;
  65220. var $1;
  65221. $1=["1", "2", "3", "-4"];
  65222. return $1;
  65223. },
  65224. //>>excludeStart("ide", pragmas.excludeIdeData);
  65225. args: [],
  65226. source: "collectionOfPrintStrings\x0a\x09^ #('1' '2' '3' '-4')",
  65227. referencedClasses: [],
  65228. //>>excludeEnd("ide");
  65229. messageSends: []
  65230. }),
  65231. $globals.ArrayTest);
  65232. $core.addMethod(
  65233. $core.method({
  65234. selector: "collectionSize",
  65235. protocol: 'fixture',
  65236. fn: function (){
  65237. var self=this;
  65238. return (4);
  65239. },
  65240. //>>excludeStart("ide", pragmas.excludeIdeData);
  65241. args: [],
  65242. source: "collectionSize\x0a\x09^ 4",
  65243. referencedClasses: [],
  65244. //>>excludeEnd("ide");
  65245. messageSends: []
  65246. }),
  65247. $globals.ArrayTest);
  65248. $core.addMethod(
  65249. $core.method({
  65250. selector: "collectionWithDuplicates",
  65251. protocol: 'fixture',
  65252. fn: function (){
  65253. var self=this;
  65254. var $1;
  65255. $1=["a", "b", "c", (1), (2), (1), "a"];
  65256. return $1;
  65257. },
  65258. //>>excludeStart("ide", pragmas.excludeIdeData);
  65259. args: [],
  65260. source: "collectionWithDuplicates\x0a\x09^ #('a' 'b' 'c' 1 2 1 'a')",
  65261. referencedClasses: [],
  65262. //>>excludeEnd("ide");
  65263. messageSends: []
  65264. }),
  65265. $globals.ArrayTest);
  65266. $core.addMethod(
  65267. $core.method({
  65268. selector: "collectionWithNewValue",
  65269. protocol: 'fixture',
  65270. fn: function (){
  65271. var self=this;
  65272. var $1;
  65273. $1=[(1), (2), (3), (-4), "N"];
  65274. return $1;
  65275. },
  65276. //>>excludeStart("ide", pragmas.excludeIdeData);
  65277. args: [],
  65278. source: "collectionWithNewValue\x0a\x09^ #(1 2 3 -4 'N')",
  65279. referencedClasses: [],
  65280. //>>excludeEnd("ide");
  65281. messageSends: []
  65282. }),
  65283. $globals.ArrayTest);
  65284. $core.addMethod(
  65285. $core.method({
  65286. selector: "sampleNewIndex",
  65287. protocol: 'fixture',
  65288. fn: function (){
  65289. var self=this;
  65290. return (5);
  65291. },
  65292. //>>excludeStart("ide", pragmas.excludeIdeData);
  65293. args: [],
  65294. source: "sampleNewIndex\x0a\x09^ 5",
  65295. referencedClasses: [],
  65296. //>>excludeEnd("ide");
  65297. messageSends: []
  65298. }),
  65299. $globals.ArrayTest);
  65300. $core.addMethod(
  65301. $core.method({
  65302. selector: "samplesDo:",
  65303. protocol: 'fixture',
  65304. fn: function (aBlock){
  65305. var self=this;
  65306. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  65307. return $core.withContext(function($ctx1) {
  65308. //>>excludeEnd("ctx");
  65309. (
  65310. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  65311. $ctx1.supercall = true,
  65312. //>>excludeEnd("ctx");
  65313. $globals.ArrayTest.superclass.fn.prototype._samplesDo_.apply($recv(self), [aBlock]));
  65314. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  65315. $ctx1.supercall = false;
  65316. //>>excludeEnd("ctx");;
  65317. $recv(aBlock)._value_value_((3),(3));
  65318. return self;
  65319. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  65320. }, function($ctx1) {$ctx1.fill(self,"samplesDo:",{aBlock:aBlock},$globals.ArrayTest)});
  65321. //>>excludeEnd("ctx");
  65322. },
  65323. //>>excludeStart("ide", pragmas.excludeIdeData);
  65324. args: ["aBlock"],
  65325. source: "samplesDo: aBlock\x0a\x09super samplesDo: aBlock.\x0a\x09aBlock value: 3 value: 3.",
  65326. referencedClasses: [],
  65327. //>>excludeEnd("ide");
  65328. messageSends: ["samplesDo:", "value:value:"]
  65329. }),
  65330. $globals.ArrayTest);
  65331. $core.addMethod(
  65332. $core.method({
  65333. selector: "testAdd",
  65334. protocol: 'tests',
  65335. fn: function (){
  65336. var self=this;
  65337. var array;
  65338. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  65339. return $core.withContext(function($ctx1) {
  65340. //>>excludeEnd("ctx");
  65341. array=self._collection();
  65342. $recv(array)._add_((6));
  65343. self._assert_equals_($recv(array)._last(),(6));
  65344. return self;
  65345. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  65346. }, function($ctx1) {$ctx1.fill(self,"testAdd",{array:array},$globals.ArrayTest)});
  65347. //>>excludeEnd("ctx");
  65348. },
  65349. //>>excludeStart("ide", pragmas.excludeIdeData);
  65350. args: [],
  65351. source: "testAdd \x0a\x09| array | \x0a\x09array := self collection. \x0a\x09array add: 6.\x0a\x09\x0a\x09self assert: array last equals: 6",
  65352. referencedClasses: [],
  65353. //>>excludeEnd("ide");
  65354. messageSends: ["collection", "add:", "assert:equals:", "last"]
  65355. }),
  65356. $globals.ArrayTest);
  65357. $core.addMethod(
  65358. $core.method({
  65359. selector: "testAddFirst",
  65360. protocol: 'tests',
  65361. fn: function (){
  65362. var self=this;
  65363. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  65364. return $core.withContext(function($ctx1) {
  65365. //>>excludeEnd("ctx");
  65366. var $1,$2;
  65367. $1=self._collection();
  65368. $recv($1)._addFirst_((0));
  65369. $2=$recv($1)._yourself();
  65370. self._assert_equals_($recv($2)._first(),(0));
  65371. return self;
  65372. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  65373. }, function($ctx1) {$ctx1.fill(self,"testAddFirst",{},$globals.ArrayTest)});
  65374. //>>excludeEnd("ctx");
  65375. },
  65376. //>>excludeStart("ide", pragmas.excludeIdeData);
  65377. args: [],
  65378. source: "testAddFirst\x0a\x09self assert: (self collection addFirst: 0; yourself) first equals: 0",
  65379. referencedClasses: [],
  65380. //>>excludeEnd("ide");
  65381. messageSends: ["assert:equals:", "first", "addFirst:", "collection", "yourself"]
  65382. }),
  65383. $globals.ArrayTest);
  65384. $core.addMethod(
  65385. $core.method({
  65386. selector: "testPrintString",
  65387. protocol: 'tests',
  65388. fn: function (){
  65389. var self=this;
  65390. var array;
  65391. function $Array(){return $globals.Array||(typeof Array=="undefined"?nil:Array)}
  65392. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  65393. return $core.withContext(function($ctx1) {
  65394. //>>excludeEnd("ctx");
  65395. var $1,$2,$3,$4,$5,$6,$7,$8,$9;
  65396. array=$recv($Array())._new();
  65397. $1=$recv(array)._printString();
  65398. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  65399. $ctx1.sendIdx["printString"]=1;
  65400. //>>excludeEnd("ctx");
  65401. self._assert_equals_($1,"an Array ()");
  65402. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  65403. $ctx1.sendIdx["assert:equals:"]=1;
  65404. //>>excludeEnd("ctx");
  65405. $2=array;
  65406. $recv($2)._add_((1));
  65407. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  65408. $ctx1.sendIdx["add:"]=1;
  65409. //>>excludeEnd("ctx");
  65410. $3=$recv($2)._add_((3));
  65411. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  65412. $ctx1.sendIdx["add:"]=2;
  65413. //>>excludeEnd("ctx");
  65414. $4=$recv(array)._printString();
  65415. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  65416. $ctx1.sendIdx["printString"]=2;
  65417. //>>excludeEnd("ctx");
  65418. self._assert_equals_($4,"an Array (1 3)");
  65419. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  65420. $ctx1.sendIdx["assert:equals:"]=2;
  65421. //>>excludeEnd("ctx");
  65422. $recv(array)._add_("foo");
  65423. $5=$recv(array)._printString();
  65424. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  65425. $ctx1.sendIdx["printString"]=3;
  65426. //>>excludeEnd("ctx");
  65427. self._assert_equals_($5,"an Array (1 3 'foo')");
  65428. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  65429. $ctx1.sendIdx["assert:equals:"]=3;
  65430. //>>excludeEnd("ctx");
  65431. $6=array;
  65432. $recv($6)._remove_((1));
  65433. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  65434. $ctx1.sendIdx["remove:"]=1;
  65435. //>>excludeEnd("ctx");
  65436. $7=$recv($6)._remove_((3));
  65437. $8=$recv(array)._printString();
  65438. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  65439. $ctx1.sendIdx["printString"]=4;
  65440. //>>excludeEnd("ctx");
  65441. self._assert_equals_($8,"an Array ('foo')");
  65442. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  65443. $ctx1.sendIdx["assert:equals:"]=4;
  65444. //>>excludeEnd("ctx");
  65445. $recv(array)._addLast_((3));
  65446. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  65447. $ctx1.sendIdx["addLast:"]=1;
  65448. //>>excludeEnd("ctx");
  65449. $9=$recv(array)._printString();
  65450. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  65451. $ctx1.sendIdx["printString"]=5;
  65452. //>>excludeEnd("ctx");
  65453. self._assert_equals_($9,"an Array ('foo' 3)");
  65454. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  65455. $ctx1.sendIdx["assert:equals:"]=5;
  65456. //>>excludeEnd("ctx");
  65457. $recv(array)._addLast_((3));
  65458. self._assert_equals_($recv(array)._printString(),"an Array ('foo' 3 3)");
  65459. return self;
  65460. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  65461. }, function($ctx1) {$ctx1.fill(self,"testPrintString",{array:array},$globals.ArrayTest)});
  65462. //>>excludeEnd("ctx");
  65463. },
  65464. //>>excludeStart("ide", pragmas.excludeIdeData);
  65465. args: [],
  65466. 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)'.",
  65467. referencedClasses: ["Array"],
  65468. //>>excludeEnd("ide");
  65469. messageSends: ["new", "assert:equals:", "printString", "add:", "remove:", "addLast:"]
  65470. }),
  65471. $globals.ArrayTest);
  65472. $core.addMethod(
  65473. $core.method({
  65474. selector: "testRemove",
  65475. protocol: 'tests',
  65476. fn: function (){
  65477. var self=this;
  65478. var array;
  65479. function $Error(){return $globals.Error||(typeof Error=="undefined"?nil:Error)}
  65480. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  65481. return $core.withContext(function($ctx1) {
  65482. //>>excludeEnd("ctx");
  65483. array=[(1), (2), (3), (4), (5)];
  65484. $recv(array)._remove_((3));
  65485. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  65486. $ctx1.sendIdx["remove:"]=1;
  65487. //>>excludeEnd("ctx");
  65488. self._assert_equals_(array,[(1), (2), (4), (5)]);
  65489. self._should_raise_((function(){
  65490. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  65491. return $core.withContext(function($ctx2) {
  65492. //>>excludeEnd("ctx");
  65493. return $recv(array)._remove_((3));
  65494. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  65495. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  65496. //>>excludeEnd("ctx");
  65497. }),$Error());
  65498. return self;
  65499. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  65500. }, function($ctx1) {$ctx1.fill(self,"testRemove",{array:array},$globals.ArrayTest)});
  65501. //>>excludeEnd("ctx");
  65502. },
  65503. //>>excludeStart("ide", pragmas.excludeIdeData);
  65504. args: [],
  65505. 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",
  65506. referencedClasses: ["Error"],
  65507. //>>excludeEnd("ide");
  65508. messageSends: ["remove:", "assert:equals:", "should:raise:"]
  65509. }),
  65510. $globals.ArrayTest);
  65511. $core.addMethod(
  65512. $core.method({
  65513. selector: "testRemoveFromTo",
  65514. protocol: 'tests',
  65515. fn: function (){
  65516. var self=this;
  65517. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  65518. return $core.withContext(function($ctx1) {
  65519. //>>excludeEnd("ctx");
  65520. var $1,$2;
  65521. $1=[(1), (2), (3), (4)]._removeFrom_to_((1),(3));
  65522. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  65523. $ctx1.sendIdx["removeFrom:to:"]=1;
  65524. //>>excludeEnd("ctx");
  65525. self._assert_equals_($1,[(4)]);
  65526. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  65527. $ctx1.sendIdx["assert:equals:"]=1;
  65528. //>>excludeEnd("ctx");
  65529. $2=[(1), (2), (3), (4)]._removeFrom_to_((2),(3));
  65530. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  65531. $ctx1.sendIdx["removeFrom:to:"]=2;
  65532. //>>excludeEnd("ctx");
  65533. self._assert_equals_($2,[(1), (4)]);
  65534. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  65535. $ctx1.sendIdx["assert:equals:"]=2;
  65536. //>>excludeEnd("ctx");
  65537. self._assert_equals_([(1), (2), (3), (4)]._removeFrom_to_((2),(4)),[(1)]);
  65538. return self;
  65539. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  65540. }, function($ctx1) {$ctx1.fill(self,"testRemoveFromTo",{},$globals.ArrayTest)});
  65541. //>>excludeEnd("ctx");
  65542. },
  65543. //>>excludeStart("ide", pragmas.excludeIdeData);
  65544. args: [],
  65545. 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)",
  65546. referencedClasses: [],
  65547. //>>excludeEnd("ide");
  65548. messageSends: ["assert:equals:", "removeFrom:to:"]
  65549. }),
  65550. $globals.ArrayTest);
  65551. $core.addMethod(
  65552. $core.method({
  65553. selector: "testRemoveIndex",
  65554. protocol: 'tests',
  65555. fn: function (){
  65556. var self=this;
  65557. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  65558. return $core.withContext(function($ctx1) {
  65559. //>>excludeEnd("ctx");
  65560. var $1,$2;
  65561. $1=[(1), (2), (3), (4)]._removeIndex_((2));
  65562. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  65563. $ctx1.sendIdx["removeIndex:"]=1;
  65564. //>>excludeEnd("ctx");
  65565. self._assert_equals_($1,[(1), (3), (4)]);
  65566. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  65567. $ctx1.sendIdx["assert:equals:"]=1;
  65568. //>>excludeEnd("ctx");
  65569. $2=[(1), (2), (3), (4)]._removeIndex_((1));
  65570. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  65571. $ctx1.sendIdx["removeIndex:"]=2;
  65572. //>>excludeEnd("ctx");
  65573. self._assert_equals_($2,[(2), (3), (4)]);
  65574. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  65575. $ctx1.sendIdx["assert:equals:"]=2;
  65576. //>>excludeEnd("ctx");
  65577. self._assert_equals_(["hello"]._removeIndex_((1)),[]);
  65578. return self;
  65579. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  65580. }, function($ctx1) {$ctx1.fill(self,"testRemoveIndex",{},$globals.ArrayTest)});
  65581. //>>excludeEnd("ctx");
  65582. },
  65583. //>>excludeStart("ide", pragmas.excludeIdeData);
  65584. args: [],
  65585. 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: #()",
  65586. referencedClasses: [],
  65587. //>>excludeEnd("ide");
  65588. messageSends: ["assert:equals:", "removeIndex:"]
  65589. }),
  65590. $globals.ArrayTest);
  65591. $core.addMethod(
  65592. $core.method({
  65593. selector: "testRemoveLast",
  65594. protocol: 'tests',
  65595. fn: function (){
  65596. var self=this;
  65597. var array;
  65598. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  65599. return $core.withContext(function($ctx1) {
  65600. //>>excludeEnd("ctx");
  65601. array=[(1), (2)];
  65602. $recv(array)._removeLast();
  65603. self._assert_equals_($recv(array)._last(),(1));
  65604. return self;
  65605. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  65606. }, function($ctx1) {$ctx1.fill(self,"testRemoveLast",{array:array},$globals.ArrayTest)});
  65607. //>>excludeEnd("ctx");
  65608. },
  65609. //>>excludeStart("ide", pragmas.excludeIdeData);
  65610. args: [],
  65611. source: "testRemoveLast \x0a\x09| array |\x0a\x09array := #(1 2). \x0a\x09array removeLast.\x0a\x09\x0a\x09self assert: array last equals: 1",
  65612. referencedClasses: [],
  65613. //>>excludeEnd("ide");
  65614. messageSends: ["removeLast", "assert:equals:", "last"]
  65615. }),
  65616. $globals.ArrayTest);
  65617. $core.addMethod(
  65618. $core.method({
  65619. selector: "testReversed",
  65620. protocol: 'tests',
  65621. fn: function (){
  65622. var self=this;
  65623. var array;
  65624. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  65625. return $core.withContext(function($ctx1) {
  65626. //>>excludeEnd("ctx");
  65627. array=[(5), (4), (3), (2), (1)];
  65628. self._assert_equals_($recv(array)._reversed(),[(1), (2), (3), (4), (5)]);
  65629. return self;
  65630. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  65631. }, function($ctx1) {$ctx1.fill(self,"testReversed",{array:array},$globals.ArrayTest)});
  65632. //>>excludeEnd("ctx");
  65633. },
  65634. //>>excludeStart("ide", pragmas.excludeIdeData);
  65635. args: [],
  65636. source: "testReversed\x0a\x09|array|\x0a\x09array := #(5 4 3 2 1). \x0a\x09self assert: (array reversed) equals: #(1 2 3 4 5)",
  65637. referencedClasses: [],
  65638. //>>excludeEnd("ide");
  65639. messageSends: ["assert:equals:", "reversed"]
  65640. }),
  65641. $globals.ArrayTest);
  65642. $core.addMethod(
  65643. $core.method({
  65644. selector: "testSort",
  65645. protocol: 'tests',
  65646. fn: function (){
  65647. var self=this;
  65648. var array;
  65649. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  65650. return $core.withContext(function($ctx1) {
  65651. //>>excludeEnd("ctx");
  65652. array=[(10), (1), (5)];
  65653. $recv(array)._sort();
  65654. self._assert_equals_(array,[(1), (5), (10)]);
  65655. return self;
  65656. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  65657. }, function($ctx1) {$ctx1.fill(self,"testSort",{array:array},$globals.ArrayTest)});
  65658. //>>excludeEnd("ctx");
  65659. },
  65660. //>>excludeStart("ide", pragmas.excludeIdeData);
  65661. args: [],
  65662. source: "testSort\x0a\x09| array |\x0a\x09array := #(10 1 5). \x0a\x09array sort.\x0a\x09self assert: array equals: #(1 5 10)",
  65663. referencedClasses: [],
  65664. //>>excludeEnd("ide");
  65665. messageSends: ["sort", "assert:equals:"]
  65666. }),
  65667. $globals.ArrayTest);
  65668. $core.addMethod(
  65669. $core.method({
  65670. selector: "collectionClass",
  65671. protocol: 'fixture',
  65672. fn: function (){
  65673. var self=this;
  65674. function $Array(){return $globals.Array||(typeof Array=="undefined"?nil:Array)}
  65675. return $Array();
  65676. },
  65677. //>>excludeStart("ide", pragmas.excludeIdeData);
  65678. args: [],
  65679. source: "collectionClass\x0a\x09^ Array",
  65680. referencedClasses: ["Array"],
  65681. //>>excludeEnd("ide");
  65682. messageSends: []
  65683. }),
  65684. $globals.ArrayTest.klass);
  65685. $core.addClass('StringTest', $globals.SequenceableCollectionTest, [], 'Kernel-Tests');
  65686. $core.addMethod(
  65687. $core.method({
  65688. selector: "collection",
  65689. protocol: 'fixture',
  65690. fn: function (){
  65691. var self=this;
  65692. return "helLo";
  65693. },
  65694. //>>excludeStart("ide", pragmas.excludeIdeData);
  65695. args: [],
  65696. source: "collection\x0a\x09^ 'helLo'",
  65697. referencedClasses: [],
  65698. //>>excludeEnd("ide");
  65699. messageSends: []
  65700. }),
  65701. $globals.StringTest);
  65702. $core.addMethod(
  65703. $core.method({
  65704. selector: "collectionFirst",
  65705. protocol: 'fixture',
  65706. fn: function (){
  65707. var self=this;
  65708. return "h";
  65709. },
  65710. //>>excludeStart("ide", pragmas.excludeIdeData);
  65711. args: [],
  65712. source: "collectionFirst\x0a\x09^ 'h'",
  65713. referencedClasses: [],
  65714. //>>excludeEnd("ide");
  65715. messageSends: []
  65716. }),
  65717. $globals.StringTest);
  65718. $core.addMethod(
  65719. $core.method({
  65720. selector: "collectionFirstTwo",
  65721. protocol: 'fixture',
  65722. fn: function (){
  65723. var self=this;
  65724. return "he";
  65725. },
  65726. //>>excludeStart("ide", pragmas.excludeIdeData);
  65727. args: [],
  65728. source: "collectionFirstTwo\x0a\x09^ 'he'",
  65729. referencedClasses: [],
  65730. //>>excludeEnd("ide");
  65731. messageSends: []
  65732. }),
  65733. $globals.StringTest);
  65734. $core.addMethod(
  65735. $core.method({
  65736. selector: "collectionLast",
  65737. protocol: 'fixture',
  65738. fn: function (){
  65739. var self=this;
  65740. return "o";
  65741. },
  65742. //>>excludeStart("ide", pragmas.excludeIdeData);
  65743. args: [],
  65744. source: "collectionLast\x0a\x09^ 'o'",
  65745. referencedClasses: [],
  65746. //>>excludeEnd("ide");
  65747. messageSends: []
  65748. }),
  65749. $globals.StringTest);
  65750. $core.addMethod(
  65751. $core.method({
  65752. selector: "collectionLastTwo",
  65753. protocol: 'fixture',
  65754. fn: function (){
  65755. var self=this;
  65756. return "Lo";
  65757. },
  65758. //>>excludeStart("ide", pragmas.excludeIdeData);
  65759. args: [],
  65760. source: "collectionLastTwo\x0a\x09^ 'Lo'",
  65761. referencedClasses: [],
  65762. //>>excludeEnd("ide");
  65763. messageSends: []
  65764. }),
  65765. $globals.StringTest);
  65766. $core.addMethod(
  65767. $core.method({
  65768. selector: "collectionOfPrintStrings",
  65769. protocol: 'fixture',
  65770. fn: function (){
  65771. var self=this;
  65772. return "'h''e''l''L''o'";
  65773. },
  65774. //>>excludeStart("ide", pragmas.excludeIdeData);
  65775. args: [],
  65776. source: "collectionOfPrintStrings\x0a\x09^ '''h''''e''''l''''L''''o'''",
  65777. referencedClasses: [],
  65778. //>>excludeEnd("ide");
  65779. messageSends: []
  65780. }),
  65781. $globals.StringTest);
  65782. $core.addMethod(
  65783. $core.method({
  65784. selector: "collectionSize",
  65785. protocol: 'fixture',
  65786. fn: function (){
  65787. var self=this;
  65788. return (5);
  65789. },
  65790. //>>excludeStart("ide", pragmas.excludeIdeData);
  65791. args: [],
  65792. source: "collectionSize\x0a\x09^ 5",
  65793. referencedClasses: [],
  65794. //>>excludeEnd("ide");
  65795. messageSends: []
  65796. }),
  65797. $globals.StringTest);
  65798. $core.addMethod(
  65799. $core.method({
  65800. selector: "collectionWithDuplicates",
  65801. protocol: 'fixture',
  65802. fn: function (){
  65803. var self=this;
  65804. return "abbaerte";
  65805. },
  65806. //>>excludeStart("ide", pragmas.excludeIdeData);
  65807. args: [],
  65808. source: "collectionWithDuplicates\x0a\x09^ 'abbaerte'",
  65809. referencedClasses: [],
  65810. //>>excludeEnd("ide");
  65811. messageSends: []
  65812. }),
  65813. $globals.StringTest);
  65814. $core.addMethod(
  65815. $core.method({
  65816. selector: "collectionWithNewValue",
  65817. protocol: 'fixture',
  65818. fn: function (){
  65819. var self=this;
  65820. return "helLoN";
  65821. },
  65822. //>>excludeStart("ide", pragmas.excludeIdeData);
  65823. args: [],
  65824. source: "collectionWithNewValue\x0a\x09^ 'helLoN'",
  65825. referencedClasses: [],
  65826. //>>excludeEnd("ide");
  65827. messageSends: []
  65828. }),
  65829. $globals.StringTest);
  65830. $core.addMethod(
  65831. $core.method({
  65832. selector: "sampleNewValueAsCollection",
  65833. protocol: 'fixture',
  65834. fn: function (){
  65835. var self=this;
  65836. return "N";
  65837. },
  65838. //>>excludeStart("ide", pragmas.excludeIdeData);
  65839. args: [],
  65840. source: "sampleNewValueAsCollection\x0a\x09^ 'N'",
  65841. referencedClasses: [],
  65842. //>>excludeEnd("ide");
  65843. messageSends: []
  65844. }),
  65845. $globals.StringTest);
  65846. $core.addMethod(
  65847. $core.method({
  65848. selector: "samplesDo:",
  65849. protocol: 'fixture',
  65850. fn: function (aBlock){
  65851. var self=this;
  65852. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  65853. return $core.withContext(function($ctx1) {
  65854. //>>excludeEnd("ctx");
  65855. (
  65856. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  65857. $ctx1.supercall = true,
  65858. //>>excludeEnd("ctx");
  65859. $globals.StringTest.superclass.fn.prototype._samplesDo_.apply($recv(self), [aBlock]));
  65860. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  65861. $ctx1.supercall = false;
  65862. //>>excludeEnd("ctx");;
  65863. $recv(aBlock)._value_value_((3),"l");
  65864. return self;
  65865. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  65866. }, function($ctx1) {$ctx1.fill(self,"samplesDo:",{aBlock:aBlock},$globals.StringTest)});
  65867. //>>excludeEnd("ctx");
  65868. },
  65869. //>>excludeStart("ide", pragmas.excludeIdeData);
  65870. args: ["aBlock"],
  65871. source: "samplesDo: aBlock\x0a\x09super samplesDo: aBlock.\x0a\x09aBlock value: 3 value: 'l'",
  65872. referencedClasses: [],
  65873. //>>excludeEnd("ide");
  65874. messageSends: ["samplesDo:", "value:value:"]
  65875. }),
  65876. $globals.StringTest);
  65877. $core.addMethod(
  65878. $core.method({
  65879. selector: "testAddAll",
  65880. protocol: 'tests',
  65881. fn: function (){
  65882. var self=this;
  65883. function $Error(){return $globals.Error||(typeof Error=="undefined"?nil:Error)}
  65884. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  65885. return $core.withContext(function($ctx1) {
  65886. //>>excludeEnd("ctx");
  65887. var $1;
  65888. self._should_raise_((function(){
  65889. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  65890. return $core.withContext(function($ctx2) {
  65891. //>>excludeEnd("ctx");
  65892. $1=self._collection();
  65893. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  65894. $ctx2.sendIdx["collection"]=1;
  65895. //>>excludeEnd("ctx");
  65896. return $recv($1)._addAll_(self._collection());
  65897. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  65898. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  65899. //>>excludeEnd("ctx");
  65900. }),$Error());
  65901. return self;
  65902. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  65903. }, function($ctx1) {$ctx1.fill(self,"testAddAll",{},$globals.StringTest)});
  65904. //>>excludeEnd("ctx");
  65905. },
  65906. //>>excludeStart("ide", pragmas.excludeIdeData);
  65907. args: [],
  65908. source: "testAddAll\x0a\x09\x22String instances are read-only\x22\x0a\x09self should: [ self collection addAll: self collection ] raise: Error",
  65909. referencedClasses: ["Error"],
  65910. //>>excludeEnd("ide");
  65911. messageSends: ["should:raise:", "addAll:", "collection"]
  65912. }),
  65913. $globals.StringTest);
  65914. $core.addMethod(
  65915. $core.method({
  65916. selector: "testAddRemove",
  65917. protocol: 'tests',
  65918. fn: function (){
  65919. var self=this;
  65920. function $Error(){return $globals.Error||(typeof Error=="undefined"?nil:Error)}
  65921. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  65922. return $core.withContext(function($ctx1) {
  65923. //>>excludeEnd("ctx");
  65924. self._should_raise_((function(){
  65925. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  65926. return $core.withContext(function($ctx2) {
  65927. //>>excludeEnd("ctx");
  65928. return "hello"._add_("a");
  65929. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  65930. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  65931. //>>excludeEnd("ctx");
  65932. }),$Error());
  65933. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  65934. $ctx1.sendIdx["should:raise:"]=1;
  65935. //>>excludeEnd("ctx");
  65936. self._should_raise_((function(){
  65937. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  65938. return $core.withContext(function($ctx2) {
  65939. //>>excludeEnd("ctx");
  65940. return "hello"._remove_("h");
  65941. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  65942. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
  65943. //>>excludeEnd("ctx");
  65944. }),$Error());
  65945. return self;
  65946. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  65947. }, function($ctx1) {$ctx1.fill(self,"testAddRemove",{},$globals.StringTest)});
  65948. //>>excludeEnd("ctx");
  65949. },
  65950. //>>excludeStart("ide", pragmas.excludeIdeData);
  65951. args: [],
  65952. source: "testAddRemove\x0a\x09self should: [ 'hello' add: 'a' ] raise: Error.\x0a\x09self should: [ 'hello' remove: 'h' ] raise: Error",
  65953. referencedClasses: ["Error"],
  65954. //>>excludeEnd("ide");
  65955. messageSends: ["should:raise:", "add:", "remove:"]
  65956. }),
  65957. $globals.StringTest);
  65958. $core.addMethod(
  65959. $core.method({
  65960. selector: "testAsArray",
  65961. protocol: 'tests',
  65962. fn: function (){
  65963. var self=this;
  65964. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  65965. return $core.withContext(function($ctx1) {
  65966. //>>excludeEnd("ctx");
  65967. self._assert_equals_("hello"._asArray(),["h", "e", "l", "l", "o"]);
  65968. return self;
  65969. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  65970. }, function($ctx1) {$ctx1.fill(self,"testAsArray",{},$globals.StringTest)});
  65971. //>>excludeEnd("ctx");
  65972. },
  65973. //>>excludeStart("ide", pragmas.excludeIdeData);
  65974. args: [],
  65975. source: "testAsArray\x0a\x09self assert: 'hello' asArray equals: #('h' 'e' 'l' 'l' 'o').",
  65976. referencedClasses: [],
  65977. //>>excludeEnd("ide");
  65978. messageSends: ["assert:equals:", "asArray"]
  65979. }),
  65980. $globals.StringTest);
  65981. $core.addMethod(
  65982. $core.method({
  65983. selector: "testAsLowerCase",
  65984. protocol: 'tests',
  65985. fn: function (){
  65986. var self=this;
  65987. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  65988. return $core.withContext(function($ctx1) {
  65989. //>>excludeEnd("ctx");
  65990. self._assert_equals_("JACKIE"._asLowercase(),"jackie");
  65991. return self;
  65992. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  65993. }, function($ctx1) {$ctx1.fill(self,"testAsLowerCase",{},$globals.StringTest)});
  65994. //>>excludeEnd("ctx");
  65995. },
  65996. //>>excludeStart("ide", pragmas.excludeIdeData);
  65997. args: [],
  65998. source: "testAsLowerCase\x0a\x09self assert: 'JACKIE' asLowercase equals: 'jackie'.",
  65999. referencedClasses: [],
  66000. //>>excludeEnd("ide");
  66001. messageSends: ["assert:equals:", "asLowercase"]
  66002. }),
  66003. $globals.StringTest);
  66004. $core.addMethod(
  66005. $core.method({
  66006. selector: "testAsNumber",
  66007. protocol: 'tests',
  66008. fn: function (){
  66009. var self=this;
  66010. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66011. return $core.withContext(function($ctx1) {
  66012. //>>excludeEnd("ctx");
  66013. var $1,$2;
  66014. $1="3"._asNumber();
  66015. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66016. $ctx1.sendIdx["asNumber"]=1;
  66017. //>>excludeEnd("ctx");
  66018. self._assert_equals_($1,(3));
  66019. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66020. $ctx1.sendIdx["assert:equals:"]=1;
  66021. //>>excludeEnd("ctx");
  66022. $2="-3"._asNumber();
  66023. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66024. $ctx1.sendIdx["asNumber"]=2;
  66025. //>>excludeEnd("ctx");
  66026. self._assert_equals_($2,(-3));
  66027. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66028. $ctx1.sendIdx["assert:equals:"]=2;
  66029. //>>excludeEnd("ctx");
  66030. self._assert_equals_("-1.5"._asNumber(),(-1.5));
  66031. return self;
  66032. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66033. }, function($ctx1) {$ctx1.fill(self,"testAsNumber",{},$globals.StringTest)});
  66034. //>>excludeEnd("ctx");
  66035. },
  66036. //>>excludeStart("ide", pragmas.excludeIdeData);
  66037. args: [],
  66038. 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.",
  66039. referencedClasses: [],
  66040. //>>excludeEnd("ide");
  66041. messageSends: ["assert:equals:", "asNumber"]
  66042. }),
  66043. $globals.StringTest);
  66044. $core.addMethod(
  66045. $core.method({
  66046. selector: "testAsUpperCase",
  66047. protocol: 'tests',
  66048. fn: function (){
  66049. var self=this;
  66050. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66051. return $core.withContext(function($ctx1) {
  66052. //>>excludeEnd("ctx");
  66053. self._assert_equals_("jackie"._asUppercase(),"JACKIE");
  66054. return self;
  66055. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66056. }, function($ctx1) {$ctx1.fill(self,"testAsUpperCase",{},$globals.StringTest)});
  66057. //>>excludeEnd("ctx");
  66058. },
  66059. //>>excludeStart("ide", pragmas.excludeIdeData);
  66060. args: [],
  66061. source: "testAsUpperCase\x0a\x09self assert: 'jackie' asUppercase equals: 'JACKIE'.",
  66062. referencedClasses: [],
  66063. //>>excludeEnd("ide");
  66064. messageSends: ["assert:equals:", "asUppercase"]
  66065. }),
  66066. $globals.StringTest);
  66067. $core.addMethod(
  66068. $core.method({
  66069. selector: "testAsciiValue",
  66070. protocol: 'tests',
  66071. fn: function (){
  66072. var self=this;
  66073. var characterA,characterU;
  66074. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66075. return $core.withContext(function($ctx1) {
  66076. //>>excludeEnd("ctx");
  66077. var $1;
  66078. characterA="A";
  66079. characterU="U";
  66080. $1=$recv(characterA)._asciiValue();
  66081. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66082. $ctx1.sendIdx["asciiValue"]=1;
  66083. //>>excludeEnd("ctx");
  66084. self._assert_equals_($1,(65));
  66085. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66086. $ctx1.sendIdx["assert:equals:"]=1;
  66087. //>>excludeEnd("ctx");
  66088. self._assert_equals_($recv(characterU)._asciiValue(),(85));
  66089. return self;
  66090. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66091. }, function($ctx1) {$ctx1.fill(self,"testAsciiValue",{characterA:characterA,characterU:characterU},$globals.StringTest)});
  66092. //>>excludeEnd("ctx");
  66093. },
  66094. //>>excludeStart("ide", pragmas.excludeIdeData);
  66095. args: [],
  66096. 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",
  66097. referencedClasses: [],
  66098. //>>excludeEnd("ide");
  66099. messageSends: ["assert:equals:", "asciiValue"]
  66100. }),
  66101. $globals.StringTest);
  66102. $core.addMethod(
  66103. $core.method({
  66104. selector: "testAtIfAbsentPut",
  66105. protocol: 'tests',
  66106. fn: function (){
  66107. var self=this;
  66108. function $Error(){return $globals.Error||(typeof Error=="undefined"?nil:Error)}
  66109. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66110. return $core.withContext(function($ctx1) {
  66111. //>>excludeEnd("ctx");
  66112. self._should_raise_((function(){
  66113. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66114. return $core.withContext(function($ctx2) {
  66115. //>>excludeEnd("ctx");
  66116. return "hello"._at_ifAbsentPut_((6),(function(){
  66117. return "a";
  66118. }));
  66119. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66120. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  66121. //>>excludeEnd("ctx");
  66122. }),$Error());
  66123. return self;
  66124. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66125. }, function($ctx1) {$ctx1.fill(self,"testAtIfAbsentPut",{},$globals.StringTest)});
  66126. //>>excludeEnd("ctx");
  66127. },
  66128. //>>excludeStart("ide", pragmas.excludeIdeData);
  66129. args: [],
  66130. source: "testAtIfAbsentPut\x0a\x09\x22String instances are read-only\x22\x0a\x09self should: [ 'hello' at: 6 ifAbsentPut: [ 'a' ] ] raise: Error",
  66131. referencedClasses: ["Error"],
  66132. //>>excludeEnd("ide");
  66133. messageSends: ["should:raise:", "at:ifAbsentPut:"]
  66134. }),
  66135. $globals.StringTest);
  66136. $core.addMethod(
  66137. $core.method({
  66138. selector: "testAtPut",
  66139. protocol: 'tests',
  66140. fn: function (){
  66141. var self=this;
  66142. function $Error(){return $globals.Error||(typeof Error=="undefined"?nil:Error)}
  66143. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66144. return $core.withContext(function($ctx1) {
  66145. //>>excludeEnd("ctx");
  66146. self._should_raise_((function(){
  66147. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66148. return $core.withContext(function($ctx2) {
  66149. //>>excludeEnd("ctx");
  66150. return "hello"._at_put_((1),"a");
  66151. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66152. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  66153. //>>excludeEnd("ctx");
  66154. }),$Error());
  66155. return self;
  66156. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66157. }, function($ctx1) {$ctx1.fill(self,"testAtPut",{},$globals.StringTest)});
  66158. //>>excludeEnd("ctx");
  66159. },
  66160. //>>excludeStart("ide", pragmas.excludeIdeData);
  66161. args: [],
  66162. source: "testAtPut\x0a\x09\x22String instances are read-only\x22\x0a\x09self should: [ 'hello' at: 1 put: 'a' ] raise: Error",
  66163. referencedClasses: ["Error"],
  66164. //>>excludeEnd("ide");
  66165. messageSends: ["should:raise:", "at:put:"]
  66166. }),
  66167. $globals.StringTest);
  66168. $core.addMethod(
  66169. $core.method({
  66170. selector: "testCapitalized",
  66171. protocol: 'tests',
  66172. fn: function (){
  66173. var self=this;
  66174. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66175. return $core.withContext(function($ctx1) {
  66176. //>>excludeEnd("ctx");
  66177. var $1,$2,$3;
  66178. $1="test"._capitalized();
  66179. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66180. $ctx1.sendIdx["capitalized"]=1;
  66181. //>>excludeEnd("ctx");
  66182. self._assert_equals_($1,"Test");
  66183. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66184. $ctx1.sendIdx["assert:equals:"]=1;
  66185. //>>excludeEnd("ctx");
  66186. $2="Test"._capitalized();
  66187. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66188. $ctx1.sendIdx["capitalized"]=2;
  66189. //>>excludeEnd("ctx");
  66190. self._assert_equals_($2,"Test");
  66191. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66192. $ctx1.sendIdx["assert:equals:"]=2;
  66193. //>>excludeEnd("ctx");
  66194. self._assert_equals_(""._capitalized(),"");
  66195. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66196. $ctx1.sendIdx["assert:equals:"]=3;
  66197. //>>excludeEnd("ctx");
  66198. $3="Test"._isCapitalized();
  66199. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66200. $ctx1.sendIdx["isCapitalized"]=1;
  66201. //>>excludeEnd("ctx");
  66202. self._assert_equals_($3,true);
  66203. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66204. $ctx1.sendIdx["assert:equals:"]=4;
  66205. //>>excludeEnd("ctx");
  66206. self._assert_equals_("test"._isCapitalized(),false);
  66207. return self;
  66208. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66209. }, function($ctx1) {$ctx1.fill(self,"testCapitalized",{},$globals.StringTest)});
  66210. //>>excludeEnd("ctx");
  66211. },
  66212. //>>excludeStart("ide", pragmas.excludeIdeData);
  66213. args: [],
  66214. 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.",
  66215. referencedClasses: [],
  66216. //>>excludeEnd("ide");
  66217. messageSends: ["assert:equals:", "capitalized", "isCapitalized"]
  66218. }),
  66219. $globals.StringTest);
  66220. $core.addMethod(
  66221. $core.method({
  66222. selector: "testCharCodeAt",
  66223. protocol: 'tests',
  66224. fn: function (){
  66225. var self=this;
  66226. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66227. return $core.withContext(function($ctx1) {
  66228. //>>excludeEnd("ctx");
  66229. var $1,$2,$3,$4,$5;
  66230. $1="jackie"._charCodeAt_((1));
  66231. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66232. $ctx1.sendIdx["charCodeAt:"]=1;
  66233. //>>excludeEnd("ctx");
  66234. self._assert_equals_($1,(106));
  66235. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66236. $ctx1.sendIdx["assert:equals:"]=1;
  66237. //>>excludeEnd("ctx");
  66238. $2="jackie"._charCodeAt_((2));
  66239. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66240. $ctx1.sendIdx["charCodeAt:"]=2;
  66241. //>>excludeEnd("ctx");
  66242. self._assert_equals_($2,(97));
  66243. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66244. $ctx1.sendIdx["assert:equals:"]=2;
  66245. //>>excludeEnd("ctx");
  66246. $3="jackie"._charCodeAt_((3));
  66247. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66248. $ctx1.sendIdx["charCodeAt:"]=3;
  66249. //>>excludeEnd("ctx");
  66250. self._assert_equals_($3,(99));
  66251. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66252. $ctx1.sendIdx["assert:equals:"]=3;
  66253. //>>excludeEnd("ctx");
  66254. $4="jackie"._charCodeAt_((4));
  66255. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66256. $ctx1.sendIdx["charCodeAt:"]=4;
  66257. //>>excludeEnd("ctx");
  66258. self._assert_equals_($4,(107));
  66259. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66260. $ctx1.sendIdx["assert:equals:"]=4;
  66261. //>>excludeEnd("ctx");
  66262. $5="jackie"._charCodeAt_((5));
  66263. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66264. $ctx1.sendIdx["charCodeAt:"]=5;
  66265. //>>excludeEnd("ctx");
  66266. self._assert_equals_($5,(105));
  66267. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66268. $ctx1.sendIdx["assert:equals:"]=5;
  66269. //>>excludeEnd("ctx");
  66270. self._assert_equals_("jackie"._charCodeAt_((6)),(101));
  66271. return self;
  66272. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66273. }, function($ctx1) {$ctx1.fill(self,"testCharCodeAt",{},$globals.StringTest)});
  66274. //>>excludeEnd("ctx");
  66275. },
  66276. //>>excludeStart("ide", pragmas.excludeIdeData);
  66277. args: [],
  66278. 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",
  66279. referencedClasses: [],
  66280. //>>excludeEnd("ide");
  66281. messageSends: ["assert:equals:", "charCodeAt:"]
  66282. }),
  66283. $globals.StringTest);
  66284. $core.addMethod(
  66285. $core.method({
  66286. selector: "testCopyFromTo",
  66287. protocol: 'tests',
  66288. fn: function (){
  66289. var self=this;
  66290. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66291. return $core.withContext(function($ctx1) {
  66292. //>>excludeEnd("ctx");
  66293. var $1;
  66294. $1="jackie"._copyFrom_to_((1),(3));
  66295. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66296. $ctx1.sendIdx["copyFrom:to:"]=1;
  66297. //>>excludeEnd("ctx");
  66298. self._assert_equals_($1,"jac");
  66299. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66300. $ctx1.sendIdx["assert:equals:"]=1;
  66301. //>>excludeEnd("ctx");
  66302. self._assert_equals_("jackie"._copyFrom_to_((4),(6)),"kie");
  66303. return self;
  66304. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66305. }, function($ctx1) {$ctx1.fill(self,"testCopyFromTo",{},$globals.StringTest)});
  66306. //>>excludeEnd("ctx");
  66307. },
  66308. //>>excludeStart("ide", pragmas.excludeIdeData);
  66309. args: [],
  66310. source: "testCopyFromTo\x0a\x09self assert: ('jackie' copyFrom: 1 to: 3) equals: 'jac'.\x0a\x09self assert: ('jackie' copyFrom: 4 to: 6) equals: 'kie'.",
  66311. referencedClasses: [],
  66312. //>>excludeEnd("ide");
  66313. messageSends: ["assert:equals:", "copyFrom:to:"]
  66314. }),
  66315. $globals.StringTest);
  66316. $core.addMethod(
  66317. $core.method({
  66318. selector: "testCopyWithoutAll",
  66319. protocol: 'tests',
  66320. fn: function (){
  66321. var self=this;
  66322. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66323. return $core.withContext(function($ctx1) {
  66324. //>>excludeEnd("ctx");
  66325. self._assert_equals_("*hello* *world*"._copyWithoutAll_("*"),"hello world");
  66326. return self;
  66327. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66328. }, function($ctx1) {$ctx1.fill(self,"testCopyWithoutAll",{},$globals.StringTest)});
  66329. //>>excludeEnd("ctx");
  66330. },
  66331. //>>excludeStart("ide", pragmas.excludeIdeData);
  66332. args: [],
  66333. source: "testCopyWithoutAll\x0a\x09self\x0a\x09\x09assert: ('*hello* *world*' copyWithoutAll: '*')\x0a\x09\x09equals: 'hello world'",
  66334. referencedClasses: [],
  66335. //>>excludeEnd("ide");
  66336. messageSends: ["assert:equals:", "copyWithoutAll:"]
  66337. }),
  66338. $globals.StringTest);
  66339. $core.addMethod(
  66340. $core.method({
  66341. selector: "testEquality",
  66342. protocol: 'tests',
  66343. fn: function (){
  66344. var self=this;
  66345. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66346. return $core.withContext(function($ctx1) {
  66347. //>>excludeEnd("ctx");
  66348. var $1,$2,$3;
  66349. self._assert_equals_("hello","hello");
  66350. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66351. $ctx1.sendIdx["assert:equals:"]=1;
  66352. //>>excludeEnd("ctx");
  66353. $1="hello".__eq("world");
  66354. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66355. $ctx1.sendIdx["="]=1;
  66356. //>>excludeEnd("ctx");
  66357. self._deny_($1);
  66358. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66359. $ctx1.sendIdx["deny:"]=1;
  66360. //>>excludeEnd("ctx");
  66361. $2="hello".__eq([]._at_ifAbsent_((1),(function(){
  66362. })));
  66363. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66364. $ctx1.sendIdx["="]=2;
  66365. //>>excludeEnd("ctx");
  66366. self._deny_($2);
  66367. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66368. $ctx1.sendIdx["deny:"]=2;
  66369. //>>excludeEnd("ctx");
  66370. $3="hello"._yourself();
  66371. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66372. $ctx1.sendIdx["yourself"]=1;
  66373. //>>excludeEnd("ctx");
  66374. self._assert_equals_("hello",$3);
  66375. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66376. $ctx1.sendIdx["assert:equals:"]=2;
  66377. //>>excludeEnd("ctx");
  66378. self._assert_equals_("hello"._yourself(),"hello");
  66379. self._deny_("".__eq((0)));
  66380. return self;
  66381. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66382. }, function($ctx1) {$ctx1.fill(self,"testEquality",{},$globals.StringTest)});
  66383. //>>excludeEnd("ctx");
  66384. },
  66385. //>>excludeStart("ide", pragmas.excludeIdeData);
  66386. args: [],
  66387. 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",
  66388. referencedClasses: [],
  66389. //>>excludeEnd("ide");
  66390. messageSends: ["assert:equals:", "deny:", "=", "at:ifAbsent:", "yourself"]
  66391. }),
  66392. $globals.StringTest);
  66393. $core.addMethod(
  66394. $core.method({
  66395. selector: "testIdentity",
  66396. protocol: 'tests',
  66397. fn: function (){
  66398. var self=this;
  66399. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66400. return $core.withContext(function($ctx1) {
  66401. //>>excludeEnd("ctx");
  66402. var $1,$2,$4,$3,$5;
  66403. $1="hello".__eq_eq("hello");
  66404. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66405. $ctx1.sendIdx["=="]=1;
  66406. //>>excludeEnd("ctx");
  66407. self._assert_($1);
  66408. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66409. $ctx1.sendIdx["assert:"]=1;
  66410. //>>excludeEnd("ctx");
  66411. $2="hello".__eq_eq("world");
  66412. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66413. $ctx1.sendIdx["=="]=2;
  66414. //>>excludeEnd("ctx");
  66415. self._deny_($2);
  66416. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66417. $ctx1.sendIdx["deny:"]=1;
  66418. //>>excludeEnd("ctx");
  66419. $4="hello"._yourself();
  66420. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66421. $ctx1.sendIdx["yourself"]=1;
  66422. //>>excludeEnd("ctx");
  66423. $3="hello".__eq_eq($4);
  66424. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66425. $ctx1.sendIdx["=="]=3;
  66426. //>>excludeEnd("ctx");
  66427. self._assert_($3);
  66428. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66429. $ctx1.sendIdx["assert:"]=2;
  66430. //>>excludeEnd("ctx");
  66431. $5=$recv("hello"._yourself()).__eq_eq("hello");
  66432. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66433. $ctx1.sendIdx["=="]=4;
  66434. //>>excludeEnd("ctx");
  66435. self._assert_($5);
  66436. self._deny_("".__eq_eq((0)));
  66437. return self;
  66438. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66439. }, function($ctx1) {$ctx1.fill(self,"testIdentity",{},$globals.StringTest)});
  66440. //>>excludeEnd("ctx");
  66441. },
  66442. //>>excludeStart("ide", pragmas.excludeIdeData);
  66443. args: [],
  66444. 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",
  66445. referencedClasses: [],
  66446. //>>excludeEnd("ide");
  66447. messageSends: ["assert:", "==", "deny:", "yourself"]
  66448. }),
  66449. $globals.StringTest);
  66450. $core.addMethod(
  66451. $core.method({
  66452. selector: "testIdentityHash",
  66453. protocol: 'tests',
  66454. fn: function (){
  66455. var self=this;
  66456. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66457. return $core.withContext(function($ctx1) {
  66458. //>>excludeEnd("ctx");
  66459. var $1,$2,$4,$3;
  66460. $1="foo"._identityHash();
  66461. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66462. $ctx1.sendIdx["identityHash"]=1;
  66463. //>>excludeEnd("ctx");
  66464. $2="foo"._identityHash();
  66465. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66466. $ctx1.sendIdx["identityHash"]=2;
  66467. //>>excludeEnd("ctx");
  66468. self._assert_equals_($1,$2);
  66469. $4="foo"._identityHash();
  66470. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66471. $ctx1.sendIdx["identityHash"]=3;
  66472. //>>excludeEnd("ctx");
  66473. $3=$recv($4).__eq("bar"._identityHash());
  66474. self._deny_($3);
  66475. return self;
  66476. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66477. }, function($ctx1) {$ctx1.fill(self,"testIdentityHash",{},$globals.StringTest)});
  66478. //>>excludeEnd("ctx");
  66479. },
  66480. //>>excludeStart("ide", pragmas.excludeIdeData);
  66481. args: [],
  66482. source: "testIdentityHash\x0a\x09self assert: 'foo' identityHash equals: 'foo' identityHash.\x0a\x09self deny: ('foo' identityHash = 'bar' identityHash)",
  66483. referencedClasses: [],
  66484. //>>excludeEnd("ide");
  66485. messageSends: ["assert:equals:", "identityHash", "deny:", "="]
  66486. }),
  66487. $globals.StringTest);
  66488. $core.addMethod(
  66489. $core.method({
  66490. selector: "testIncludesSubString",
  66491. protocol: 'tests',
  66492. fn: function (){
  66493. var self=this;
  66494. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66495. return $core.withContext(function($ctx1) {
  66496. //>>excludeEnd("ctx");
  66497. var $1;
  66498. $1="amber"._includesSubString_("ber");
  66499. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66500. $ctx1.sendIdx["includesSubString:"]=1;
  66501. //>>excludeEnd("ctx");
  66502. self._assert_($1);
  66503. self._deny_("amber"._includesSubString_("zork"));
  66504. return self;
  66505. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66506. }, function($ctx1) {$ctx1.fill(self,"testIncludesSubString",{},$globals.StringTest)});
  66507. //>>excludeEnd("ctx");
  66508. },
  66509. //>>excludeStart("ide", pragmas.excludeIdeData);
  66510. args: [],
  66511. source: "testIncludesSubString\x0a\x09self assert: ('amber' includesSubString: 'ber').\x0a\x09self deny: ('amber' includesSubString: 'zork').",
  66512. referencedClasses: [],
  66513. //>>excludeEnd("ide");
  66514. messageSends: ["assert:", "includesSubString:", "deny:"]
  66515. }),
  66516. $globals.StringTest);
  66517. $core.addMethod(
  66518. $core.method({
  66519. selector: "testIndexOfStartingAtWithNull",
  66520. protocol: 'tests',
  66521. fn: function (){
  66522. var self=this;
  66523. return self;
  66524. },
  66525. //>>excludeStart("ide", pragmas.excludeIdeData);
  66526. args: [],
  66527. source: "testIndexOfStartingAtWithNull\x0a\x09\x22String cannot hold JS null\x22",
  66528. referencedClasses: [],
  66529. //>>excludeEnd("ide");
  66530. messageSends: []
  66531. }),
  66532. $globals.StringTest);
  66533. $core.addMethod(
  66534. $core.method({
  66535. selector: "testIndexOfWithNull",
  66536. protocol: 'tests',
  66537. fn: function (){
  66538. var self=this;
  66539. return self;
  66540. },
  66541. //>>excludeStart("ide", pragmas.excludeIdeData);
  66542. args: [],
  66543. source: "testIndexOfWithNull\x0a\x09\x22String cannot hold JS null\x22",
  66544. referencedClasses: [],
  66545. //>>excludeEnd("ide");
  66546. messageSends: []
  66547. }),
  66548. $globals.StringTest);
  66549. $core.addMethod(
  66550. $core.method({
  66551. selector: "testIsVowel",
  66552. protocol: 'tests',
  66553. fn: function (){
  66554. var self=this;
  66555. var vowel,consonant;
  66556. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66557. return $core.withContext(function($ctx1) {
  66558. //>>excludeEnd("ctx");
  66559. var $1;
  66560. vowel="u";
  66561. consonant="z";
  66562. $1=$recv(vowel)._isVowel();
  66563. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66564. $ctx1.sendIdx["isVowel"]=1;
  66565. //>>excludeEnd("ctx");
  66566. self._assert_equals_($1,true);
  66567. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66568. $ctx1.sendIdx["assert:equals:"]=1;
  66569. //>>excludeEnd("ctx");
  66570. self._assert_equals_($recv(consonant)._isVowel(),false);
  66571. return self;
  66572. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66573. }, function($ctx1) {$ctx1.fill(self,"testIsVowel",{vowel:vowel,consonant:consonant},$globals.StringTest)});
  66574. //>>excludeEnd("ctx");
  66575. },
  66576. //>>excludeStart("ide", pragmas.excludeIdeData);
  66577. args: [],
  66578. 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",
  66579. referencedClasses: [],
  66580. //>>excludeEnd("ide");
  66581. messageSends: ["assert:equals:", "isVowel"]
  66582. }),
  66583. $globals.StringTest);
  66584. $core.addMethod(
  66585. $core.method({
  66586. selector: "testJoin",
  66587. protocol: 'tests',
  66588. fn: function (){
  66589. var self=this;
  66590. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66591. return $core.withContext(function($ctx1) {
  66592. //>>excludeEnd("ctx");
  66593. self._assert_equals_(","._join_(["hello", "world"]),"hello,world");
  66594. return self;
  66595. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66596. }, function($ctx1) {$ctx1.fill(self,"testJoin",{},$globals.StringTest)});
  66597. //>>excludeEnd("ctx");
  66598. },
  66599. //>>excludeStart("ide", pragmas.excludeIdeData);
  66600. args: [],
  66601. source: "testJoin\x0a\x09self assert: (',' join: #('hello' 'world')) equals: 'hello,world'",
  66602. referencedClasses: [],
  66603. //>>excludeEnd("ide");
  66604. messageSends: ["assert:equals:", "join:"]
  66605. }),
  66606. $globals.StringTest);
  66607. $core.addMethod(
  66608. $core.method({
  66609. selector: "testRemoveAll",
  66610. protocol: 'tests',
  66611. fn: function (){
  66612. var self=this;
  66613. function $Error(){return $globals.Error||(typeof Error=="undefined"?nil:Error)}
  66614. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66615. return $core.withContext(function($ctx1) {
  66616. //>>excludeEnd("ctx");
  66617. self._should_raise_((function(){
  66618. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66619. return $core.withContext(function($ctx2) {
  66620. //>>excludeEnd("ctx");
  66621. return $recv(self._collection())._removeAll();
  66622. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66623. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  66624. //>>excludeEnd("ctx");
  66625. }),$Error());
  66626. return self;
  66627. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66628. }, function($ctx1) {$ctx1.fill(self,"testRemoveAll",{},$globals.StringTest)});
  66629. //>>excludeEnd("ctx");
  66630. },
  66631. //>>excludeStart("ide", pragmas.excludeIdeData);
  66632. args: [],
  66633. source: "testRemoveAll\x0a\x09self should: [ self collection removeAll ] raise: Error",
  66634. referencedClasses: ["Error"],
  66635. //>>excludeEnd("ide");
  66636. messageSends: ["should:raise:", "removeAll", "collection"]
  66637. }),
  66638. $globals.StringTest);
  66639. $core.addMethod(
  66640. $core.method({
  66641. selector: "testReversed",
  66642. protocol: 'tests',
  66643. fn: function (){
  66644. var self=this;
  66645. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66646. return $core.withContext(function($ctx1) {
  66647. //>>excludeEnd("ctx");
  66648. self._assert_equals_("jackiechan"._reversed(),"nahceikcaj");
  66649. return self;
  66650. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66651. }, function($ctx1) {$ctx1.fill(self,"testReversed",{},$globals.StringTest)});
  66652. //>>excludeEnd("ctx");
  66653. },
  66654. //>>excludeStart("ide", pragmas.excludeIdeData);
  66655. args: [],
  66656. source: "testReversed\x0a\x09self assert: 'jackiechan' reversed equals: 'nahceikcaj'.",
  66657. referencedClasses: [],
  66658. //>>excludeEnd("ide");
  66659. messageSends: ["assert:equals:", "reversed"]
  66660. }),
  66661. $globals.StringTest);
  66662. $core.addMethod(
  66663. $core.method({
  66664. selector: "testStreamContents",
  66665. protocol: 'tests',
  66666. fn: function (){
  66667. var self=this;
  66668. function $String(){return $globals.String||(typeof String=="undefined"?nil:String)}
  66669. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66670. return $core.withContext(function($ctx1) {
  66671. //>>excludeEnd("ctx");
  66672. var $1;
  66673. self._assert_equals_($recv($String())._streamContents_((function(aStream){
  66674. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66675. return $core.withContext(function($ctx2) {
  66676. //>>excludeEnd("ctx");
  66677. $recv(aStream)._nextPutAll_("hello");
  66678. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66679. $ctx2.sendIdx["nextPutAll:"]=1;
  66680. //>>excludeEnd("ctx");
  66681. $recv(aStream)._space();
  66682. $1=$recv(aStream)._nextPutAll_("world");
  66683. return $1;
  66684. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66685. }, function($ctx2) {$ctx2.fillBlock({aStream:aStream},$ctx1,1)});
  66686. //>>excludeEnd("ctx");
  66687. })),"hello world");
  66688. return self;
  66689. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66690. }, function($ctx1) {$ctx1.fill(self,"testStreamContents",{},$globals.StringTest)});
  66691. //>>excludeEnd("ctx");
  66692. },
  66693. //>>excludeStart("ide", pragmas.excludeIdeData);
  66694. args: [],
  66695. 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'",
  66696. referencedClasses: ["String"],
  66697. //>>excludeEnd("ide");
  66698. messageSends: ["assert:equals:", "streamContents:", "nextPutAll:", "space"]
  66699. }),
  66700. $globals.StringTest);
  66701. $core.addMethod(
  66702. $core.method({
  66703. selector: "testSubStrings",
  66704. protocol: 'tests',
  66705. fn: function (){
  66706. var self=this;
  66707. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66708. return $core.withContext(function($ctx1) {
  66709. //>>excludeEnd("ctx");
  66710. self._assert_equals_("jackiechan"._subStrings_("ie"),["jack", "chan"]);
  66711. return self;
  66712. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66713. }, function($ctx1) {$ctx1.fill(self,"testSubStrings",{},$globals.StringTest)});
  66714. //>>excludeEnd("ctx");
  66715. },
  66716. //>>excludeStart("ide", pragmas.excludeIdeData);
  66717. args: [],
  66718. source: "testSubStrings\x0a\x09self assert: ('jackiechan' subStrings: 'ie') equals: #( 'jack' 'chan' ).",
  66719. referencedClasses: [],
  66720. //>>excludeEnd("ide");
  66721. messageSends: ["assert:equals:", "subStrings:"]
  66722. }),
  66723. $globals.StringTest);
  66724. $core.addMethod(
  66725. $core.method({
  66726. selector: "testTrim",
  66727. protocol: 'tests',
  66728. fn: function (){
  66729. var self=this;
  66730. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66731. return $core.withContext(function($ctx1) {
  66732. //>>excludeEnd("ctx");
  66733. self._assert_equals_(" jackie"._trimLeft(),"jackie");
  66734. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66735. $ctx1.sendIdx["assert:equals:"]=1;
  66736. //>>excludeEnd("ctx");
  66737. self._assert_equals_("jackie "._trimRight(),"jackie");
  66738. return self;
  66739. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66740. }, function($ctx1) {$ctx1.fill(self,"testTrim",{},$globals.StringTest)});
  66741. //>>excludeEnd("ctx");
  66742. },
  66743. //>>excludeStart("ide", pragmas.excludeIdeData);
  66744. args: [],
  66745. source: "testTrim\x0a\x09self assert: ' jackie' trimLeft equals: 'jackie'.\x0a\x09self assert: 'jackie ' trimRight equals: 'jackie'.",
  66746. referencedClasses: [],
  66747. //>>excludeEnd("ide");
  66748. messageSends: ["assert:equals:", "trimLeft", "trimRight"]
  66749. }),
  66750. $globals.StringTest);
  66751. $core.addMethod(
  66752. $core.method({
  66753. selector: "testValue",
  66754. protocol: 'tests',
  66755. fn: function (){
  66756. var self=this;
  66757. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66758. return $core.withContext(function($ctx1) {
  66759. //>>excludeEnd("ctx");
  66760. self._assert_equals_("asString"._value_((1)),"1");
  66761. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66762. $ctx1.sendIdx["assert:equals:"]=1;
  66763. //>>excludeEnd("ctx");
  66764. self._assert_equals_([(1), (2), (3)]._collect_("asString"),["1", "2", "3"]);
  66765. return self;
  66766. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66767. }, function($ctx1) {$ctx1.fill(self,"testValue",{},$globals.StringTest)});
  66768. //>>excludeEnd("ctx");
  66769. },
  66770. //>>excludeStart("ide", pragmas.excludeIdeData);
  66771. args: [],
  66772. 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')",
  66773. referencedClasses: [],
  66774. //>>excludeEnd("ide");
  66775. messageSends: ["assert:equals:", "value:", "collect:"]
  66776. }),
  66777. $globals.StringTest);
  66778. $core.addMethod(
  66779. $core.method({
  66780. selector: "collectionClass",
  66781. protocol: 'fixture',
  66782. fn: function (){
  66783. var self=this;
  66784. function $String(){return $globals.String||(typeof String=="undefined"?nil:String)}
  66785. return $String();
  66786. },
  66787. //>>excludeStart("ide", pragmas.excludeIdeData);
  66788. args: [],
  66789. source: "collectionClass\x0a\x09^ String",
  66790. referencedClasses: ["String"],
  66791. //>>excludeEnd("ide");
  66792. messageSends: []
  66793. }),
  66794. $globals.StringTest.klass);
  66795. $core.addClass('SetTest', $globals.CollectionTest, [], 'Kernel-Tests');
  66796. $core.addMethod(
  66797. $core.method({
  66798. selector: "collection",
  66799. protocol: 'fixture',
  66800. fn: function (){
  66801. var self=this;
  66802. function $Set(){return $globals.Set||(typeof Set=="undefined"?nil:Set)}
  66803. function $Smalltalk(){return $globals.Smalltalk||(typeof Smalltalk=="undefined"?nil:Smalltalk)}
  66804. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66805. return $core.withContext(function($ctx1) {
  66806. //>>excludeEnd("ctx");
  66807. var $2,$3,$1;
  66808. $2=$recv($Set())._new();
  66809. $recv($2)._add_($Smalltalk());
  66810. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66811. $ctx1.sendIdx["add:"]=1;
  66812. //>>excludeEnd("ctx");
  66813. $recv($2)._add_(nil);
  66814. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66815. $ctx1.sendIdx["add:"]=2;
  66816. //>>excludeEnd("ctx");
  66817. $recv($2)._add_((3).__at((3)));
  66818. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66819. $ctx1.sendIdx["add:"]=3;
  66820. //>>excludeEnd("ctx");
  66821. $recv($2)._add_(false);
  66822. $3=$recv($2)._yourself();
  66823. $1=$3;
  66824. return $1;
  66825. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66826. }, function($ctx1) {$ctx1.fill(self,"collection",{},$globals.SetTest)});
  66827. //>>excludeEnd("ctx");
  66828. },
  66829. //>>excludeStart("ide", pragmas.excludeIdeData);
  66830. args: [],
  66831. 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\x09yourself",
  66832. referencedClasses: ["Set", "Smalltalk"],
  66833. //>>excludeEnd("ide");
  66834. messageSends: ["add:", "new", "@", "yourself"]
  66835. }),
  66836. $globals.SetTest);
  66837. $core.addMethod(
  66838. $core.method({
  66839. selector: "collectionOfPrintStrings",
  66840. protocol: 'fixture',
  66841. fn: function (){
  66842. var self=this;
  66843. function $Set(){return $globals.Set||(typeof Set=="undefined"?nil:Set)}
  66844. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66845. return $core.withContext(function($ctx1) {
  66846. //>>excludeEnd("ctx");
  66847. var $2,$3,$1;
  66848. $2=$recv($Set())._new();
  66849. $recv($2)._add_("a SmalltalkImage");
  66850. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66851. $ctx1.sendIdx["add:"]=1;
  66852. //>>excludeEnd("ctx");
  66853. $recv($2)._add_("nil");
  66854. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66855. $ctx1.sendIdx["add:"]=2;
  66856. //>>excludeEnd("ctx");
  66857. $recv($2)._add_("3@3");
  66858. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66859. $ctx1.sendIdx["add:"]=3;
  66860. //>>excludeEnd("ctx");
  66861. $recv($2)._add_("false");
  66862. $3=$recv($2)._yourself();
  66863. $1=$3;
  66864. return $1;
  66865. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66866. }, function($ctx1) {$ctx1.fill(self,"collectionOfPrintStrings",{},$globals.SetTest)});
  66867. //>>excludeEnd("ctx");
  66868. },
  66869. //>>excludeStart("ide", pragmas.excludeIdeData);
  66870. args: [],
  66871. 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\x09yourself",
  66872. referencedClasses: ["Set"],
  66873. //>>excludeEnd("ide");
  66874. messageSends: ["add:", "new", "yourself"]
  66875. }),
  66876. $globals.SetTest);
  66877. $core.addMethod(
  66878. $core.method({
  66879. selector: "collectionSize",
  66880. protocol: 'fixture',
  66881. fn: function (){
  66882. var self=this;
  66883. return (4);
  66884. },
  66885. //>>excludeStart("ide", pragmas.excludeIdeData);
  66886. args: [],
  66887. source: "collectionSize\x0a\x09^ 4",
  66888. referencedClasses: [],
  66889. //>>excludeEnd("ide");
  66890. messageSends: []
  66891. }),
  66892. $globals.SetTest);
  66893. $core.addMethod(
  66894. $core.method({
  66895. selector: "collectionWithDuplicates",
  66896. protocol: 'fixture',
  66897. fn: function (){
  66898. var self=this;
  66899. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66900. return $core.withContext(function($ctx1) {
  66901. //>>excludeEnd("ctx");
  66902. var $2,$3,$1;
  66903. $2=self._collection();
  66904. $recv($2)._add_((0));
  66905. $3=$recv($2)._yourself();
  66906. $1=$3;
  66907. return $1;
  66908. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66909. }, function($ctx1) {$ctx1.fill(self,"collectionWithDuplicates",{},$globals.SetTest)});
  66910. //>>excludeEnd("ctx");
  66911. },
  66912. //>>excludeStart("ide", pragmas.excludeIdeData);
  66913. args: [],
  66914. source: "collectionWithDuplicates\x0a\x09\x22Set has no duplicates\x22\x0a\x09^ self collection add: 0; yourself",
  66915. referencedClasses: [],
  66916. //>>excludeEnd("ide");
  66917. messageSends: ["add:", "collection", "yourself"]
  66918. }),
  66919. $globals.SetTest);
  66920. $core.addMethod(
  66921. $core.method({
  66922. selector: "collectionWithNewValue",
  66923. protocol: 'fixture',
  66924. fn: function (){
  66925. var self=this;
  66926. function $Set(){return $globals.Set||(typeof Set=="undefined"?nil:Set)}
  66927. function $Smalltalk(){return $globals.Smalltalk||(typeof Smalltalk=="undefined"?nil:Smalltalk)}
  66928. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66929. return $core.withContext(function($ctx1) {
  66930. //>>excludeEnd("ctx");
  66931. var $2,$3,$1;
  66932. $2=$recv($Set())._new();
  66933. $recv($2)._add_($Smalltalk());
  66934. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66935. $ctx1.sendIdx["add:"]=1;
  66936. //>>excludeEnd("ctx");
  66937. $recv($2)._add_(nil);
  66938. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66939. $ctx1.sendIdx["add:"]=2;
  66940. //>>excludeEnd("ctx");
  66941. $recv($2)._add_((3).__at((3)));
  66942. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66943. $ctx1.sendIdx["add:"]=3;
  66944. //>>excludeEnd("ctx");
  66945. $recv($2)._add_("N");
  66946. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66947. $ctx1.sendIdx["add:"]=4;
  66948. //>>excludeEnd("ctx");
  66949. $recv($2)._add_(false);
  66950. $3=$recv($2)._yourself();
  66951. $1=$3;
  66952. return $1;
  66953. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66954. }, function($ctx1) {$ctx1.fill(self,"collectionWithNewValue",{},$globals.SetTest)});
  66955. //>>excludeEnd("ctx");
  66956. },
  66957. //>>excludeStart("ide", pragmas.excludeIdeData);
  66958. args: [],
  66959. 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\x09yourself",
  66960. referencedClasses: ["Set", "Smalltalk"],
  66961. //>>excludeEnd("ide");
  66962. messageSends: ["add:", "new", "@", "yourself"]
  66963. }),
  66964. $globals.SetTest);
  66965. $core.addMethod(
  66966. $core.method({
  66967. selector: "testAddAll",
  66968. protocol: 'tests',
  66969. fn: function (){
  66970. var self=this;
  66971. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66972. return $core.withContext(function($ctx1) {
  66973. //>>excludeEnd("ctx");
  66974. var $2,$3,$4,$5,$1,$6,$8,$9,$10,$11,$7,$12,$14,$15,$13;
  66975. (
  66976. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66977. $ctx1.supercall = true,
  66978. //>>excludeEnd("ctx");
  66979. $globals.SetTest.superclass.fn.prototype._testAddAll.apply($recv(self), []));
  66980. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66981. $ctx1.supercall = false;
  66982. //>>excludeEnd("ctx");;
  66983. $2=self._collection();
  66984. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66985. $ctx1.sendIdx["collection"]=1;
  66986. //>>excludeEnd("ctx");
  66987. $3=$2;
  66988. $4=self._collection();
  66989. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66990. $ctx1.sendIdx["collection"]=2;
  66991. //>>excludeEnd("ctx");
  66992. $recv($3)._addAll_($4);
  66993. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66994. $ctx1.sendIdx["addAll:"]=1;
  66995. //>>excludeEnd("ctx");
  66996. $5=$recv($2)._yourself();
  66997. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  66998. $ctx1.sendIdx["yourself"]=1;
  66999. //>>excludeEnd("ctx");
  67000. $1=$5;
  67001. $6=self._collection();
  67002. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67003. $ctx1.sendIdx["collection"]=3;
  67004. //>>excludeEnd("ctx");
  67005. self._assert_equals_($1,$6);
  67006. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67007. $ctx1.sendIdx["assert:equals:"]=1;
  67008. //>>excludeEnd("ctx");
  67009. $8=self._collection();
  67010. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67011. $ctx1.sendIdx["collection"]=4;
  67012. //>>excludeEnd("ctx");
  67013. $9=$8;
  67014. $10=self._collectionWithNewValue();
  67015. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67016. $ctx1.sendIdx["collectionWithNewValue"]=1;
  67017. //>>excludeEnd("ctx");
  67018. $recv($9)._addAll_($10);
  67019. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67020. $ctx1.sendIdx["addAll:"]=2;
  67021. //>>excludeEnd("ctx");
  67022. $11=$recv($8)._yourself();
  67023. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67024. $ctx1.sendIdx["yourself"]=2;
  67025. //>>excludeEnd("ctx");
  67026. $7=$11;
  67027. $12=self._collectionWithNewValue();
  67028. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67029. $ctx1.sendIdx["collectionWithNewValue"]=2;
  67030. //>>excludeEnd("ctx");
  67031. self._assert_equals_($7,$12);
  67032. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67033. $ctx1.sendIdx["assert:equals:"]=2;
  67034. //>>excludeEnd("ctx");
  67035. $14=self._collectionWithNewValue();
  67036. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67037. $ctx1.sendIdx["collectionWithNewValue"]=3;
  67038. //>>excludeEnd("ctx");
  67039. $recv($14)._addAll_(self._collection());
  67040. $15=$recv($14)._yourself();
  67041. $13=$15;
  67042. self._assert_equals_($13,self._collectionWithNewValue());
  67043. return self;
  67044. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67045. }, function($ctx1) {$ctx1.fill(self,"testAddAll",{},$globals.SetTest)});
  67046. //>>excludeEnd("ctx");
  67047. },
  67048. //>>excludeStart("ide", pragmas.excludeIdeData);
  67049. args: [],
  67050. 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",
  67051. referencedClasses: [],
  67052. //>>excludeEnd("ide");
  67053. messageSends: ["testAddAll", "assert:equals:", "addAll:", "collection", "yourself", "collectionWithNewValue"]
  67054. }),
  67055. $globals.SetTest);
  67056. $core.addMethod(
  67057. $core.method({
  67058. selector: "testAddRemove",
  67059. protocol: 'tests',
  67060. fn: function (){
  67061. var self=this;
  67062. var set;
  67063. function $Set(){return $globals.Set||(typeof Set=="undefined"?nil:Set)}
  67064. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67065. return $core.withContext(function($ctx1) {
  67066. //>>excludeEnd("ctx");
  67067. var $1,$2;
  67068. set=$recv($Set())._new();
  67069. self._assert_($recv(set)._isEmpty());
  67070. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67071. $ctx1.sendIdx["assert:"]=1;
  67072. //>>excludeEnd("ctx");
  67073. $recv(set)._add_((3));
  67074. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67075. $ctx1.sendIdx["add:"]=1;
  67076. //>>excludeEnd("ctx");
  67077. $1=$recv(set)._includes_((3));
  67078. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67079. $ctx1.sendIdx["includes:"]=1;
  67080. //>>excludeEnd("ctx");
  67081. self._assert_($1);
  67082. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67083. $ctx1.sendIdx["assert:"]=2;
  67084. //>>excludeEnd("ctx");
  67085. $recv(set)._add_((5));
  67086. $2=$recv(set)._includes_((5));
  67087. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67088. $ctx1.sendIdx["includes:"]=2;
  67089. //>>excludeEnd("ctx");
  67090. self._assert_($2);
  67091. $recv(set)._remove_((3));
  67092. self._deny_($recv(set)._includes_((3)));
  67093. return self;
  67094. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67095. }, function($ctx1) {$ctx1.fill(self,"testAddRemove",{set:set},$globals.SetTest)});
  67096. //>>excludeEnd("ctx");
  67097. },
  67098. //>>excludeStart("ide", pragmas.excludeIdeData);
  67099. args: [],
  67100. 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)",
  67101. referencedClasses: ["Set"],
  67102. //>>excludeEnd("ide");
  67103. messageSends: ["new", "assert:", "isEmpty", "add:", "includes:", "remove:", "deny:"]
  67104. }),
  67105. $globals.SetTest);
  67106. $core.addMethod(
  67107. $core.method({
  67108. selector: "testAt",
  67109. protocol: 'tests',
  67110. fn: function (){
  67111. var self=this;
  67112. function $Set(){return $globals.Set||(typeof Set=="undefined"?nil:Set)}
  67113. function $Error(){return $globals.Error||(typeof Error=="undefined"?nil:Error)}
  67114. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67115. return $core.withContext(function($ctx1) {
  67116. //>>excludeEnd("ctx");
  67117. self._should_raise_((function(){
  67118. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67119. return $core.withContext(function($ctx2) {
  67120. //>>excludeEnd("ctx");
  67121. return $recv($recv($Set())._new())._at_put_((1),(2));
  67122. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67123. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  67124. //>>excludeEnd("ctx");
  67125. }),$Error());
  67126. return self;
  67127. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67128. }, function($ctx1) {$ctx1.fill(self,"testAt",{},$globals.SetTest)});
  67129. //>>excludeEnd("ctx");
  67130. },
  67131. //>>excludeStart("ide", pragmas.excludeIdeData);
  67132. args: [],
  67133. source: "testAt\x0a\x09self should: [ Set new at: 1 put: 2 ] raise: Error",
  67134. referencedClasses: ["Set", "Error"],
  67135. //>>excludeEnd("ide");
  67136. messageSends: ["should:raise:", "at:put:", "new"]
  67137. }),
  67138. $globals.SetTest);
  67139. $core.addMethod(
  67140. $core.method({
  67141. selector: "testCollect",
  67142. protocol: 'tests',
  67143. fn: function (){
  67144. var self=this;
  67145. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67146. return $core.withContext(function($ctx1) {
  67147. //>>excludeEnd("ctx");
  67148. var $2,$1;
  67149. (
  67150. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67151. $ctx1.supercall = true,
  67152. //>>excludeEnd("ctx");
  67153. $globals.SetTest.superclass.fn.prototype._testCollect.apply($recv(self), []));
  67154. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67155. $ctx1.supercall = false;
  67156. //>>excludeEnd("ctx");;
  67157. $2=[(5), (6), (8)]._asSet();
  67158. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67159. $ctx1.sendIdx["asSet"]=1;
  67160. //>>excludeEnd("ctx");
  67161. $1=$recv($2)._collect_((function(x){
  67162. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67163. return $core.withContext(function($ctx2) {
  67164. //>>excludeEnd("ctx");
  67165. return $recv(x).__backslash_backslash((3));
  67166. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67167. }, function($ctx2) {$ctx2.fillBlock({x:x},$ctx1,1)});
  67168. //>>excludeEnd("ctx");
  67169. }));
  67170. self._assert_equals_($1,[(0), (2)]._asSet());
  67171. return self;
  67172. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67173. }, function($ctx1) {$ctx1.fill(self,"testCollect",{},$globals.SetTest)});
  67174. //>>excludeEnd("ctx");
  67175. },
  67176. //>>excludeStart("ide", pragmas.excludeIdeData);
  67177. args: [],
  67178. source: "testCollect\x0a\x09super testCollect.\x0a\x09self assert: (#(5 6 8) asSet collect: [ :x | x \x5c\x5c 3 ]) equals: #(0 2) asSet",
  67179. referencedClasses: [],
  67180. //>>excludeEnd("ide");
  67181. messageSends: ["testCollect", "assert:equals:", "collect:", "asSet", "\x5c\x5c"]
  67182. }),
  67183. $globals.SetTest);
  67184. $core.addMethod(
  67185. $core.method({
  67186. selector: "testComma",
  67187. protocol: 'tests',
  67188. fn: function (){
  67189. var self=this;
  67190. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67191. return $core.withContext(function($ctx1) {
  67192. //>>excludeEnd("ctx");
  67193. var $2,$3,$1,$4,$6,$7,$5,$8,$10,$9;
  67194. (
  67195. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67196. $ctx1.supercall = true,
  67197. //>>excludeEnd("ctx");
  67198. $globals.SetTest.superclass.fn.prototype._testComma.apply($recv(self), []));
  67199. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67200. $ctx1.supercall = false;
  67201. //>>excludeEnd("ctx");;
  67202. $2=self._collection();
  67203. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67204. $ctx1.sendIdx["collection"]=1;
  67205. //>>excludeEnd("ctx");
  67206. $3=self._collection();
  67207. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67208. $ctx1.sendIdx["collection"]=2;
  67209. //>>excludeEnd("ctx");
  67210. $1=$recv($2).__comma($3);
  67211. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67212. $ctx1.sendIdx[","]=1;
  67213. //>>excludeEnd("ctx");
  67214. $4=self._collection();
  67215. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67216. $ctx1.sendIdx["collection"]=3;
  67217. //>>excludeEnd("ctx");
  67218. self._assert_equals_($1,$4);
  67219. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67220. $ctx1.sendIdx["assert:equals:"]=1;
  67221. //>>excludeEnd("ctx");
  67222. $6=self._collection();
  67223. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67224. $ctx1.sendIdx["collection"]=4;
  67225. //>>excludeEnd("ctx");
  67226. $7=self._collectionWithNewValue();
  67227. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67228. $ctx1.sendIdx["collectionWithNewValue"]=1;
  67229. //>>excludeEnd("ctx");
  67230. $5=$recv($6).__comma($7);
  67231. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67232. $ctx1.sendIdx[","]=2;
  67233. //>>excludeEnd("ctx");
  67234. $8=self._collectionWithNewValue();
  67235. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67236. $ctx1.sendIdx["collectionWithNewValue"]=2;
  67237. //>>excludeEnd("ctx");
  67238. self._assert_equals_($5,$8);
  67239. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67240. $ctx1.sendIdx["assert:equals:"]=2;
  67241. //>>excludeEnd("ctx");
  67242. $10=self._collectionWithNewValue();
  67243. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67244. $ctx1.sendIdx["collectionWithNewValue"]=3;
  67245. //>>excludeEnd("ctx");
  67246. $9=$recv($10).__comma(self._collection());
  67247. self._assert_equals_($9,self._collectionWithNewValue());
  67248. return self;
  67249. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67250. }, function($ctx1) {$ctx1.fill(self,"testComma",{},$globals.SetTest)});
  67251. //>>excludeEnd("ctx");
  67252. },
  67253. //>>excludeStart("ide", pragmas.excludeIdeData);
  67254. args: [],
  67255. source: "testComma\x0a\x09super testComma.\x0a\x09self assert: self collection, self collection equals: self collection.\x0a\x09self assert: self collection, self collectionWithNewValue equals: self collectionWithNewValue.\x0a\x09self assert: self collectionWithNewValue, self collection equals: self collectionWithNewValue",
  67256. referencedClasses: [],
  67257. //>>excludeEnd("ide");
  67258. messageSends: ["testComma", "assert:equals:", ",", "collection", "collectionWithNewValue"]
  67259. }),
  67260. $globals.SetTest);
  67261. $core.addMethod(
  67262. $core.method({
  67263. selector: "testComparing",
  67264. protocol: 'tests',
  67265. fn: function (){
  67266. var self=this;
  67267. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67268. return $core.withContext(function($ctx1) {
  67269. //>>excludeEnd("ctx");
  67270. var $1,$2,$3,$4,$6,$7,$5,$9,$8;
  67271. $1=[(0), (2)]._asSet();
  67272. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67273. $ctx1.sendIdx["asSet"]=1;
  67274. //>>excludeEnd("ctx");
  67275. $2=[(0), (2)]._asSet();
  67276. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67277. $ctx1.sendIdx["asSet"]=2;
  67278. //>>excludeEnd("ctx");
  67279. self._assert_equals_($1,$2);
  67280. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67281. $ctx1.sendIdx["assert:equals:"]=1;
  67282. //>>excludeEnd("ctx");
  67283. $3=[(2), (0)]._asSet();
  67284. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67285. $ctx1.sendIdx["asSet"]=3;
  67286. //>>excludeEnd("ctx");
  67287. $4=[(0), (2)]._asSet();
  67288. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67289. $ctx1.sendIdx["asSet"]=4;
  67290. //>>excludeEnd("ctx");
  67291. self._assert_equals_($3,$4);
  67292. $6=[(0), (2), (3)]._asSet();
  67293. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67294. $ctx1.sendIdx["asSet"]=5;
  67295. //>>excludeEnd("ctx");
  67296. $7=[(0), (2)]._asSet();
  67297. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67298. $ctx1.sendIdx["asSet"]=6;
  67299. //>>excludeEnd("ctx");
  67300. $5=$recv($6).__eq($7);
  67301. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67302. $ctx1.sendIdx["="]=1;
  67303. //>>excludeEnd("ctx");
  67304. self._deny_($5);
  67305. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67306. $ctx1.sendIdx["deny:"]=1;
  67307. //>>excludeEnd("ctx");
  67308. $9=[(1), (2)]._asSet();
  67309. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67310. $ctx1.sendIdx["asSet"]=7;
  67311. //>>excludeEnd("ctx");
  67312. $8=$recv($9).__eq([(0), (2)]._asSet());
  67313. self._deny_($8);
  67314. return self;
  67315. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67316. }, function($ctx1) {$ctx1.fill(self,"testComparing",{},$globals.SetTest)});
  67317. //>>excludeEnd("ctx");
  67318. },
  67319. //>>excludeStart("ide", pragmas.excludeIdeData);
  67320. args: [],
  67321. 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",
  67322. referencedClasses: [],
  67323. //>>excludeEnd("ide");
  67324. messageSends: ["assert:equals:", "asSet", "deny:", "="]
  67325. }),
  67326. $globals.SetTest);
  67327. $core.addMethod(
  67328. $core.method({
  67329. selector: "testPrintString",
  67330. protocol: 'tests',
  67331. fn: function (){
  67332. var self=this;
  67333. var set;
  67334. function $Set(){return $globals.Set||(typeof Set=="undefined"?nil:Set)}
  67335. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67336. return $core.withContext(function($ctx1) {
  67337. //>>excludeEnd("ctx");
  67338. var $1,$2,$3,$4,$5,$6,$7,$8,$9;
  67339. set=$recv($Set())._new();
  67340. $1=$recv(set)._printString();
  67341. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67342. $ctx1.sendIdx["printString"]=1;
  67343. //>>excludeEnd("ctx");
  67344. self._assert_equals_($1,"a Set ()");
  67345. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67346. $ctx1.sendIdx["assert:equals:"]=1;
  67347. //>>excludeEnd("ctx");
  67348. $2=set;
  67349. $recv($2)._add_((1));
  67350. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67351. $ctx1.sendIdx["add:"]=1;
  67352. //>>excludeEnd("ctx");
  67353. $3=$recv($2)._add_((3));
  67354. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67355. $ctx1.sendIdx["add:"]=2;
  67356. //>>excludeEnd("ctx");
  67357. $4=$recv(set)._printString();
  67358. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67359. $ctx1.sendIdx["printString"]=2;
  67360. //>>excludeEnd("ctx");
  67361. self._assert_equals_($4,"a Set (1 3)");
  67362. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67363. $ctx1.sendIdx["assert:equals:"]=2;
  67364. //>>excludeEnd("ctx");
  67365. $recv(set)._add_("foo");
  67366. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67367. $ctx1.sendIdx["add:"]=3;
  67368. //>>excludeEnd("ctx");
  67369. $5=$recv(set)._printString();
  67370. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67371. $ctx1.sendIdx["printString"]=3;
  67372. //>>excludeEnd("ctx");
  67373. self._assert_equals_($5,"a Set (1 3 'foo')");
  67374. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67375. $ctx1.sendIdx["assert:equals:"]=3;
  67376. //>>excludeEnd("ctx");
  67377. $6=set;
  67378. $recv($6)._remove_((1));
  67379. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67380. $ctx1.sendIdx["remove:"]=1;
  67381. //>>excludeEnd("ctx");
  67382. $7=$recv($6)._remove_((3));
  67383. $8=$recv(set)._printString();
  67384. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67385. $ctx1.sendIdx["printString"]=4;
  67386. //>>excludeEnd("ctx");
  67387. self._assert_equals_($8,"a Set ('foo')");
  67388. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67389. $ctx1.sendIdx["assert:equals:"]=4;
  67390. //>>excludeEnd("ctx");
  67391. $recv(set)._add_((3));
  67392. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67393. $ctx1.sendIdx["add:"]=4;
  67394. //>>excludeEnd("ctx");
  67395. $9=$recv(set)._printString();
  67396. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67397. $ctx1.sendIdx["printString"]=5;
  67398. //>>excludeEnd("ctx");
  67399. self._assert_equals_($9,"a Set (3 'foo')");
  67400. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67401. $ctx1.sendIdx["assert:equals:"]=5;
  67402. //>>excludeEnd("ctx");
  67403. $recv(set)._add_((3));
  67404. self._assert_equals_($recv(set)._printString(),"a Set (3 'foo')");
  67405. return self;
  67406. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67407. }, function($ctx1) {$ctx1.fill(self,"testPrintString",{set:set},$globals.SetTest)});
  67408. //>>excludeEnd("ctx");
  67409. },
  67410. //>>excludeStart("ide", pragmas.excludeIdeData);
  67411. args: [],
  67412. 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'')'",
  67413. referencedClasses: ["Set"],
  67414. //>>excludeEnd("ide");
  67415. messageSends: ["new", "assert:equals:", "printString", "add:", "remove:"]
  67416. }),
  67417. $globals.SetTest);
  67418. $core.addMethod(
  67419. $core.method({
  67420. selector: "testUnboxedObjects",
  67421. protocol: 'tests',
  67422. fn: function (){
  67423. var self=this;
  67424. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67425. return $core.withContext(function($ctx1) {
  67426. //>>excludeEnd("ctx");
  67427. var $4,$3,$2,$1;
  67428. $4="foo"._yourself();
  67429. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67430. $ctx1.sendIdx["yourself"]=1;
  67431. //>>excludeEnd("ctx");
  67432. $3=[$4,"foo"._yourself()];
  67433. $2=$recv($3)._asSet();
  67434. $1=$recv($2)._asArray();
  67435. self._assert_equals_($1,["foo"]);
  67436. return self;
  67437. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67438. }, function($ctx1) {$ctx1.fill(self,"testUnboxedObjects",{},$globals.SetTest)});
  67439. //>>excludeEnd("ctx");
  67440. },
  67441. //>>excludeStart("ide", pragmas.excludeIdeData);
  67442. args: [],
  67443. source: "testUnboxedObjects\x0a\x09self assert: {'foo' yourself. 'foo' yourself} asSet asArray equals: #('foo')",
  67444. referencedClasses: [],
  67445. //>>excludeEnd("ide");
  67446. messageSends: ["assert:equals:", "asArray", "asSet", "yourself"]
  67447. }),
  67448. $globals.SetTest);
  67449. $core.addMethod(
  67450. $core.method({
  67451. selector: "testUnicity",
  67452. protocol: 'tests',
  67453. fn: function (){
  67454. var self=this;
  67455. var set;
  67456. function $Set(){return $globals.Set||(typeof Set=="undefined"?nil:Set)}
  67457. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67458. return $core.withContext(function($ctx1) {
  67459. //>>excludeEnd("ctx");
  67460. var $1;
  67461. set=$recv($Set())._new();
  67462. $recv(set)._add_((21));
  67463. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67464. $ctx1.sendIdx["add:"]=1;
  67465. //>>excludeEnd("ctx");
  67466. $recv(set)._add_("hello");
  67467. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67468. $ctx1.sendIdx["add:"]=2;
  67469. //>>excludeEnd("ctx");
  67470. $recv(set)._add_((21));
  67471. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67472. $ctx1.sendIdx["add:"]=3;
  67473. //>>excludeEnd("ctx");
  67474. $1=$recv(set)._size();
  67475. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67476. $ctx1.sendIdx["size"]=1;
  67477. //>>excludeEnd("ctx");
  67478. self._assert_equals_($1,(2));
  67479. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67480. $ctx1.sendIdx["assert:equals:"]=1;
  67481. //>>excludeEnd("ctx");
  67482. $recv(set)._add_("hello");
  67483. self._assert_equals_($recv(set)._size(),(2));
  67484. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67485. $ctx1.sendIdx["assert:equals:"]=2;
  67486. //>>excludeEnd("ctx");
  67487. self._assert_equals_($recv(set)._asArray(),[(21), "hello"]);
  67488. return self;
  67489. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67490. }, function($ctx1) {$ctx1.fill(self,"testUnicity",{set:set},$globals.SetTest)});
  67491. //>>excludeEnd("ctx");
  67492. },
  67493. //>>excludeStart("ide", pragmas.excludeIdeData);
  67494. args: [],
  67495. 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')",
  67496. referencedClasses: ["Set"],
  67497. //>>excludeEnd("ide");
  67498. messageSends: ["new", "add:", "assert:equals:", "size", "asArray"]
  67499. }),
  67500. $globals.SetTest);
  67501. $core.addMethod(
  67502. $core.method({
  67503. selector: "collectionClass",
  67504. protocol: 'fixture',
  67505. fn: function (){
  67506. var self=this;
  67507. function $Set(){return $globals.Set||(typeof Set=="undefined"?nil:Set)}
  67508. return $Set();
  67509. },
  67510. //>>excludeStart("ide", pragmas.excludeIdeData);
  67511. args: [],
  67512. source: "collectionClass\x0a\x09^ Set",
  67513. referencedClasses: ["Set"],
  67514. //>>excludeEnd("ide");
  67515. messageSends: []
  67516. }),
  67517. $globals.SetTest.klass);
  67518. $core.addClass('ConsoleTranscriptTest', $globals.TestCase, [], 'Kernel-Tests');
  67519. $core.addMethod(
  67520. $core.method({
  67521. selector: "testShow",
  67522. protocol: 'tests',
  67523. fn: function (){
  67524. var self=this;
  67525. var originalTranscript;
  67526. function $Transcript(){return $globals.Transcript||(typeof Transcript=="undefined"?nil:Transcript)}
  67527. function $ConsoleTranscript(){return $globals.ConsoleTranscript||(typeof ConsoleTranscript=="undefined"?nil:ConsoleTranscript)}
  67528. function $Error(){return $globals.Error||(typeof Error=="undefined"?nil:Error)}
  67529. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67530. return $core.withContext(function($ctx1) {
  67531. //>>excludeEnd("ctx");
  67532. originalTranscript=$recv($Transcript())._current();
  67533. $recv($Transcript())._register_($recv($ConsoleTranscript())._new());
  67534. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67535. $ctx1.sendIdx["register:"]=1;
  67536. //>>excludeEnd("ctx");
  67537. self._shouldnt_raise_((function(){
  67538. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67539. return $core.withContext(function($ctx2) {
  67540. //>>excludeEnd("ctx");
  67541. return $recv($Transcript())._show_("Hello console!");
  67542. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67543. $ctx2.sendIdx["show:"]=1;
  67544. //>>excludeEnd("ctx");
  67545. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67546. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  67547. //>>excludeEnd("ctx");
  67548. }),$Error());
  67549. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67550. $ctx1.sendIdx["shouldnt:raise:"]=1;
  67551. //>>excludeEnd("ctx");
  67552. self._shouldnt_raise_((function(){
  67553. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67554. return $core.withContext(function($ctx2) {
  67555. //>>excludeEnd("ctx");
  67556. return $recv($Transcript())._show_(console);
  67557. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67558. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
  67559. //>>excludeEnd("ctx");
  67560. }),$Error());
  67561. $recv($Transcript())._register_(originalTranscript);
  67562. return self;
  67563. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67564. }, function($ctx1) {$ctx1.fill(self,"testShow",{originalTranscript:originalTranscript},$globals.ConsoleTranscriptTest)});
  67565. //>>excludeEnd("ctx");
  67566. },
  67567. //>>excludeStart("ide", pragmas.excludeIdeData);
  67568. args: [],
  67569. 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.",
  67570. referencedClasses: ["Transcript", "ConsoleTranscript", "Error"],
  67571. //>>excludeEnd("ide");
  67572. messageSends: ["current", "register:", "new", "shouldnt:raise:", "show:"]
  67573. }),
  67574. $globals.ConsoleTranscriptTest);
  67575. $core.addClass('JSObjectProxyTest', $globals.TestCase, [], 'Kernel-Tests');
  67576. $core.addMethod(
  67577. $core.method({
  67578. selector: "jsNull",
  67579. protocol: 'accessing',
  67580. fn: function (){
  67581. var self=this;
  67582. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67583. return $core.withContext(function($ctx1) {
  67584. //>>excludeEnd("ctx");
  67585. return null;
  67586. return self;
  67587. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67588. }, function($ctx1) {$ctx1.fill(self,"jsNull",{},$globals.JSObjectProxyTest)});
  67589. //>>excludeEnd("ctx");
  67590. },
  67591. //>>excludeStart("ide", pragmas.excludeIdeData);
  67592. args: [],
  67593. source: "jsNull\x0a\x09<return null>",
  67594. referencedClasses: [],
  67595. //>>excludeEnd("ide");
  67596. messageSends: []
  67597. }),
  67598. $globals.JSObjectProxyTest);
  67599. $core.addMethod(
  67600. $core.method({
  67601. selector: "jsObject",
  67602. protocol: 'accessing',
  67603. fn: function (){
  67604. var self=this;
  67605. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67606. return $core.withContext(function($ctx1) {
  67607. //>>excludeEnd("ctx");
  67608. return {a: 1, b: function() {return 2;}, c: function(object) {return object;}, d: '', 'e': null, 'f': void 0};
  67609. return self;
  67610. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67611. }, function($ctx1) {$ctx1.fill(self,"jsObject",{},$globals.JSObjectProxyTest)});
  67612. //>>excludeEnd("ctx");
  67613. },
  67614. //>>excludeStart("ide", pragmas.excludeIdeData);
  67615. args: [],
  67616. source: "jsObject\x0a\x09<return {a: 1, b: function() {return 2;}, c: function(object) {return object;}, d: '', 'e': null, 'f': void 0}>",
  67617. referencedClasses: [],
  67618. //>>excludeEnd("ide");
  67619. messageSends: []
  67620. }),
  67621. $globals.JSObjectProxyTest);
  67622. $core.addMethod(
  67623. $core.method({
  67624. selector: "jsUndefined",
  67625. protocol: 'accessing',
  67626. fn: function (){
  67627. var self=this;
  67628. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67629. return $core.withContext(function($ctx1) {
  67630. //>>excludeEnd("ctx");
  67631. return;
  67632. return self;
  67633. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67634. }, function($ctx1) {$ctx1.fill(self,"jsUndefined",{},$globals.JSObjectProxyTest)});
  67635. //>>excludeEnd("ctx");
  67636. },
  67637. //>>excludeStart("ide", pragmas.excludeIdeData);
  67638. args: [],
  67639. source: "jsUndefined\x0a\x09<return>",
  67640. referencedClasses: [],
  67641. //>>excludeEnd("ide");
  67642. messageSends: []
  67643. }),
  67644. $globals.JSObjectProxyTest);
  67645. $core.addMethod(
  67646. $core.method({
  67647. selector: "testAtIfAbsent",
  67648. protocol: 'tests',
  67649. fn: function (){
  67650. var self=this;
  67651. var testObject;
  67652. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67653. return $core.withContext(function($ctx1) {
  67654. //>>excludeEnd("ctx");
  67655. var $1,$2,$3;
  67656. testObject=self._jsObject();
  67657. $1=$recv(testObject)._at_ifAbsent_("abc",(function(){
  67658. return "Property does not exist";
  67659. }));
  67660. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67661. $ctx1.sendIdx["at:ifAbsent:"]=1;
  67662. //>>excludeEnd("ctx");
  67663. self._assert_equals_($1,"Property does not exist");
  67664. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67665. $ctx1.sendIdx["assert:equals:"]=1;
  67666. //>>excludeEnd("ctx");
  67667. $2=$recv(testObject)._at_ifAbsent_("e",(function(){
  67668. return "Property does not exist";
  67669. }));
  67670. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67671. $ctx1.sendIdx["at:ifAbsent:"]=2;
  67672. //>>excludeEnd("ctx");
  67673. self._assert_equals_($2,nil);
  67674. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67675. $ctx1.sendIdx["assert:equals:"]=2;
  67676. //>>excludeEnd("ctx");
  67677. $3=$recv(testObject)._at_ifAbsent_("a",(function(){
  67678. return "Property does not exist";
  67679. }));
  67680. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67681. $ctx1.sendIdx["at:ifAbsent:"]=3;
  67682. //>>excludeEnd("ctx");
  67683. self._assert_equals_($3,(1));
  67684. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67685. $ctx1.sendIdx["assert:equals:"]=3;
  67686. //>>excludeEnd("ctx");
  67687. self._assert_equals_($recv(testObject)._at_ifAbsent_("f",(function(){
  67688. return "Property does not exist";
  67689. })),nil);
  67690. return self;
  67691. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67692. }, function($ctx1) {$ctx1.fill(self,"testAtIfAbsent",{testObject:testObject},$globals.JSObjectProxyTest)});
  67693. //>>excludeEnd("ctx");
  67694. },
  67695. //>>excludeStart("ide", pragmas.excludeIdeData);
  67696. args: [],
  67697. 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.",
  67698. referencedClasses: [],
  67699. //>>excludeEnd("ide");
  67700. messageSends: ["jsObject", "assert:equals:", "at:ifAbsent:"]
  67701. }),
  67702. $globals.JSObjectProxyTest);
  67703. $core.addMethod(
  67704. $core.method({
  67705. selector: "testAtIfPresent",
  67706. protocol: 'tests',
  67707. fn: function (){
  67708. var self=this;
  67709. var testObject;
  67710. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67711. return $core.withContext(function($ctx1) {
  67712. //>>excludeEnd("ctx");
  67713. var $2,$1,$4,$3,$6,$5;
  67714. testObject=self._jsObject();
  67715. $1=$recv(testObject)._at_ifPresent_("abc",(function(x){
  67716. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67717. return $core.withContext(function($ctx2) {
  67718. //>>excludeEnd("ctx");
  67719. $2=$recv(x)._asString();
  67720. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67721. $ctx2.sendIdx["asString"]=1;
  67722. //>>excludeEnd("ctx");
  67723. return "hello ".__comma($2);
  67724. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67725. $ctx2.sendIdx[","]=1;
  67726. //>>excludeEnd("ctx");
  67727. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67728. }, function($ctx2) {$ctx2.fillBlock({x:x},$ctx1,1)});
  67729. //>>excludeEnd("ctx");
  67730. }));
  67731. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67732. $ctx1.sendIdx["at:ifPresent:"]=1;
  67733. //>>excludeEnd("ctx");
  67734. self._assert_equals_($1,nil);
  67735. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67736. $ctx1.sendIdx["assert:equals:"]=1;
  67737. //>>excludeEnd("ctx");
  67738. $3=$recv(testObject)._at_ifPresent_("e",(function(x){
  67739. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67740. return $core.withContext(function($ctx2) {
  67741. //>>excludeEnd("ctx");
  67742. $4=$recv(x)._asString();
  67743. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67744. $ctx2.sendIdx["asString"]=2;
  67745. //>>excludeEnd("ctx");
  67746. return "hello ".__comma($4);
  67747. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67748. $ctx2.sendIdx[","]=2;
  67749. //>>excludeEnd("ctx");
  67750. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67751. }, function($ctx2) {$ctx2.fillBlock({x:x},$ctx1,2)});
  67752. //>>excludeEnd("ctx");
  67753. }));
  67754. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67755. $ctx1.sendIdx["at:ifPresent:"]=2;
  67756. //>>excludeEnd("ctx");
  67757. self._assert_equals_($3,"hello nil");
  67758. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67759. $ctx1.sendIdx["assert:equals:"]=2;
  67760. //>>excludeEnd("ctx");
  67761. $5=$recv(testObject)._at_ifPresent_("a",(function(x){
  67762. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67763. return $core.withContext(function($ctx2) {
  67764. //>>excludeEnd("ctx");
  67765. $6=$recv(x)._asString();
  67766. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67767. $ctx2.sendIdx["asString"]=3;
  67768. //>>excludeEnd("ctx");
  67769. return "hello ".__comma($6);
  67770. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67771. $ctx2.sendIdx[","]=3;
  67772. //>>excludeEnd("ctx");
  67773. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67774. }, function($ctx2) {$ctx2.fillBlock({x:x},$ctx1,3)});
  67775. //>>excludeEnd("ctx");
  67776. }));
  67777. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67778. $ctx1.sendIdx["at:ifPresent:"]=3;
  67779. //>>excludeEnd("ctx");
  67780. self._assert_equals_($5,"hello 1");
  67781. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67782. $ctx1.sendIdx["assert:equals:"]=3;
  67783. //>>excludeEnd("ctx");
  67784. self._assert_equals_($recv(testObject)._at_ifPresent_("f",(function(x){
  67785. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67786. return $core.withContext(function($ctx2) {
  67787. //>>excludeEnd("ctx");
  67788. return "hello ".__comma($recv(x)._asString());
  67789. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67790. }, function($ctx2) {$ctx2.fillBlock({x:x},$ctx1,4)});
  67791. //>>excludeEnd("ctx");
  67792. })),"hello nil");
  67793. return self;
  67794. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67795. }, function($ctx1) {$ctx1.fill(self,"testAtIfPresent",{testObject:testObject},$globals.JSObjectProxyTest)});
  67796. //>>excludeEnd("ctx");
  67797. },
  67798. //>>excludeStart("ide", pragmas.excludeIdeData);
  67799. args: [],
  67800. 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'.",
  67801. referencedClasses: [],
  67802. //>>excludeEnd("ide");
  67803. messageSends: ["jsObject", "assert:equals:", "at:ifPresent:", ",", "asString"]
  67804. }),
  67805. $globals.JSObjectProxyTest);
  67806. $core.addMethod(
  67807. $core.method({
  67808. selector: "testAtIfPresentIfAbsent",
  67809. protocol: 'tests',
  67810. fn: function (){
  67811. var self=this;
  67812. var testObject;
  67813. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67814. return $core.withContext(function($ctx1) {
  67815. //>>excludeEnd("ctx");
  67816. var $2,$1,$4,$3,$6,$5;
  67817. testObject=self._jsObject();
  67818. $1=$recv(testObject)._at_ifPresent_ifAbsent_("abc",(function(x){
  67819. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67820. return $core.withContext(function($ctx2) {
  67821. //>>excludeEnd("ctx");
  67822. $2=$recv(x)._asString();
  67823. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67824. $ctx2.sendIdx["asString"]=1;
  67825. //>>excludeEnd("ctx");
  67826. return "hello ".__comma($2);
  67827. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67828. $ctx2.sendIdx[","]=1;
  67829. //>>excludeEnd("ctx");
  67830. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67831. }, function($ctx2) {$ctx2.fillBlock({x:x},$ctx1,1)});
  67832. //>>excludeEnd("ctx");
  67833. }),(function(){
  67834. return "not present";
  67835. }));
  67836. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67837. $ctx1.sendIdx["at:ifPresent:ifAbsent:"]=1;
  67838. //>>excludeEnd("ctx");
  67839. self._assert_equals_($1,"not present");
  67840. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67841. $ctx1.sendIdx["assert:equals:"]=1;
  67842. //>>excludeEnd("ctx");
  67843. $3=$recv(testObject)._at_ifPresent_ifAbsent_("e",(function(x){
  67844. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67845. return $core.withContext(function($ctx2) {
  67846. //>>excludeEnd("ctx");
  67847. $4=$recv(x)._asString();
  67848. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67849. $ctx2.sendIdx["asString"]=2;
  67850. //>>excludeEnd("ctx");
  67851. return "hello ".__comma($4);
  67852. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67853. $ctx2.sendIdx[","]=2;
  67854. //>>excludeEnd("ctx");
  67855. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67856. }, function($ctx2) {$ctx2.fillBlock({x:x},$ctx1,3)});
  67857. //>>excludeEnd("ctx");
  67858. }),(function(){
  67859. return "not present";
  67860. }));
  67861. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67862. $ctx1.sendIdx["at:ifPresent:ifAbsent:"]=2;
  67863. //>>excludeEnd("ctx");
  67864. self._assert_equals_($3,"hello nil");
  67865. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67866. $ctx1.sendIdx["assert:equals:"]=2;
  67867. //>>excludeEnd("ctx");
  67868. $5=$recv(testObject)._at_ifPresent_ifAbsent_("a",(function(x){
  67869. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67870. return $core.withContext(function($ctx2) {
  67871. //>>excludeEnd("ctx");
  67872. $6=$recv(x)._asString();
  67873. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67874. $ctx2.sendIdx["asString"]=3;
  67875. //>>excludeEnd("ctx");
  67876. return "hello ".__comma($6);
  67877. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67878. $ctx2.sendIdx[","]=3;
  67879. //>>excludeEnd("ctx");
  67880. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67881. }, function($ctx2) {$ctx2.fillBlock({x:x},$ctx1,5)});
  67882. //>>excludeEnd("ctx");
  67883. }),(function(){
  67884. return "not present";
  67885. }));
  67886. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67887. $ctx1.sendIdx["at:ifPresent:ifAbsent:"]=3;
  67888. //>>excludeEnd("ctx");
  67889. self._assert_equals_($5,"hello 1");
  67890. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67891. $ctx1.sendIdx["assert:equals:"]=3;
  67892. //>>excludeEnd("ctx");
  67893. self._assert_equals_($recv(testObject)._at_ifPresent_ifAbsent_("f",(function(x){
  67894. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67895. return $core.withContext(function($ctx2) {
  67896. //>>excludeEnd("ctx");
  67897. return "hello ".__comma($recv(x)._asString());
  67898. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67899. }, function($ctx2) {$ctx2.fillBlock({x:x},$ctx1,7)});
  67900. //>>excludeEnd("ctx");
  67901. }),(function(){
  67902. return "not present";
  67903. })),"hello nil");
  67904. return self;
  67905. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67906. }, function($ctx1) {$ctx1.fill(self,"testAtIfPresentIfAbsent",{testObject:testObject},$globals.JSObjectProxyTest)});
  67907. //>>excludeEnd("ctx");
  67908. },
  67909. //>>excludeStart("ide", pragmas.excludeIdeData);
  67910. args: [],
  67911. 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'.",
  67912. referencedClasses: [],
  67913. //>>excludeEnd("ide");
  67914. messageSends: ["jsObject", "assert:equals:", "at:ifPresent:ifAbsent:", ",", "asString"]
  67915. }),
  67916. $globals.JSObjectProxyTest);
  67917. $core.addMethod(
  67918. $core.method({
  67919. selector: "testAtPut",
  67920. protocol: 'tests',
  67921. fn: function (){
  67922. var self=this;
  67923. var testObject;
  67924. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67925. return $core.withContext(function($ctx1) {
  67926. //>>excludeEnd("ctx");
  67927. var $2,$1;
  67928. testObject=self._jsObject();
  67929. $2=$recv(testObject)._at_("abc");
  67930. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67931. $ctx1.sendIdx["at:"]=1;
  67932. //>>excludeEnd("ctx");
  67933. $1=$recv($2).__tild_eq("xyz");
  67934. self._assert_($1);
  67935. self._assert_equals_($recv(testObject)._at_put_("abc","xyz"),"xyz");
  67936. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67937. $ctx1.sendIdx["assert:equals:"]=1;
  67938. //>>excludeEnd("ctx");
  67939. self._assert_equals_($recv(testObject)._at_("abc"),"xyz");
  67940. return self;
  67941. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67942. }, function($ctx1) {$ctx1.fill(self,"testAtPut",{testObject:testObject},$globals.JSObjectProxyTest)});
  67943. //>>excludeEnd("ctx");
  67944. },
  67945. //>>excludeStart("ide", pragmas.excludeIdeData);
  67946. args: [],
  67947. 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'",
  67948. referencedClasses: [],
  67949. //>>excludeEnd("ide");
  67950. messageSends: ["jsObject", "assert:", "~=", "at:", "assert:equals:", "at:put:"]
  67951. }),
  67952. $globals.JSObjectProxyTest);
  67953. $core.addMethod(
  67954. $core.method({
  67955. selector: "testComparison",
  67956. protocol: 'tests',
  67957. fn: function (){
  67958. var self=this;
  67959. function $Object(){return $globals.Object||(typeof Object=="undefined"?nil:Object)}
  67960. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67961. return $core.withContext(function($ctx1) {
  67962. //>>excludeEnd("ctx");
  67963. var $1,$2;
  67964. self._assert_equals_($recv([console,(2)])._indexOf_(console),(1));
  67965. $1=$recv(console).__eq(console);
  67966. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67967. $ctx1.sendIdx["="]=1;
  67968. //>>excludeEnd("ctx");
  67969. self._assert_($1);
  67970. $2=$recv(console).__eq($recv($Object())._new());
  67971. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67972. $ctx1.sendIdx["="]=2;
  67973. //>>excludeEnd("ctx");
  67974. self._deny_($2);
  67975. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67976. $ctx1.sendIdx["deny:"]=1;
  67977. //>>excludeEnd("ctx");
  67978. self._deny_($recv(console).__eq(self._jsObject()));
  67979. return self;
  67980. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  67981. }, function($ctx1) {$ctx1.fill(self,"testComparison",{},$globals.JSObjectProxyTest)});
  67982. //>>excludeEnd("ctx");
  67983. },
  67984. //>>excludeStart("ide", pragmas.excludeIdeData);
  67985. args: [],
  67986. 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",
  67987. referencedClasses: ["Object"],
  67988. //>>excludeEnd("ide");
  67989. messageSends: ["assert:equals:", "indexOf:", "assert:", "=", "deny:", "new", "jsObject"]
  67990. }),
  67991. $globals.JSObjectProxyTest);
  67992. $core.addMethod(
  67993. $core.method({
  67994. selector: "testDNU",
  67995. protocol: 'tests',
  67996. fn: function (){
  67997. var self=this;
  67998. function $MessageNotUnderstood(){return $globals.MessageNotUnderstood||(typeof MessageNotUnderstood=="undefined"?nil:MessageNotUnderstood)}
  67999. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68000. return $core.withContext(function($ctx1) {
  68001. //>>excludeEnd("ctx");
  68002. self._should_raise_((function(){
  68003. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68004. return $core.withContext(function($ctx2) {
  68005. //>>excludeEnd("ctx");
  68006. return $recv(self._jsObject())._foo();
  68007. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68008. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  68009. //>>excludeEnd("ctx");
  68010. }),$MessageNotUnderstood());
  68011. return self;
  68012. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68013. }, function($ctx1) {$ctx1.fill(self,"testDNU",{},$globals.JSObjectProxyTest)});
  68014. //>>excludeEnd("ctx");
  68015. },
  68016. //>>excludeStart("ide", pragmas.excludeIdeData);
  68017. args: [],
  68018. source: "testDNU\x0a\x09self should: [ self jsObject foo ] raise: MessageNotUnderstood",
  68019. referencedClasses: ["MessageNotUnderstood"],
  68020. //>>excludeEnd("ide");
  68021. messageSends: ["should:raise:", "foo", "jsObject"]
  68022. }),
  68023. $globals.JSObjectProxyTest);
  68024. $core.addMethod(
  68025. $core.method({
  68026. selector: "testDNURegression1057",
  68027. protocol: 'tests',
  68028. fn: function (){
  68029. var self=this;
  68030. var jsObject;
  68031. function $Error(){return $globals.Error||(typeof Error=="undefined"?nil:Error)}
  68032. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68033. return $core.withContext(function($ctx1) {
  68034. //>>excludeEnd("ctx");
  68035. var $1;
  68036. jsObject=[];
  68037. $recv(jsObject)._basicAt_put_("allowJavaScriptCalls",true);
  68038. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68039. $ctx1.sendIdx["basicAt:put:"]=1;
  68040. //>>excludeEnd("ctx");
  68041. $recv(jsObject)._basicAt_put_("foo",(3));
  68042. self._shouldnt_raise_((function(){
  68043. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68044. return $core.withContext(function($ctx2) {
  68045. //>>excludeEnd("ctx");
  68046. return $recv(jsObject)._foo();
  68047. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68048. $ctx2.sendIdx["foo"]=1;
  68049. //>>excludeEnd("ctx");
  68050. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68051. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  68052. //>>excludeEnd("ctx");
  68053. }),$Error());
  68054. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68055. $ctx1.sendIdx["shouldnt:raise:"]=1;
  68056. //>>excludeEnd("ctx");
  68057. $1=$recv(jsObject)._foo();
  68058. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68059. $ctx1.sendIdx["foo"]=2;
  68060. //>>excludeEnd("ctx");
  68061. self._assert_equals_($1,(3));
  68062. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68063. $ctx1.sendIdx["assert:equals:"]=1;
  68064. //>>excludeEnd("ctx");
  68065. self._shouldnt_raise_((function(){
  68066. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68067. return $core.withContext(function($ctx2) {
  68068. //>>excludeEnd("ctx");
  68069. return $recv(jsObject)._foo_((4));
  68070. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68071. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
  68072. //>>excludeEnd("ctx");
  68073. }),$Error());
  68074. self._assert_equals_($recv(jsObject)._foo(),(4));
  68075. return self;
  68076. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68077. }, function($ctx1) {$ctx1.fill(self,"testDNURegression1057",{jsObject:jsObject},$globals.JSObjectProxyTest)});
  68078. //>>excludeEnd("ctx");
  68079. },
  68080. //>>excludeStart("ide", pragmas.excludeIdeData);
  68081. args: [],
  68082. source: "testDNURegression1057\x0a\x09| jsObject |\x0a\x09jsObject := #().\x0a\x09jsObject basicAt: 'allowJavaScriptCalls' put: true.\x0a\x09jsObject basicAt: 'foo' put: 3.\x0a\x09self shouldnt: [ jsObject foo ] raise: Error.\x0a\x09self assert: jsObject foo equals: 3.\x0a\x09self shouldnt: [ jsObject foo: 4 ] raise: Error.\x0a\x09self assert: jsObject foo equals: 4",
  68083. referencedClasses: ["Error"],
  68084. //>>excludeEnd("ide");
  68085. messageSends: ["basicAt:put:", "shouldnt:raise:", "foo", "assert:equals:", "foo:"]
  68086. }),
  68087. $globals.JSObjectProxyTest);
  68088. $core.addMethod(
  68089. $core.method({
  68090. selector: "testDNURegression1059",
  68091. protocol: 'tests',
  68092. fn: function (){
  68093. var self=this;
  68094. var jsObject;
  68095. function $Error(){return $globals.Error||(typeof Error=="undefined"?nil:Error)}
  68096. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68097. return $core.withContext(function($ctx1) {
  68098. //>>excludeEnd("ctx");
  68099. jsObject=[];
  68100. $recv(jsObject)._basicAt_put_("allowJavaScriptCalls",true);
  68101. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68102. $ctx1.sendIdx["basicAt:put:"]=1;
  68103. //>>excludeEnd("ctx");
  68104. $recv(jsObject)._basicAt_put_("x",(3));
  68105. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68106. $ctx1.sendIdx["basicAt:put:"]=2;
  68107. //>>excludeEnd("ctx");
  68108. $recv(jsObject)._basicAt_put_("x:",(function(){
  68109. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68110. return $core.withContext(function($ctx2) {
  68111. //>>excludeEnd("ctx");
  68112. return self._error();
  68113. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68114. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  68115. //>>excludeEnd("ctx");
  68116. }));
  68117. self._shouldnt_raise_((function(){
  68118. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68119. return $core.withContext(function($ctx2) {
  68120. //>>excludeEnd("ctx");
  68121. return $recv(jsObject)._x_((4));
  68122. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68123. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
  68124. //>>excludeEnd("ctx");
  68125. }),$Error());
  68126. self._assert_equals_($recv(jsObject)._x(),(4));
  68127. return self;
  68128. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68129. }, function($ctx1) {$ctx1.fill(self,"testDNURegression1059",{jsObject:jsObject},$globals.JSObjectProxyTest)});
  68130. //>>excludeEnd("ctx");
  68131. },
  68132. //>>excludeStart("ide", pragmas.excludeIdeData);
  68133. args: [],
  68134. source: "testDNURegression1059\x0a\x09| jsObject |\x0a\x09jsObject := #().\x0a\x09jsObject basicAt: 'allowJavaScriptCalls' put: true.\x0a\x09jsObject basicAt: 'x' put: 3.\x0a\x09jsObject basicAt: 'x:' put: [ self error ].\x0a\x09self shouldnt: [ jsObject x: 4 ] raise: Error.\x0a\x09self assert: jsObject x equals: 4",
  68135. referencedClasses: ["Error"],
  68136. //>>excludeEnd("ide");
  68137. messageSends: ["basicAt:put:", "error", "shouldnt:raise:", "x:", "assert:equals:", "x"]
  68138. }),
  68139. $globals.JSObjectProxyTest);
  68140. $core.addMethod(
  68141. $core.method({
  68142. selector: "testDNURegression1062",
  68143. protocol: 'tests',
  68144. fn: function (){
  68145. var self=this;
  68146. var jsObject,stored;
  68147. function $Error(){return $globals.Error||(typeof Error=="undefined"?nil:Error)}
  68148. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68149. return $core.withContext(function($ctx1) {
  68150. //>>excludeEnd("ctx");
  68151. jsObject=[];
  68152. $recv(jsObject)._basicAt_put_("allowJavaScriptCalls",true);
  68153. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68154. $ctx1.sendIdx["basicAt:put:"]=1;
  68155. //>>excludeEnd("ctx");
  68156. $recv(jsObject)._basicAt_put_("x",(function(v){
  68157. stored=v;
  68158. return stored;
  68159. }));
  68160. self._shouldnt_raise_((function(){
  68161. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68162. return $core.withContext(function($ctx2) {
  68163. //>>excludeEnd("ctx");
  68164. return $recv(jsObject)._x_((4));
  68165. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68166. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
  68167. //>>excludeEnd("ctx");
  68168. }),$Error());
  68169. self._assert_equals_(stored,(4));
  68170. return self;
  68171. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68172. }, function($ctx1) {$ctx1.fill(self,"testDNURegression1062",{jsObject:jsObject,stored:stored},$globals.JSObjectProxyTest)});
  68173. //>>excludeEnd("ctx");
  68174. },
  68175. //>>excludeStart("ide", pragmas.excludeIdeData);
  68176. args: [],
  68177. source: "testDNURegression1062\x0a\x09| jsObject stored |\x0a\x09jsObject := #().\x0a\x09jsObject basicAt: 'allowJavaScriptCalls' put: true.\x0a\x09jsObject basicAt: 'x' put: [ :v | stored := v ].\x0a\x09self shouldnt: [ jsObject x: 4 ] raise: Error.\x0a\x09self assert: stored equals: 4",
  68178. referencedClasses: ["Error"],
  68179. //>>excludeEnd("ide");
  68180. messageSends: ["basicAt:put:", "shouldnt:raise:", "x:", "assert:equals:"]
  68181. }),
  68182. $globals.JSObjectProxyTest);
  68183. $core.addMethod(
  68184. $core.method({
  68185. selector: "testMessageSend",
  68186. protocol: 'tests',
  68187. fn: function (){
  68188. var self=this;
  68189. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68190. return $core.withContext(function($ctx1) {
  68191. //>>excludeEnd("ctx");
  68192. var $2,$1,$4,$3;
  68193. $2=self._jsObject();
  68194. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68195. $ctx1.sendIdx["jsObject"]=1;
  68196. //>>excludeEnd("ctx");
  68197. $1=$recv($2)._a();
  68198. self._assert_equals_($1,(1));
  68199. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68200. $ctx1.sendIdx["assert:equals:"]=1;
  68201. //>>excludeEnd("ctx");
  68202. $4=self._jsObject();
  68203. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68204. $ctx1.sendIdx["jsObject"]=2;
  68205. //>>excludeEnd("ctx");
  68206. $3=$recv($4)._b();
  68207. self._assert_equals_($3,(2));
  68208. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68209. $ctx1.sendIdx["assert:equals:"]=2;
  68210. //>>excludeEnd("ctx");
  68211. self._assert_equals_($recv(self._jsObject())._c_((3)),(3));
  68212. return self;
  68213. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68214. }, function($ctx1) {$ctx1.fill(self,"testMessageSend",{},$globals.JSObjectProxyTest)});
  68215. //>>excludeEnd("ctx");
  68216. },
  68217. //>>excludeStart("ide", pragmas.excludeIdeData);
  68218. args: [],
  68219. 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",
  68220. referencedClasses: [],
  68221. //>>excludeEnd("ide");
  68222. messageSends: ["assert:equals:", "a", "jsObject", "b", "c:"]
  68223. }),
  68224. $globals.JSObjectProxyTest);
  68225. $core.addMethod(
  68226. $core.method({
  68227. selector: "testMethodWithArguments",
  68228. protocol: 'tests',
  68229. fn: function (){
  68230. var self=this;
  68231. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68232. return $core.withContext(function($ctx1) {
  68233. //>>excludeEnd("ctx");
  68234. self._assert_equals_($recv(self._jsObject())._c_((1)),(1));
  68235. return self;
  68236. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68237. }, function($ctx1) {$ctx1.fill(self,"testMethodWithArguments",{},$globals.JSObjectProxyTest)});
  68238. //>>excludeEnd("ctx");
  68239. },
  68240. //>>excludeStart("ide", pragmas.excludeIdeData);
  68241. args: [],
  68242. source: "testMethodWithArguments\x0a\x09self assert: (self jsObject c: 1) equals: 1",
  68243. referencedClasses: [],
  68244. //>>excludeEnd("ide");
  68245. messageSends: ["assert:equals:", "c:", "jsObject"]
  68246. }),
  68247. $globals.JSObjectProxyTest);
  68248. $core.addMethod(
  68249. $core.method({
  68250. selector: "testPrinting",
  68251. protocol: 'tests',
  68252. fn: function (){
  68253. var self=this;
  68254. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68255. return $core.withContext(function($ctx1) {
  68256. //>>excludeEnd("ctx");
  68257. self._assert_equals_($recv(self._jsObject())._printString(),"[object Object]");
  68258. return self;
  68259. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68260. }, function($ctx1) {$ctx1.fill(self,"testPrinting",{},$globals.JSObjectProxyTest)});
  68261. //>>excludeEnd("ctx");
  68262. },
  68263. //>>excludeStart("ide", pragmas.excludeIdeData);
  68264. args: [],
  68265. source: "testPrinting\x0a\x09self assert: self jsObject printString equals: '[object Object]'",
  68266. referencedClasses: [],
  68267. //>>excludeEnd("ide");
  68268. messageSends: ["assert:equals:", "printString", "jsObject"]
  68269. }),
  68270. $globals.JSObjectProxyTest);
  68271. $core.addMethod(
  68272. $core.method({
  68273. selector: "testPropertyThatReturnsEmptyString",
  68274. protocol: 'tests',
  68275. fn: function (){
  68276. var self=this;
  68277. var object;
  68278. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68279. return $core.withContext(function($ctx1) {
  68280. //>>excludeEnd("ctx");
  68281. var $1;
  68282. object=self._jsObject();
  68283. $1=$recv(object)._d();
  68284. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68285. $ctx1.sendIdx["d"]=1;
  68286. //>>excludeEnd("ctx");
  68287. self._assert_equals_($1,"");
  68288. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68289. $ctx1.sendIdx["assert:equals:"]=1;
  68290. //>>excludeEnd("ctx");
  68291. $recv(object)._d_("hello");
  68292. self._assert_equals_($recv(object)._d(),"hello");
  68293. return self;
  68294. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68295. }, function($ctx1) {$ctx1.fill(self,"testPropertyThatReturnsEmptyString",{object:object},$globals.JSObjectProxyTest)});
  68296. //>>excludeEnd("ctx");
  68297. },
  68298. //>>excludeStart("ide", pragmas.excludeIdeData);
  68299. args: [],
  68300. 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'",
  68301. referencedClasses: [],
  68302. //>>excludeEnd("ide");
  68303. messageSends: ["jsObject", "assert:equals:", "d", "d:"]
  68304. }),
  68305. $globals.JSObjectProxyTest);
  68306. $core.addMethod(
  68307. $core.method({
  68308. selector: "testPropertyThatReturnsUndefined",
  68309. protocol: 'tests',
  68310. fn: function (){
  68311. var self=this;
  68312. var object;
  68313. function $MessageNotUnderstood(){return $globals.MessageNotUnderstood||(typeof MessageNotUnderstood=="undefined"?nil:MessageNotUnderstood)}
  68314. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68315. return $core.withContext(function($ctx1) {
  68316. //>>excludeEnd("ctx");
  68317. object=self._jsObject();
  68318. self._shouldnt_raise_((function(){
  68319. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68320. return $core.withContext(function($ctx2) {
  68321. //>>excludeEnd("ctx");
  68322. return $recv(object)._e();
  68323. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68324. $ctx2.sendIdx["e"]=1;
  68325. //>>excludeEnd("ctx");
  68326. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68327. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  68328. //>>excludeEnd("ctx");
  68329. }),$MessageNotUnderstood());
  68330. self._assert_($recv($recv(object)._e())._isNil());
  68331. return self;
  68332. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68333. }, function($ctx1) {$ctx1.fill(self,"testPropertyThatReturnsUndefined",{object:object},$globals.JSObjectProxyTest)});
  68334. //>>excludeEnd("ctx");
  68335. },
  68336. //>>excludeStart("ide", pragmas.excludeIdeData);
  68337. args: [],
  68338. source: "testPropertyThatReturnsUndefined\x0a\x09| object |\x0a\x0a\x09object := self jsObject.\x0a\x09self shouldnt: [ object e ] raise: MessageNotUnderstood.\x0a\x09self assert: object e isNil",
  68339. referencedClasses: ["MessageNotUnderstood"],
  68340. //>>excludeEnd("ide");
  68341. messageSends: ["jsObject", "shouldnt:raise:", "e", "assert:", "isNil"]
  68342. }),
  68343. $globals.JSObjectProxyTest);
  68344. $core.addMethod(
  68345. $core.method({
  68346. selector: "testSetPropertyWithFalsyValue",
  68347. protocol: 'tests',
  68348. fn: function (){
  68349. var self=this;
  68350. var jsObject;
  68351. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68352. return $core.withContext(function($ctx1) {
  68353. //>>excludeEnd("ctx");
  68354. var $1,$2,$3,$4,$5;
  68355. jsObject=self._jsObject();
  68356. $1=$recv(jsObject)._a();
  68357. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68358. $ctx1.sendIdx["a"]=1;
  68359. //>>excludeEnd("ctx");
  68360. self._assert_equals_($1,(1));
  68361. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68362. $ctx1.sendIdx["assert:equals:"]=1;
  68363. //>>excludeEnd("ctx");
  68364. $recv(jsObject)._a_(self._jsNull());
  68365. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68366. $ctx1.sendIdx["a:"]=1;
  68367. //>>excludeEnd("ctx");
  68368. $2=$recv(jsObject)._a();
  68369. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68370. $ctx1.sendIdx["a"]=2;
  68371. //>>excludeEnd("ctx");
  68372. self._assert_equals_($2,nil);
  68373. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68374. $ctx1.sendIdx["assert:equals:"]=2;
  68375. //>>excludeEnd("ctx");
  68376. $recv(jsObject)._a_((0));
  68377. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68378. $ctx1.sendIdx["a:"]=2;
  68379. //>>excludeEnd("ctx");
  68380. $3=$recv(jsObject)._a();
  68381. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68382. $ctx1.sendIdx["a"]=3;
  68383. //>>excludeEnd("ctx");
  68384. self._assert_equals_($3,(0));
  68385. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68386. $ctx1.sendIdx["assert:equals:"]=3;
  68387. //>>excludeEnd("ctx");
  68388. $recv(jsObject)._a_(self._jsUndefined());
  68389. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68390. $ctx1.sendIdx["a:"]=3;
  68391. //>>excludeEnd("ctx");
  68392. $4=$recv(jsObject)._a();
  68393. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68394. $ctx1.sendIdx["a"]=4;
  68395. //>>excludeEnd("ctx");
  68396. self._assert_equals_($4,nil);
  68397. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68398. $ctx1.sendIdx["assert:equals:"]=4;
  68399. //>>excludeEnd("ctx");
  68400. $recv(jsObject)._a_("");
  68401. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68402. $ctx1.sendIdx["a:"]=4;
  68403. //>>excludeEnd("ctx");
  68404. $5=$recv(jsObject)._a();
  68405. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68406. $ctx1.sendIdx["a"]=5;
  68407. //>>excludeEnd("ctx");
  68408. self._assert_equals_($5,"");
  68409. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68410. $ctx1.sendIdx["assert:equals:"]=5;
  68411. //>>excludeEnd("ctx");
  68412. $recv(jsObject)._a_(false);
  68413. self._assert_equals_($recv(jsObject)._a(),false);
  68414. return self;
  68415. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68416. }, function($ctx1) {$ctx1.fill(self,"testSetPropertyWithFalsyValue",{jsObject:jsObject},$globals.JSObjectProxyTest)});
  68417. //>>excludeEnd("ctx");
  68418. },
  68419. //>>excludeStart("ide", pragmas.excludeIdeData);
  68420. args: [],
  68421. source: "testSetPropertyWithFalsyValue\x0a\x09| jsObject |\x0a\x09jsObject := self jsObject.\x0a\x09self assert: (jsObject a) equals: 1.\x0a\x0a\x09jsObject a: self jsNull.\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",
  68422. referencedClasses: [],
  68423. //>>excludeEnd("ide");
  68424. messageSends: ["jsObject", "assert:equals:", "a", "a:", "jsNull", "jsUndefined"]
  68425. }),
  68426. $globals.JSObjectProxyTest);
  68427. $core.addMethod(
  68428. $core.method({
  68429. selector: "testValue",
  68430. protocol: 'tests',
  68431. fn: function (){
  68432. var self=this;
  68433. var testObject;
  68434. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68435. return $core.withContext(function($ctx1) {
  68436. //>>excludeEnd("ctx");
  68437. testObject=self._jsObject();
  68438. $recv(testObject)._at_put_("value","aValue");
  68439. self._assert_equals_($recv(testObject)._value(),"aValue");
  68440. return self;
  68441. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68442. }, function($ctx1) {$ctx1.fill(self,"testValue",{testObject:testObject},$globals.JSObjectProxyTest)});
  68443. //>>excludeEnd("ctx");
  68444. },
  68445. //>>excludeStart("ide", pragmas.excludeIdeData);
  68446. args: [],
  68447. source: "testValue\x0a\x09| testObject |\x0a\x09testObject := self jsObject.\x0a\x09testObject at: 'value' put: 'aValue'.\x0a\x09self assert: testObject value equals: 'aValue'",
  68448. referencedClasses: [],
  68449. //>>excludeEnd("ide");
  68450. messageSends: ["jsObject", "at:put:", "assert:equals:", "value"]
  68451. }),
  68452. $globals.JSObjectProxyTest);
  68453. $core.addMethod(
  68454. $core.method({
  68455. selector: "testYourself",
  68456. protocol: 'tests',
  68457. fn: function (){
  68458. var self=this;
  68459. var object;
  68460. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68461. return $core.withContext(function($ctx1) {
  68462. //>>excludeEnd("ctx");
  68463. var $1,$2;
  68464. $1=self._jsObject();
  68465. $recv($1)._d_("test");
  68466. $2=$recv($1)._yourself();
  68467. object=$2;
  68468. self._assert_equals_($recv(object)._d(),"test");
  68469. return self;
  68470. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68471. }, function($ctx1) {$ctx1.fill(self,"testYourself",{object:object},$globals.JSObjectProxyTest)});
  68472. //>>excludeEnd("ctx");
  68473. },
  68474. //>>excludeStart("ide", pragmas.excludeIdeData);
  68475. args: [],
  68476. source: "testYourself\x0a\x09| object |\x0a\x09object := self jsObject\x0a\x09\x09d: 'test';\x0a\x09\x09yourself.\x0a\x0a\x09self assert: object d equals: 'test'",
  68477. referencedClasses: [],
  68478. //>>excludeEnd("ide");
  68479. messageSends: ["d:", "jsObject", "yourself", "assert:equals:", "d"]
  68480. }),
  68481. $globals.JSObjectProxyTest);
  68482. $core.addClass('JavaScriptExceptionTest', $globals.TestCase, [], 'Kernel-Tests');
  68483. $core.addMethod(
  68484. $core.method({
  68485. selector: "testCatchingException",
  68486. protocol: 'tests',
  68487. fn: function (){
  68488. var self=this;
  68489. function $Error(){return $globals.Error||(typeof Error=="undefined"?nil:Error)}
  68490. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68491. return $core.withContext(function($ctx1) {
  68492. //>>excludeEnd("ctx");
  68493. $recv((function(){
  68494. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68495. return $core.withContext(function($ctx2) {
  68496. //>>excludeEnd("ctx");
  68497. return self._throwException();
  68498. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68499. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  68500. //>>excludeEnd("ctx");
  68501. }))._on_do_($Error(),(function(error){
  68502. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68503. return $core.withContext(function($ctx2) {
  68504. //>>excludeEnd("ctx");
  68505. return self._assert_($recv($recv(error)._exception()).__eq("test"));
  68506. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68507. }, function($ctx2) {$ctx2.fillBlock({error:error},$ctx1,2)});
  68508. //>>excludeEnd("ctx");
  68509. }));
  68510. return self;
  68511. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68512. }, function($ctx1) {$ctx1.fill(self,"testCatchingException",{},$globals.JavaScriptExceptionTest)});
  68513. //>>excludeEnd("ctx");
  68514. },
  68515. //>>excludeStart("ide", pragmas.excludeIdeData);
  68516. args: [],
  68517. source: "testCatchingException\x0a\x09[ self throwException ]\x0a\x09\x09on: Error\x0a\x09\x09do: [ :error |\x0a\x09\x09\x09self assert: error exception = 'test' ]",
  68518. referencedClasses: ["Error"],
  68519. //>>excludeEnd("ide");
  68520. messageSends: ["on:do:", "throwException", "assert:", "=", "exception"]
  68521. }),
  68522. $globals.JavaScriptExceptionTest);
  68523. $core.addMethod(
  68524. $core.method({
  68525. selector: "testRaisingException",
  68526. protocol: 'tests',
  68527. fn: function (){
  68528. var self=this;
  68529. function $JavaScriptException(){return $globals.JavaScriptException||(typeof JavaScriptException=="undefined"?nil:JavaScriptException)}
  68530. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68531. return $core.withContext(function($ctx1) {
  68532. //>>excludeEnd("ctx");
  68533. self._should_raise_((function(){
  68534. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68535. return $core.withContext(function($ctx2) {
  68536. //>>excludeEnd("ctx");
  68537. return self._throwException();
  68538. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68539. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  68540. //>>excludeEnd("ctx");
  68541. }),$JavaScriptException());
  68542. return self;
  68543. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68544. }, function($ctx1) {$ctx1.fill(self,"testRaisingException",{},$globals.JavaScriptExceptionTest)});
  68545. //>>excludeEnd("ctx");
  68546. },
  68547. //>>excludeStart("ide", pragmas.excludeIdeData);
  68548. args: [],
  68549. source: "testRaisingException\x0a\x09self should: [ self throwException ] raise: JavaScriptException",
  68550. referencedClasses: ["JavaScriptException"],
  68551. //>>excludeEnd("ide");
  68552. messageSends: ["should:raise:", "throwException"]
  68553. }),
  68554. $globals.JavaScriptExceptionTest);
  68555. $core.addMethod(
  68556. $core.method({
  68557. selector: "throwException",
  68558. protocol: 'helpers',
  68559. fn: function (){
  68560. var self=this;
  68561. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68562. return $core.withContext(function($ctx1) {
  68563. //>>excludeEnd("ctx");
  68564. throw 'test';
  68565. return self;
  68566. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68567. }, function($ctx1) {$ctx1.fill(self,"throwException",{},$globals.JavaScriptExceptionTest)});
  68568. //>>excludeEnd("ctx");
  68569. },
  68570. //>>excludeStart("ide", pragmas.excludeIdeData);
  68571. args: [],
  68572. source: "throwException\x0a\x09<throw 'test'>",
  68573. referencedClasses: [],
  68574. //>>excludeEnd("ide");
  68575. messageSends: []
  68576. }),
  68577. $globals.JavaScriptExceptionTest);
  68578. $core.addClass('MessageSendTest', $globals.TestCase, [], 'Kernel-Tests');
  68579. $core.addMethod(
  68580. $core.method({
  68581. selector: "testValue",
  68582. protocol: 'tests',
  68583. fn: function (){
  68584. var self=this;
  68585. var messageSend;
  68586. function $MessageSend(){return $globals.MessageSend||(typeof MessageSend=="undefined"?nil:MessageSend)}
  68587. function $Object(){return $globals.Object||(typeof Object=="undefined"?nil:Object)}
  68588. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68589. return $core.withContext(function($ctx1) {
  68590. //>>excludeEnd("ctx");
  68591. var $1,$2;
  68592. $1=$recv($MessageSend())._new();
  68593. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68594. $ctx1.sendIdx["new"]=1;
  68595. //>>excludeEnd("ctx");
  68596. $recv($1)._receiver_($recv($Object())._new());
  68597. $recv($1)._selector_("asString");
  68598. $2=$recv($1)._yourself();
  68599. messageSend=$2;
  68600. self._assert_equals_($recv(messageSend)._value(),"an Object");
  68601. return self;
  68602. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68603. }, function($ctx1) {$ctx1.fill(self,"testValue",{messageSend:messageSend},$globals.MessageSendTest)});
  68604. //>>excludeEnd("ctx");
  68605. },
  68606. //>>excludeStart("ide", pragmas.excludeIdeData);
  68607. args: [],
  68608. 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'",
  68609. referencedClasses: ["MessageSend", "Object"],
  68610. //>>excludeEnd("ide");
  68611. messageSends: ["receiver:", "new", "selector:", "yourself", "assert:equals:", "value"]
  68612. }),
  68613. $globals.MessageSendTest);
  68614. $core.addMethod(
  68615. $core.method({
  68616. selector: "testValueWithArguments",
  68617. protocol: 'tests',
  68618. fn: function (){
  68619. var self=this;
  68620. var messageSend;
  68621. function $MessageSend(){return $globals.MessageSend||(typeof MessageSend=="undefined"?nil:MessageSend)}
  68622. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68623. return $core.withContext(function($ctx1) {
  68624. //>>excludeEnd("ctx");
  68625. var $1,$2;
  68626. $1=$recv($MessageSend())._new();
  68627. $recv($1)._receiver_((2));
  68628. $recv($1)._selector_("+");
  68629. $2=$recv($1)._yourself();
  68630. messageSend=$2;
  68631. self._assert_equals_($recv(messageSend)._value_((3)),(5));
  68632. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68633. $ctx1.sendIdx["assert:equals:"]=1;
  68634. //>>excludeEnd("ctx");
  68635. self._assert_equals_($recv(messageSend)._valueWithPossibleArguments_([(4)]),(6));
  68636. return self;
  68637. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68638. }, function($ctx1) {$ctx1.fill(self,"testValueWithArguments",{messageSend:messageSend},$globals.MessageSendTest)});
  68639. //>>excludeEnd("ctx");
  68640. },
  68641. //>>excludeStart("ide", pragmas.excludeIdeData);
  68642. args: [],
  68643. 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",
  68644. referencedClasses: ["MessageSend"],
  68645. //>>excludeEnd("ide");
  68646. messageSends: ["receiver:", "new", "selector:", "yourself", "assert:equals:", "value:", "valueWithPossibleArguments:"]
  68647. }),
  68648. $globals.MessageSendTest);
  68649. $core.addClass('MethodInheritanceTest', $globals.TestCase, ['receiverTop', 'receiverMiddle', 'receiverBottom', 'method', 'performBlock'], 'Kernel-Tests');
  68650. $core.addMethod(
  68651. $core.method({
  68652. selector: "codeGeneratorClass",
  68653. protocol: 'accessing',
  68654. fn: function (){
  68655. var self=this;
  68656. function $CodeGenerator(){return $globals.CodeGenerator||(typeof CodeGenerator=="undefined"?nil:CodeGenerator)}
  68657. return $CodeGenerator();
  68658. },
  68659. //>>excludeStart("ide", pragmas.excludeIdeData);
  68660. args: [],
  68661. source: "codeGeneratorClass\x0a\x09^ CodeGenerator",
  68662. referencedClasses: ["CodeGenerator"],
  68663. //>>excludeEnd("ide");
  68664. messageSends: []
  68665. }),
  68666. $globals.MethodInheritanceTest);
  68667. $core.addMethod(
  68668. $core.method({
  68669. selector: "compiler",
  68670. protocol: 'factory',
  68671. fn: function (){
  68672. var self=this;
  68673. function $Compiler(){return $globals.Compiler||(typeof Compiler=="undefined"?nil:Compiler)}
  68674. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68675. return $core.withContext(function($ctx1) {
  68676. //>>excludeEnd("ctx");
  68677. var $2,$3,$1;
  68678. $2=$recv($Compiler())._new();
  68679. $recv($2)._codeGeneratorClass_(self._codeGeneratorClass());
  68680. $3=$recv($2)._yourself();
  68681. $1=$3;
  68682. return $1;
  68683. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68684. }, function($ctx1) {$ctx1.fill(self,"compiler",{},$globals.MethodInheritanceTest)});
  68685. //>>excludeEnd("ctx");
  68686. },
  68687. //>>excludeStart("ide", pragmas.excludeIdeData);
  68688. args: [],
  68689. source: "compiler\x0a\x09^ Compiler new\x0a\x09\x09codeGeneratorClass: self codeGeneratorClass;\x0a\x09\x09yourself",
  68690. referencedClasses: ["Compiler"],
  68691. //>>excludeEnd("ide");
  68692. messageSends: ["codeGeneratorClass:", "new", "codeGeneratorClass", "yourself"]
  68693. }),
  68694. $globals.MethodInheritanceTest);
  68695. $core.addMethod(
  68696. $core.method({
  68697. selector: "deinstallBottom",
  68698. protocol: 'testing',
  68699. fn: function (){
  68700. var self=this;
  68701. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68702. return $core.withContext(function($ctx1) {
  68703. //>>excludeEnd("ctx");
  68704. $recv(self._targetClassBottom())._removeCompiledMethod_(self["@method"]);
  68705. return self;
  68706. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68707. }, function($ctx1) {$ctx1.fill(self,"deinstallBottom",{},$globals.MethodInheritanceTest)});
  68708. //>>excludeEnd("ctx");
  68709. },
  68710. //>>excludeStart("ide", pragmas.excludeIdeData);
  68711. args: [],
  68712. source: "deinstallBottom\x0a\x09self targetClassBottom removeCompiledMethod: method",
  68713. referencedClasses: [],
  68714. //>>excludeEnd("ide");
  68715. messageSends: ["removeCompiledMethod:", "targetClassBottom"]
  68716. }),
  68717. $globals.MethodInheritanceTest);
  68718. $core.addMethod(
  68719. $core.method({
  68720. selector: "deinstallMiddle",
  68721. protocol: 'testing',
  68722. fn: function (){
  68723. var self=this;
  68724. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68725. return $core.withContext(function($ctx1) {
  68726. //>>excludeEnd("ctx");
  68727. $recv(self._targetClassMiddle())._removeCompiledMethod_(self["@method"]);
  68728. return self;
  68729. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68730. }, function($ctx1) {$ctx1.fill(self,"deinstallMiddle",{},$globals.MethodInheritanceTest)});
  68731. //>>excludeEnd("ctx");
  68732. },
  68733. //>>excludeStart("ide", pragmas.excludeIdeData);
  68734. args: [],
  68735. source: "deinstallMiddle\x0a\x09self targetClassMiddle removeCompiledMethod: method",
  68736. referencedClasses: [],
  68737. //>>excludeEnd("ide");
  68738. messageSends: ["removeCompiledMethod:", "targetClassMiddle"]
  68739. }),
  68740. $globals.MethodInheritanceTest);
  68741. $core.addMethod(
  68742. $core.method({
  68743. selector: "deinstallTop",
  68744. protocol: 'testing',
  68745. fn: function (){
  68746. var self=this;
  68747. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68748. return $core.withContext(function($ctx1) {
  68749. //>>excludeEnd("ctx");
  68750. $recv(self._targetClassTop())._removeCompiledMethod_(self["@method"]);
  68751. return self;
  68752. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68753. }, function($ctx1) {$ctx1.fill(self,"deinstallTop",{},$globals.MethodInheritanceTest)});
  68754. //>>excludeEnd("ctx");
  68755. },
  68756. //>>excludeStart("ide", pragmas.excludeIdeData);
  68757. args: [],
  68758. source: "deinstallTop\x0a\x09self targetClassTop removeCompiledMethod: method",
  68759. referencedClasses: [],
  68760. //>>excludeEnd("ide");
  68761. messageSends: ["removeCompiledMethod:", "targetClassTop"]
  68762. }),
  68763. $globals.MethodInheritanceTest);
  68764. $core.addMethod(
  68765. $core.method({
  68766. selector: "installBottom:",
  68767. protocol: 'testing',
  68768. fn: function (aString){
  68769. var self=this;
  68770. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68771. return $core.withContext(function($ctx1) {
  68772. //>>excludeEnd("ctx");
  68773. self["@method"]=$recv(self._compiler())._install_forClass_protocol_(aString,self._targetClassBottom(),"tests");
  68774. return self;
  68775. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68776. }, function($ctx1) {$ctx1.fill(self,"installBottom:",{aString:aString},$globals.MethodInheritanceTest)});
  68777. //>>excludeEnd("ctx");
  68778. },
  68779. //>>excludeStart("ide", pragmas.excludeIdeData);
  68780. args: ["aString"],
  68781. source: "installBottom: aString\x0a\x09method := self compiler install: aString forClass: self targetClassBottom protocol: 'tests'",
  68782. referencedClasses: [],
  68783. //>>excludeEnd("ide");
  68784. messageSends: ["install:forClass:protocol:", "compiler", "targetClassBottom"]
  68785. }),
  68786. $globals.MethodInheritanceTest);
  68787. $core.addMethod(
  68788. $core.method({
  68789. selector: "installMiddle:",
  68790. protocol: 'testing',
  68791. fn: function (aString){
  68792. var self=this;
  68793. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68794. return $core.withContext(function($ctx1) {
  68795. //>>excludeEnd("ctx");
  68796. self["@method"]=$recv(self._compiler())._install_forClass_protocol_(aString,self._targetClassMiddle(),"tests");
  68797. return self;
  68798. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68799. }, function($ctx1) {$ctx1.fill(self,"installMiddle:",{aString:aString},$globals.MethodInheritanceTest)});
  68800. //>>excludeEnd("ctx");
  68801. },
  68802. //>>excludeStart("ide", pragmas.excludeIdeData);
  68803. args: ["aString"],
  68804. source: "installMiddle: aString\x0a\x09method := self compiler install: aString forClass: self targetClassMiddle protocol: 'tests'",
  68805. referencedClasses: [],
  68806. //>>excludeEnd("ide");
  68807. messageSends: ["install:forClass:protocol:", "compiler", "targetClassMiddle"]
  68808. }),
  68809. $globals.MethodInheritanceTest);
  68810. $core.addMethod(
  68811. $core.method({
  68812. selector: "installTop:",
  68813. protocol: 'testing',
  68814. fn: function (aString){
  68815. var self=this;
  68816. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68817. return $core.withContext(function($ctx1) {
  68818. //>>excludeEnd("ctx");
  68819. self["@method"]=$recv(self._compiler())._install_forClass_protocol_(aString,self._targetClassTop(),"tests");
  68820. return self;
  68821. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68822. }, function($ctx1) {$ctx1.fill(self,"installTop:",{aString:aString},$globals.MethodInheritanceTest)});
  68823. //>>excludeEnd("ctx");
  68824. },
  68825. //>>excludeStart("ide", pragmas.excludeIdeData);
  68826. args: ["aString"],
  68827. source: "installTop: aString\x0a\x09method := self compiler install: aString forClass: self targetClassTop protocol: 'tests'",
  68828. referencedClasses: [],
  68829. //>>excludeEnd("ide");
  68830. messageSends: ["install:forClass:protocol:", "compiler", "targetClassTop"]
  68831. }),
  68832. $globals.MethodInheritanceTest);
  68833. $core.addMethod(
  68834. $core.method({
  68835. selector: "setUp",
  68836. protocol: 'initialization',
  68837. fn: function (){
  68838. var self=this;
  68839. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68840. return $core.withContext(function($ctx1) {
  68841. //>>excludeEnd("ctx");
  68842. self["@receiverTop"]=$recv(self._targetClassTop())._new();
  68843. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68844. $ctx1.sendIdx["new"]=1;
  68845. //>>excludeEnd("ctx");
  68846. self["@receiverMiddle"]=$recv(self._targetClassMiddle())._new();
  68847. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68848. $ctx1.sendIdx["new"]=2;
  68849. //>>excludeEnd("ctx");
  68850. self["@receiverBottom"]=$recv(self._targetClassBottom())._new();
  68851. self["@method"]=nil;
  68852. self["@performBlock"]=(function(){
  68853. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68854. return $core.withContext(function($ctx2) {
  68855. //>>excludeEnd("ctx");
  68856. return self._error_("performBlock not initialized");
  68857. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68858. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  68859. //>>excludeEnd("ctx");
  68860. });
  68861. return self;
  68862. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68863. }, function($ctx1) {$ctx1.fill(self,"setUp",{},$globals.MethodInheritanceTest)});
  68864. //>>excludeEnd("ctx");
  68865. },
  68866. //>>excludeStart("ide", pragmas.excludeIdeData);
  68867. args: [],
  68868. 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' ]",
  68869. referencedClasses: [],
  68870. //>>excludeEnd("ide");
  68871. messageSends: ["new", "targetClassTop", "targetClassMiddle", "targetClassBottom", "error:"]
  68872. }),
  68873. $globals.MethodInheritanceTest);
  68874. $core.addMethod(
  68875. $core.method({
  68876. selector: "shouldMNU",
  68877. protocol: 'testing',
  68878. fn: function (){
  68879. var self=this;
  68880. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68881. return $core.withContext(function($ctx1) {
  68882. //>>excludeEnd("ctx");
  68883. self._shouldMNUTop();
  68884. self._shouldMNUMiddle();
  68885. self._shouldMNUBottom();
  68886. return self;
  68887. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68888. }, function($ctx1) {$ctx1.fill(self,"shouldMNU",{},$globals.MethodInheritanceTest)});
  68889. //>>excludeEnd("ctx");
  68890. },
  68891. //>>excludeStart("ide", pragmas.excludeIdeData);
  68892. args: [],
  68893. source: "shouldMNU\x0a\x09self shouldMNUTop.\x0a\x09self shouldMNUMiddle.\x0a\x09self shouldMNUBottom",
  68894. referencedClasses: [],
  68895. //>>excludeEnd("ide");
  68896. messageSends: ["shouldMNUTop", "shouldMNUMiddle", "shouldMNUBottom"]
  68897. }),
  68898. $globals.MethodInheritanceTest);
  68899. $core.addMethod(
  68900. $core.method({
  68901. selector: "shouldMNUBottom",
  68902. protocol: 'testing',
  68903. fn: function (){
  68904. var self=this;
  68905. function $MessageNotUnderstood(){return $globals.MessageNotUnderstood||(typeof MessageNotUnderstood=="undefined"?nil:MessageNotUnderstood)}
  68906. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68907. return $core.withContext(function($ctx1) {
  68908. //>>excludeEnd("ctx");
  68909. self._should_raise_((function(){
  68910. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68911. return $core.withContext(function($ctx2) {
  68912. //>>excludeEnd("ctx");
  68913. return $recv(self["@performBlock"])._value_(self["@receiverBottom"]);
  68914. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68915. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  68916. //>>excludeEnd("ctx");
  68917. }),$MessageNotUnderstood());
  68918. return self;
  68919. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68920. }, function($ctx1) {$ctx1.fill(self,"shouldMNUBottom",{},$globals.MethodInheritanceTest)});
  68921. //>>excludeEnd("ctx");
  68922. },
  68923. //>>excludeStart("ide", pragmas.excludeIdeData);
  68924. args: [],
  68925. source: "shouldMNUBottom\x0a\x09self should: [ performBlock value: receiverBottom ] raise: MessageNotUnderstood",
  68926. referencedClasses: ["MessageNotUnderstood"],
  68927. //>>excludeEnd("ide");
  68928. messageSends: ["should:raise:", "value:"]
  68929. }),
  68930. $globals.MethodInheritanceTest);
  68931. $core.addMethod(
  68932. $core.method({
  68933. selector: "shouldMNUMiddle",
  68934. protocol: 'testing',
  68935. fn: function (){
  68936. var self=this;
  68937. function $MessageNotUnderstood(){return $globals.MessageNotUnderstood||(typeof MessageNotUnderstood=="undefined"?nil:MessageNotUnderstood)}
  68938. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68939. return $core.withContext(function($ctx1) {
  68940. //>>excludeEnd("ctx");
  68941. self._should_raise_((function(){
  68942. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68943. return $core.withContext(function($ctx2) {
  68944. //>>excludeEnd("ctx");
  68945. return $recv(self["@performBlock"])._value_(self["@receiverMiddle"]);
  68946. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68947. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  68948. //>>excludeEnd("ctx");
  68949. }),$MessageNotUnderstood());
  68950. return self;
  68951. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68952. }, function($ctx1) {$ctx1.fill(self,"shouldMNUMiddle",{},$globals.MethodInheritanceTest)});
  68953. //>>excludeEnd("ctx");
  68954. },
  68955. //>>excludeStart("ide", pragmas.excludeIdeData);
  68956. args: [],
  68957. source: "shouldMNUMiddle\x0a\x09self should: [ performBlock value: receiverMiddle ] raise: MessageNotUnderstood",
  68958. referencedClasses: ["MessageNotUnderstood"],
  68959. //>>excludeEnd("ide");
  68960. messageSends: ["should:raise:", "value:"]
  68961. }),
  68962. $globals.MethodInheritanceTest);
  68963. $core.addMethod(
  68964. $core.method({
  68965. selector: "shouldMNUTop",
  68966. protocol: 'testing',
  68967. fn: function (){
  68968. var self=this;
  68969. function $MessageNotUnderstood(){return $globals.MessageNotUnderstood||(typeof MessageNotUnderstood=="undefined"?nil:MessageNotUnderstood)}
  68970. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68971. return $core.withContext(function($ctx1) {
  68972. //>>excludeEnd("ctx");
  68973. self._should_raise_((function(){
  68974. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68975. return $core.withContext(function($ctx2) {
  68976. //>>excludeEnd("ctx");
  68977. return $recv(self["@performBlock"])._value_(self["@receiverTop"]);
  68978. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68979. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  68980. //>>excludeEnd("ctx");
  68981. }),$MessageNotUnderstood());
  68982. return self;
  68983. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  68984. }, function($ctx1) {$ctx1.fill(self,"shouldMNUTop",{},$globals.MethodInheritanceTest)});
  68985. //>>excludeEnd("ctx");
  68986. },
  68987. //>>excludeStart("ide", pragmas.excludeIdeData);
  68988. args: [],
  68989. source: "shouldMNUTop\x0a\x09self should: [ performBlock value: receiverTop ] raise: MessageNotUnderstood",
  68990. referencedClasses: ["MessageNotUnderstood"],
  68991. //>>excludeEnd("ide");
  68992. messageSends: ["should:raise:", "value:"]
  68993. }),
  68994. $globals.MethodInheritanceTest);
  68995. $core.addMethod(
  68996. $core.method({
  68997. selector: "shouldReturn:",
  68998. protocol: 'testing',
  68999. fn: function (anObject){
  69000. var self=this;
  69001. var result;
  69002. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69003. return $core.withContext(function($ctx1) {
  69004. //>>excludeEnd("ctx");
  69005. result=$recv(self["@performBlock"])._value_(self["@receiverTop"]);
  69006. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69007. $ctx1.sendIdx["value:"]=1;
  69008. //>>excludeEnd("ctx");
  69009. self._assert_equals_(["top",anObject],["top",result]);
  69010. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69011. $ctx1.sendIdx["assert:equals:"]=1;
  69012. //>>excludeEnd("ctx");
  69013. result=$recv(self["@performBlock"])._value_(self["@receiverMiddle"]);
  69014. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69015. $ctx1.sendIdx["value:"]=2;
  69016. //>>excludeEnd("ctx");
  69017. self._assert_equals_(["middle",anObject],["middle",result]);
  69018. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69019. $ctx1.sendIdx["assert:equals:"]=2;
  69020. //>>excludeEnd("ctx");
  69021. result=$recv(self["@performBlock"])._value_(self["@receiverBottom"]);
  69022. self._assert_equals_(["bottom",anObject],["bottom",result]);
  69023. return self;
  69024. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69025. }, function($ctx1) {$ctx1.fill(self,"shouldReturn:",{anObject:anObject,result:result},$globals.MethodInheritanceTest)});
  69026. //>>excludeEnd("ctx");
  69027. },
  69028. //>>excludeStart("ide", pragmas.excludeIdeData);
  69029. args: ["anObject"],
  69030. 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 }",
  69031. referencedClasses: [],
  69032. //>>excludeEnd("ide");
  69033. messageSends: ["value:", "assert:equals:"]
  69034. }),
  69035. $globals.MethodInheritanceTest);
  69036. $core.addMethod(
  69037. $core.method({
  69038. selector: "shouldReturn:and:and:",
  69039. protocol: 'testing',
  69040. fn: function (anObject,anObject2,anObject3){
  69041. var self=this;
  69042. var result;
  69043. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69044. return $core.withContext(function($ctx1) {
  69045. //>>excludeEnd("ctx");
  69046. result=$recv(self["@performBlock"])._value_(self["@receiverTop"]);
  69047. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69048. $ctx1.sendIdx["value:"]=1;
  69049. //>>excludeEnd("ctx");
  69050. self._assert_equals_(["top",anObject],["top",result]);
  69051. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69052. $ctx1.sendIdx["assert:equals:"]=1;
  69053. //>>excludeEnd("ctx");
  69054. result=$recv(self["@performBlock"])._value_(self["@receiverMiddle"]);
  69055. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69056. $ctx1.sendIdx["value:"]=2;
  69057. //>>excludeEnd("ctx");
  69058. self._assert_equals_(["middle",anObject2],["middle",result]);
  69059. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69060. $ctx1.sendIdx["assert:equals:"]=2;
  69061. //>>excludeEnd("ctx");
  69062. result=$recv(self["@performBlock"])._value_(self["@receiverBottom"]);
  69063. self._assert_equals_(["bottom",anObject3],["bottom",result]);
  69064. return self;
  69065. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69066. }, function($ctx1) {$ctx1.fill(self,"shouldReturn:and:and:",{anObject:anObject,anObject2:anObject2,anObject3:anObject3,result:result},$globals.MethodInheritanceTest)});
  69067. //>>excludeEnd("ctx");
  69068. },
  69069. //>>excludeStart("ide", pragmas.excludeIdeData);
  69070. args: ["anObject", "anObject2", "anObject3"],
  69071. 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 }",
  69072. referencedClasses: [],
  69073. //>>excludeEnd("ide");
  69074. messageSends: ["value:", "assert:equals:"]
  69075. }),
  69076. $globals.MethodInheritanceTest);
  69077. $core.addMethod(
  69078. $core.method({
  69079. selector: "targetClassBottom",
  69080. protocol: 'accessing',
  69081. fn: function (){
  69082. var self=this;
  69083. function $JavaScriptException(){return $globals.JavaScriptException||(typeof JavaScriptException=="undefined"?nil:JavaScriptException)}
  69084. return $JavaScriptException();
  69085. },
  69086. //>>excludeStart("ide", pragmas.excludeIdeData);
  69087. args: [],
  69088. source: "targetClassBottom\x0a\x09^ JavaScriptException",
  69089. referencedClasses: ["JavaScriptException"],
  69090. //>>excludeEnd("ide");
  69091. messageSends: []
  69092. }),
  69093. $globals.MethodInheritanceTest);
  69094. $core.addMethod(
  69095. $core.method({
  69096. selector: "targetClassMiddle",
  69097. protocol: 'accessing',
  69098. fn: function (){
  69099. var self=this;
  69100. function $Error(){return $globals.Error||(typeof Error=="undefined"?nil:Error)}
  69101. return $Error();
  69102. },
  69103. //>>excludeStart("ide", pragmas.excludeIdeData);
  69104. args: [],
  69105. source: "targetClassMiddle\x0a\x09^ Error",
  69106. referencedClasses: ["Error"],
  69107. //>>excludeEnd("ide");
  69108. messageSends: []
  69109. }),
  69110. $globals.MethodInheritanceTest);
  69111. $core.addMethod(
  69112. $core.method({
  69113. selector: "targetClassTop",
  69114. protocol: 'accessing',
  69115. fn: function (){
  69116. var self=this;
  69117. function $Object(){return $globals.Object||(typeof Object=="undefined"?nil:Object)}
  69118. return $Object();
  69119. },
  69120. //>>excludeStart("ide", pragmas.excludeIdeData);
  69121. args: [],
  69122. source: "targetClassTop\x0a\x09^ Object",
  69123. referencedClasses: ["Object"],
  69124. //>>excludeEnd("ide");
  69125. messageSends: []
  69126. }),
  69127. $globals.MethodInheritanceTest);
  69128. $core.addMethod(
  69129. $core.method({
  69130. selector: "tearDown",
  69131. protocol: 'initialization',
  69132. fn: function (){
  69133. var self=this;
  69134. function $Error(){return $globals.Error||(typeof Error=="undefined"?nil:Error)}
  69135. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69136. return $core.withContext(function($ctx1) {
  69137. //>>excludeEnd("ctx");
  69138. $recv((function(){
  69139. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69140. return $core.withContext(function($ctx2) {
  69141. //>>excludeEnd("ctx");
  69142. return self._deinstallTop();
  69143. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69144. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  69145. //>>excludeEnd("ctx");
  69146. }))._on_do_($Error(),(function(){
  69147. }));
  69148. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69149. $ctx1.sendIdx["on:do:"]=1;
  69150. //>>excludeEnd("ctx");
  69151. $recv((function(){
  69152. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69153. return $core.withContext(function($ctx2) {
  69154. //>>excludeEnd("ctx");
  69155. return self._deinstallMiddle();
  69156. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69157. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,3)});
  69158. //>>excludeEnd("ctx");
  69159. }))._on_do_($Error(),(function(){
  69160. }));
  69161. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69162. $ctx1.sendIdx["on:do:"]=2;
  69163. //>>excludeEnd("ctx");
  69164. $recv((function(){
  69165. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69166. return $core.withContext(function($ctx2) {
  69167. //>>excludeEnd("ctx");
  69168. return self._deinstallBottom();
  69169. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69170. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,5)});
  69171. //>>excludeEnd("ctx");
  69172. }))._on_do_($Error(),(function(){
  69173. }));
  69174. return self;
  69175. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69176. }, function($ctx1) {$ctx1.fill(self,"tearDown",{},$globals.MethodInheritanceTest)});
  69177. //>>excludeEnd("ctx");
  69178. },
  69179. //>>excludeStart("ide", pragmas.excludeIdeData);
  69180. args: [],
  69181. source: "tearDown\x0a\x09[ self deinstallTop ] on: Error do: [ ].\x0a\x09[ self deinstallMiddle ] on: Error do: [ ].\x0a\x09[ self deinstallBottom ] on: Error do: [ ]",
  69182. referencedClasses: ["Error"],
  69183. //>>excludeEnd("ide");
  69184. messageSends: ["on:do:", "deinstallTop", "deinstallMiddle", "deinstallBottom"]
  69185. }),
  69186. $globals.MethodInheritanceTest);
  69187. $core.addMethod(
  69188. $core.method({
  69189. selector: "testMNU11",
  69190. protocol: 'tests',
  69191. fn: function (){
  69192. var self=this;
  69193. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69194. return $core.withContext(function($ctx1) {
  69195. //>>excludeEnd("ctx");
  69196. self["@performBlock"]=(function(x){
  69197. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69198. return $core.withContext(function($ctx2) {
  69199. //>>excludeEnd("ctx");
  69200. return $recv(x)._foo();
  69201. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69202. }, function($ctx2) {$ctx2.fillBlock({x:x},$ctx1,1)});
  69203. //>>excludeEnd("ctx");
  69204. });
  69205. self._shouldMNU();
  69206. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69207. $ctx1.sendIdx["shouldMNU"]=1;
  69208. //>>excludeEnd("ctx");
  69209. self._installTop_("foo ^ false");
  69210. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69211. $ctx1.sendIdx["installTop:"]=1;
  69212. //>>excludeEnd("ctx");
  69213. self._installTop_("foo ^ true");
  69214. self._deinstallTop();
  69215. self._shouldMNU();
  69216. return self;
  69217. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69218. }, function($ctx1) {$ctx1.fill(self,"testMNU11",{},$globals.MethodInheritanceTest)});
  69219. //>>excludeEnd("ctx");
  69220. },
  69221. //>>excludeStart("ide", pragmas.excludeIdeData);
  69222. args: [],
  69223. 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",
  69224. referencedClasses: [],
  69225. //>>excludeEnd("ide");
  69226. messageSends: ["foo", "shouldMNU", "installTop:", "deinstallTop"]
  69227. }),
  69228. $globals.MethodInheritanceTest);
  69229. $core.addMethod(
  69230. $core.method({
  69231. selector: "testMNU22",
  69232. protocol: 'tests',
  69233. fn: function (){
  69234. var self=this;
  69235. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69236. return $core.withContext(function($ctx1) {
  69237. //>>excludeEnd("ctx");
  69238. self["@performBlock"]=(function(x){
  69239. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69240. return $core.withContext(function($ctx2) {
  69241. //>>excludeEnd("ctx");
  69242. return $recv(x)._foo();
  69243. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69244. }, function($ctx2) {$ctx2.fillBlock({x:x},$ctx1,1)});
  69245. //>>excludeEnd("ctx");
  69246. });
  69247. self._shouldMNU();
  69248. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69249. $ctx1.sendIdx["shouldMNU"]=1;
  69250. //>>excludeEnd("ctx");
  69251. self._installMiddle_("foo ^ false");
  69252. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69253. $ctx1.sendIdx["installMiddle:"]=1;
  69254. //>>excludeEnd("ctx");
  69255. self._installMiddle_("foo ^ true");
  69256. self._deinstallMiddle();
  69257. self._shouldMNU();
  69258. return self;
  69259. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69260. }, function($ctx1) {$ctx1.fill(self,"testMNU22",{},$globals.MethodInheritanceTest)});
  69261. //>>excludeEnd("ctx");
  69262. },
  69263. //>>excludeStart("ide", pragmas.excludeIdeData);
  69264. args: [],
  69265. 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",
  69266. referencedClasses: [],
  69267. //>>excludeEnd("ide");
  69268. messageSends: ["foo", "shouldMNU", "installMiddle:", "deinstallMiddle"]
  69269. }),
  69270. $globals.MethodInheritanceTest);
  69271. $core.addMethod(
  69272. $core.method({
  69273. selector: "testReturns1",
  69274. protocol: 'tests',
  69275. fn: function (){
  69276. var self=this;
  69277. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69278. return $core.withContext(function($ctx1) {
  69279. //>>excludeEnd("ctx");
  69280. self["@performBlock"]=(function(x){
  69281. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69282. return $core.withContext(function($ctx2) {
  69283. //>>excludeEnd("ctx");
  69284. return $recv(x)._foo();
  69285. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69286. }, function($ctx2) {$ctx2.fillBlock({x:x},$ctx1,1)});
  69287. //>>excludeEnd("ctx");
  69288. });
  69289. self._installTop_("foo ^ false");
  69290. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69291. $ctx1.sendIdx["installTop:"]=1;
  69292. //>>excludeEnd("ctx");
  69293. self._shouldReturn_(false);
  69294. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69295. $ctx1.sendIdx["shouldReturn:"]=1;
  69296. //>>excludeEnd("ctx");
  69297. self._installTop_("foo ^ true");
  69298. self._shouldReturn_(true);
  69299. return self;
  69300. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69301. }, function($ctx1) {$ctx1.fill(self,"testReturns1",{},$globals.MethodInheritanceTest)});
  69302. //>>excludeEnd("ctx");
  69303. },
  69304. //>>excludeStart("ide", pragmas.excludeIdeData);
  69305. args: [],
  69306. 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",
  69307. referencedClasses: [],
  69308. //>>excludeEnd("ide");
  69309. messageSends: ["foo", "installTop:", "shouldReturn:"]
  69310. }),
  69311. $globals.MethodInheritanceTest);
  69312. $core.addClass('NumberTest', $globals.TestCase, [], 'Kernel-Tests');
  69313. $core.addMethod(
  69314. $core.method({
  69315. selector: "testAbs",
  69316. protocol: 'tests',
  69317. fn: function (){
  69318. var self=this;
  69319. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69320. return $core.withContext(function($ctx1) {
  69321. //>>excludeEnd("ctx");
  69322. var $1;
  69323. $1=(4)._abs();
  69324. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69325. $ctx1.sendIdx["abs"]=1;
  69326. //>>excludeEnd("ctx");
  69327. self._assert_equals_($1,(4));
  69328. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69329. $ctx1.sendIdx["assert:equals:"]=1;
  69330. //>>excludeEnd("ctx");
  69331. self._assert_equals_((-4)._abs(),(4));
  69332. return self;
  69333. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69334. }, function($ctx1) {$ctx1.fill(self,"testAbs",{},$globals.NumberTest)});
  69335. //>>excludeEnd("ctx");
  69336. },
  69337. //>>excludeStart("ide", pragmas.excludeIdeData);
  69338. args: [],
  69339. source: "testAbs\x0a\x09self assert: 4 abs equals: 4.\x0a\x09self assert: -4 abs equals: 4",
  69340. referencedClasses: [],
  69341. //>>excludeEnd("ide");
  69342. messageSends: ["assert:equals:", "abs"]
  69343. }),
  69344. $globals.NumberTest);
  69345. $core.addMethod(
  69346. $core.method({
  69347. selector: "testArithmetic",
  69348. protocol: 'tests',
  69349. fn: function (){
  69350. var self=this;
  69351. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69352. return $core.withContext(function($ctx1) {
  69353. //>>excludeEnd("ctx");
  69354. var $1,$2,$3,$5,$4;
  69355. $1=(1.5).__plus((1));
  69356. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69357. $ctx1.sendIdx["+"]=1;
  69358. //>>excludeEnd("ctx");
  69359. self._assert_equals_($1,(2.5));
  69360. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69361. $ctx1.sendIdx["assert:equals:"]=1;
  69362. //>>excludeEnd("ctx");
  69363. $2=(2).__minus((1));
  69364. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69365. $ctx1.sendIdx["-"]=1;
  69366. //>>excludeEnd("ctx");
  69367. self._assert_equals_($2,(1));
  69368. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69369. $ctx1.sendIdx["assert:equals:"]=2;
  69370. //>>excludeEnd("ctx");
  69371. self._assert_equals_((-2).__minus((1)),(-3));
  69372. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69373. $ctx1.sendIdx["assert:equals:"]=3;
  69374. //>>excludeEnd("ctx");
  69375. self._assert_equals_((12).__slash((2)),(6));
  69376. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69377. $ctx1.sendIdx["assert:equals:"]=4;
  69378. //>>excludeEnd("ctx");
  69379. $3=(3).__star((4));
  69380. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69381. $ctx1.sendIdx["*"]=1;
  69382. //>>excludeEnd("ctx");
  69383. self._assert_equals_($3,(12));
  69384. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69385. $ctx1.sendIdx["assert:equals:"]=5;
  69386. //>>excludeEnd("ctx");
  69387. self._assert_equals_((7).__slash_slash((2)),(3));
  69388. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69389. $ctx1.sendIdx["assert:equals:"]=6;
  69390. //>>excludeEnd("ctx");
  69391. self._assert_equals_((7).__backslash_backslash((2)),(1));
  69392. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69393. $ctx1.sendIdx["assert:equals:"]=7;
  69394. //>>excludeEnd("ctx");
  69395. $5=(1).__plus((2));
  69396. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69397. $ctx1.sendIdx["+"]=2;
  69398. //>>excludeEnd("ctx");
  69399. $4=$recv($5).__star((3));
  69400. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69401. $ctx1.sendIdx["*"]=2;
  69402. //>>excludeEnd("ctx");
  69403. self._assert_equals_($4,(9));
  69404. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69405. $ctx1.sendIdx["assert:equals:"]=8;
  69406. //>>excludeEnd("ctx");
  69407. self._assert_equals_((1).__plus((2).__star((3))),(7));
  69408. return self;
  69409. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69410. }, function($ctx1) {$ctx1.fill(self,"testArithmetic",{},$globals.NumberTest)});
  69411. //>>excludeEnd("ctx");
  69412. },
  69413. //>>excludeStart("ide", pragmas.excludeIdeData);
  69414. args: [],
  69415. 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",
  69416. referencedClasses: [],
  69417. //>>excludeEnd("ide");
  69418. messageSends: ["assert:equals:", "+", "-", "/", "*", "//", "\x5c\x5c"]
  69419. }),
  69420. $globals.NumberTest);
  69421. $core.addMethod(
  69422. $core.method({
  69423. selector: "testAsNumber",
  69424. protocol: 'tests',
  69425. fn: function (){
  69426. var self=this;
  69427. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69428. return $core.withContext(function($ctx1) {
  69429. //>>excludeEnd("ctx");
  69430. self._assert_equals_((3)._asNumber(),(3));
  69431. return self;
  69432. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69433. }, function($ctx1) {$ctx1.fill(self,"testAsNumber",{},$globals.NumberTest)});
  69434. //>>excludeEnd("ctx");
  69435. },
  69436. //>>excludeStart("ide", pragmas.excludeIdeData);
  69437. args: [],
  69438. source: "testAsNumber\x0a\x09self assert: 3 asNumber equals: 3.",
  69439. referencedClasses: [],
  69440. //>>excludeEnd("ide");
  69441. messageSends: ["assert:equals:", "asNumber"]
  69442. }),
  69443. $globals.NumberTest);
  69444. $core.addMethod(
  69445. $core.method({
  69446. selector: "testCeiling",
  69447. protocol: 'tests',
  69448. fn: function (){
  69449. var self=this;
  69450. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69451. return $core.withContext(function($ctx1) {
  69452. //>>excludeEnd("ctx");
  69453. var $1,$2;
  69454. $1=(1.2)._ceiling();
  69455. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69456. $ctx1.sendIdx["ceiling"]=1;
  69457. //>>excludeEnd("ctx");
  69458. self._assert_equals_($1,(2));
  69459. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69460. $ctx1.sendIdx["assert:equals:"]=1;
  69461. //>>excludeEnd("ctx");
  69462. $2=(-1.2)._ceiling();
  69463. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69464. $ctx1.sendIdx["ceiling"]=2;
  69465. //>>excludeEnd("ctx");
  69466. self._assert_equals_($2,(-1));
  69467. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69468. $ctx1.sendIdx["assert:equals:"]=2;
  69469. //>>excludeEnd("ctx");
  69470. self._assert_equals_((1)._ceiling(),(1));
  69471. return self;
  69472. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69473. }, function($ctx1) {$ctx1.fill(self,"testCeiling",{},$globals.NumberTest)});
  69474. //>>excludeEnd("ctx");
  69475. },
  69476. //>>excludeStart("ide", pragmas.excludeIdeData);
  69477. args: [],
  69478. 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.",
  69479. referencedClasses: [],
  69480. //>>excludeEnd("ide");
  69481. messageSends: ["assert:equals:", "ceiling"]
  69482. }),
  69483. $globals.NumberTest);
  69484. $core.addMethod(
  69485. $core.method({
  69486. selector: "testComparison",
  69487. protocol: 'tests',
  69488. fn: function (){
  69489. var self=this;
  69490. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69491. return $core.withContext(function($ctx1) {
  69492. //>>excludeEnd("ctx");
  69493. var $1,$2,$3,$4;
  69494. $1=(3).__gt((2));
  69495. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69496. $ctx1.sendIdx[">"]=1;
  69497. //>>excludeEnd("ctx");
  69498. self._assert_($1);
  69499. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69500. $ctx1.sendIdx["assert:"]=1;
  69501. //>>excludeEnd("ctx");
  69502. $2=(2).__lt((3));
  69503. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69504. $ctx1.sendIdx["<"]=1;
  69505. //>>excludeEnd("ctx");
  69506. self._assert_($2);
  69507. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69508. $ctx1.sendIdx["assert:"]=2;
  69509. //>>excludeEnd("ctx");
  69510. self._deny_((3).__lt((2)));
  69511. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69512. $ctx1.sendIdx["deny:"]=1;
  69513. //>>excludeEnd("ctx");
  69514. self._deny_((2).__gt((3)));
  69515. $3=(3).__gt_eq((3));
  69516. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69517. $ctx1.sendIdx[">="]=1;
  69518. //>>excludeEnd("ctx");
  69519. self._assert_($3);
  69520. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69521. $ctx1.sendIdx["assert:"]=3;
  69522. //>>excludeEnd("ctx");
  69523. self._assert_((3.1).__gt_eq((3)));
  69524. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69525. $ctx1.sendIdx["assert:"]=4;
  69526. //>>excludeEnd("ctx");
  69527. $4=(3).__lt_eq((3));
  69528. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69529. $ctx1.sendIdx["<="]=1;
  69530. //>>excludeEnd("ctx");
  69531. self._assert_($4);
  69532. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69533. $ctx1.sendIdx["assert:"]=5;
  69534. //>>excludeEnd("ctx");
  69535. self._assert_((3).__lt_eq((3.1)));
  69536. return self;
  69537. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69538. }, function($ctx1) {$ctx1.fill(self,"testComparison",{},$globals.NumberTest)});
  69539. //>>excludeEnd("ctx");
  69540. },
  69541. //>>excludeStart("ide", pragmas.excludeIdeData);
  69542. args: [],
  69543. 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",
  69544. referencedClasses: [],
  69545. //>>excludeEnd("ide");
  69546. messageSends: ["assert:", ">", "<", "deny:", ">=", "<="]
  69547. }),
  69548. $globals.NumberTest);
  69549. $core.addMethod(
  69550. $core.method({
  69551. selector: "testCopying",
  69552. protocol: 'tests',
  69553. fn: function (){
  69554. var self=this;
  69555. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69556. return $core.withContext(function($ctx1) {
  69557. //>>excludeEnd("ctx");
  69558. var $1;
  69559. $1=$recv((1)._copy()).__eq_eq((1));
  69560. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69561. $ctx1.sendIdx["=="]=1;
  69562. //>>excludeEnd("ctx");
  69563. self._assert_($1);
  69564. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69565. $ctx1.sendIdx["assert:"]=1;
  69566. //>>excludeEnd("ctx");
  69567. self._assert_($recv((1)._deepCopy()).__eq_eq((1)));
  69568. return self;
  69569. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69570. }, function($ctx1) {$ctx1.fill(self,"testCopying",{},$globals.NumberTest)});
  69571. //>>excludeEnd("ctx");
  69572. },
  69573. //>>excludeStart("ide", pragmas.excludeIdeData);
  69574. args: [],
  69575. source: "testCopying\x0a\x09self assert: 1 copy == 1.\x0a\x09self assert: 1 deepCopy == 1",
  69576. referencedClasses: [],
  69577. //>>excludeEnd("ide");
  69578. messageSends: ["assert:", "==", "copy", "deepCopy"]
  69579. }),
  69580. $globals.NumberTest);
  69581. $core.addMethod(
  69582. $core.method({
  69583. selector: "testEquality",
  69584. protocol: 'tests',
  69585. fn: function (){
  69586. var self=this;
  69587. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69588. return $core.withContext(function($ctx1) {
  69589. //>>excludeEnd("ctx");
  69590. var $1,$2,$3,$5,$4,$7,$6,$9,$8,$10,$11,$12;
  69591. $1=(1).__eq((1));
  69592. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69593. $ctx1.sendIdx["="]=1;
  69594. //>>excludeEnd("ctx");
  69595. self._assert_($1);
  69596. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69597. $ctx1.sendIdx["assert:"]=1;
  69598. //>>excludeEnd("ctx");
  69599. $2=(0).__eq((0));
  69600. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69601. $ctx1.sendIdx["="]=2;
  69602. //>>excludeEnd("ctx");
  69603. self._assert_($2);
  69604. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69605. $ctx1.sendIdx["assert:"]=2;
  69606. //>>excludeEnd("ctx");
  69607. $3=(1).__eq((0));
  69608. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69609. $ctx1.sendIdx["="]=3;
  69610. //>>excludeEnd("ctx");
  69611. self._deny_($3);
  69612. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69613. $ctx1.sendIdx["deny:"]=1;
  69614. //>>excludeEnd("ctx");
  69615. $5=(1)._yourself();
  69616. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69617. $ctx1.sendIdx["yourself"]=1;
  69618. //>>excludeEnd("ctx");
  69619. $4=$recv($5).__eq((1));
  69620. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69621. $ctx1.sendIdx["="]=4;
  69622. //>>excludeEnd("ctx");
  69623. self._assert_($4);
  69624. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69625. $ctx1.sendIdx["assert:"]=3;
  69626. //>>excludeEnd("ctx");
  69627. $7=(1)._yourself();
  69628. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69629. $ctx1.sendIdx["yourself"]=2;
  69630. //>>excludeEnd("ctx");
  69631. $6=(1).__eq($7);
  69632. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69633. $ctx1.sendIdx["="]=5;
  69634. //>>excludeEnd("ctx");
  69635. self._assert_($6);
  69636. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69637. $ctx1.sendIdx["assert:"]=4;
  69638. //>>excludeEnd("ctx");
  69639. $9=(1)._yourself();
  69640. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69641. $ctx1.sendIdx["yourself"]=3;
  69642. //>>excludeEnd("ctx");
  69643. $8=$recv($9).__eq((1)._yourself());
  69644. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69645. $ctx1.sendIdx["="]=6;
  69646. //>>excludeEnd("ctx");
  69647. self._assert_($8);
  69648. $10=(0).__eq(false);
  69649. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69650. $ctx1.sendIdx["="]=7;
  69651. //>>excludeEnd("ctx");
  69652. self._deny_($10);
  69653. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69654. $ctx1.sendIdx["deny:"]=2;
  69655. //>>excludeEnd("ctx");
  69656. $11=false.__eq((0));
  69657. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69658. $ctx1.sendIdx["="]=8;
  69659. //>>excludeEnd("ctx");
  69660. self._deny_($11);
  69661. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69662. $ctx1.sendIdx["deny:"]=3;
  69663. //>>excludeEnd("ctx");
  69664. $12="".__eq((0));
  69665. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69666. $ctx1.sendIdx["="]=9;
  69667. //>>excludeEnd("ctx");
  69668. self._deny_($12);
  69669. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69670. $ctx1.sendIdx["deny:"]=4;
  69671. //>>excludeEnd("ctx");
  69672. self._deny_((0).__eq(""));
  69673. return self;
  69674. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69675. }, function($ctx1) {$ctx1.fill(self,"testEquality",{},$globals.NumberTest)});
  69676. //>>excludeEnd("ctx");
  69677. },
  69678. //>>excludeStart("ide", pragmas.excludeIdeData);
  69679. args: [],
  69680. 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 = ''",
  69681. referencedClasses: [],
  69682. //>>excludeEnd("ide");
  69683. messageSends: ["assert:", "=", "deny:", "yourself"]
  69684. }),
  69685. $globals.NumberTest);
  69686. $core.addMethod(
  69687. $core.method({
  69688. selector: "testFloor",
  69689. protocol: 'tests',
  69690. fn: function (){
  69691. var self=this;
  69692. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69693. return $core.withContext(function($ctx1) {
  69694. //>>excludeEnd("ctx");
  69695. var $1,$2;
  69696. $1=(1.2)._floor();
  69697. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69698. $ctx1.sendIdx["floor"]=1;
  69699. //>>excludeEnd("ctx");
  69700. self._assert_equals_($1,(1));
  69701. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69702. $ctx1.sendIdx["assert:equals:"]=1;
  69703. //>>excludeEnd("ctx");
  69704. $2=(-1.2)._floor();
  69705. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69706. $ctx1.sendIdx["floor"]=2;
  69707. //>>excludeEnd("ctx");
  69708. self._assert_equals_($2,(-2));
  69709. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69710. $ctx1.sendIdx["assert:equals:"]=2;
  69711. //>>excludeEnd("ctx");
  69712. self._assert_equals_((1)._floor(),(1));
  69713. return self;
  69714. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69715. }, function($ctx1) {$ctx1.fill(self,"testFloor",{},$globals.NumberTest)});
  69716. //>>excludeEnd("ctx");
  69717. },
  69718. //>>excludeStart("ide", pragmas.excludeIdeData);
  69719. args: [],
  69720. 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.",
  69721. referencedClasses: [],
  69722. //>>excludeEnd("ide");
  69723. messageSends: ["assert:equals:", "floor"]
  69724. }),
  69725. $globals.NumberTest);
  69726. $core.addMethod(
  69727. $core.method({
  69728. selector: "testHexNumbers",
  69729. protocol: 'tests',
  69730. fn: function (){
  69731. var self=this;
  69732. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69733. return $core.withContext(function($ctx1) {
  69734. //>>excludeEnd("ctx");
  69735. var $1,$2,$3,$4,$5;
  69736. self._assert_equals_((9),(9));
  69737. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69738. $ctx1.sendIdx["assert:equals:"]=1;
  69739. //>>excludeEnd("ctx");
  69740. $1=(10)._truncated();
  69741. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69742. $ctx1.sendIdx["truncated"]=1;
  69743. //>>excludeEnd("ctx");
  69744. self._assert_equals_($1,(10));
  69745. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69746. $ctx1.sendIdx["assert:equals:"]=2;
  69747. //>>excludeEnd("ctx");
  69748. $2=(11)._truncated();
  69749. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69750. $ctx1.sendIdx["truncated"]=2;
  69751. //>>excludeEnd("ctx");
  69752. self._assert_equals_($2,(11));
  69753. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69754. $ctx1.sendIdx["assert:equals:"]=3;
  69755. //>>excludeEnd("ctx");
  69756. $3=(12)._truncated();
  69757. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69758. $ctx1.sendIdx["truncated"]=3;
  69759. //>>excludeEnd("ctx");
  69760. self._assert_equals_($3,(12));
  69761. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69762. $ctx1.sendIdx["assert:equals:"]=4;
  69763. //>>excludeEnd("ctx");
  69764. $4=(13)._truncated();
  69765. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69766. $ctx1.sendIdx["truncated"]=4;
  69767. //>>excludeEnd("ctx");
  69768. self._assert_equals_($4,(13));
  69769. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69770. $ctx1.sendIdx["assert:equals:"]=5;
  69771. //>>excludeEnd("ctx");
  69772. $5=(14)._truncated();
  69773. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69774. $ctx1.sendIdx["truncated"]=5;
  69775. //>>excludeEnd("ctx");
  69776. self._assert_equals_($5,(14));
  69777. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69778. $ctx1.sendIdx["assert:equals:"]=6;
  69779. //>>excludeEnd("ctx");
  69780. self._assert_equals_((15)._truncated(),(15));
  69781. return self;
  69782. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69783. }, function($ctx1) {$ctx1.fill(self,"testHexNumbers",{},$globals.NumberTest)});
  69784. //>>excludeEnd("ctx");
  69785. },
  69786. //>>excludeStart("ide", pragmas.excludeIdeData);
  69787. args: [],
  69788. 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",
  69789. referencedClasses: [],
  69790. //>>excludeEnd("ide");
  69791. messageSends: ["assert:equals:", "truncated"]
  69792. }),
  69793. $globals.NumberTest);
  69794. $core.addMethod(
  69795. $core.method({
  69796. selector: "testIdentity",
  69797. protocol: 'tests',
  69798. fn: function (){
  69799. var self=this;
  69800. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69801. return $core.withContext(function($ctx1) {
  69802. //>>excludeEnd("ctx");
  69803. var $1,$2,$3,$5,$4,$7,$6,$9,$8;
  69804. $1=(1).__eq_eq((1));
  69805. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69806. $ctx1.sendIdx["=="]=1;
  69807. //>>excludeEnd("ctx");
  69808. self._assert_($1);
  69809. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69810. $ctx1.sendIdx["assert:"]=1;
  69811. //>>excludeEnd("ctx");
  69812. $2=(0).__eq_eq((0));
  69813. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69814. $ctx1.sendIdx["=="]=2;
  69815. //>>excludeEnd("ctx");
  69816. self._assert_($2);
  69817. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69818. $ctx1.sendIdx["assert:"]=2;
  69819. //>>excludeEnd("ctx");
  69820. $3=(1).__eq_eq((0));
  69821. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69822. $ctx1.sendIdx["=="]=3;
  69823. //>>excludeEnd("ctx");
  69824. self._deny_($3);
  69825. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69826. $ctx1.sendIdx["deny:"]=1;
  69827. //>>excludeEnd("ctx");
  69828. $5=(1)._yourself();
  69829. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69830. $ctx1.sendIdx["yourself"]=1;
  69831. //>>excludeEnd("ctx");
  69832. $4=$recv($5).__eq_eq((1));
  69833. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69834. $ctx1.sendIdx["=="]=4;
  69835. //>>excludeEnd("ctx");
  69836. self._assert_($4);
  69837. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69838. $ctx1.sendIdx["assert:"]=3;
  69839. //>>excludeEnd("ctx");
  69840. $7=(1)._yourself();
  69841. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69842. $ctx1.sendIdx["yourself"]=2;
  69843. //>>excludeEnd("ctx");
  69844. $6=(1).__eq_eq($7);
  69845. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69846. $ctx1.sendIdx["=="]=5;
  69847. //>>excludeEnd("ctx");
  69848. self._assert_($6);
  69849. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69850. $ctx1.sendIdx["assert:"]=4;
  69851. //>>excludeEnd("ctx");
  69852. $9=(1)._yourself();
  69853. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69854. $ctx1.sendIdx["yourself"]=3;
  69855. //>>excludeEnd("ctx");
  69856. $8=$recv($9).__eq_eq((1)._yourself());
  69857. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69858. $ctx1.sendIdx["=="]=6;
  69859. //>>excludeEnd("ctx");
  69860. self._assert_($8);
  69861. self._deny_((1).__eq_eq((2)));
  69862. return self;
  69863. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69864. }, function($ctx1) {$ctx1.fill(self,"testIdentity",{},$globals.NumberTest)});
  69865. //>>excludeEnd("ctx");
  69866. },
  69867. //>>excludeStart("ide", pragmas.excludeIdeData);
  69868. args: [],
  69869. 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",
  69870. referencedClasses: [],
  69871. //>>excludeEnd("ide");
  69872. messageSends: ["assert:", "==", "deny:", "yourself"]
  69873. }),
  69874. $globals.NumberTest);
  69875. $core.addMethod(
  69876. $core.method({
  69877. selector: "testInvalidHexNumbers",
  69878. protocol: 'tests',
  69879. fn: function (){
  69880. var self=this;
  69881. function $MessageNotUnderstood(){return $globals.MessageNotUnderstood||(typeof MessageNotUnderstood=="undefined"?nil:MessageNotUnderstood)}
  69882. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69883. return $core.withContext(function($ctx1) {
  69884. //>>excludeEnd("ctx");
  69885. self._should_raise_((function(){
  69886. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69887. return $core.withContext(function($ctx2) {
  69888. //>>excludeEnd("ctx");
  69889. return (16)._rG();
  69890. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69891. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  69892. //>>excludeEnd("ctx");
  69893. }),$MessageNotUnderstood());
  69894. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69895. $ctx1.sendIdx["should:raise:"]=1;
  69896. //>>excludeEnd("ctx");
  69897. self._should_raise_((function(){
  69898. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69899. return $core.withContext(function($ctx2) {
  69900. //>>excludeEnd("ctx");
  69901. return (16)._rg();
  69902. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69903. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
  69904. //>>excludeEnd("ctx");
  69905. }),$MessageNotUnderstood());
  69906. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69907. $ctx1.sendIdx["should:raise:"]=2;
  69908. //>>excludeEnd("ctx");
  69909. self._should_raise_((function(){
  69910. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69911. return $core.withContext(function($ctx2) {
  69912. //>>excludeEnd("ctx");
  69913. return (16)._rH();
  69914. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69915. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,3)});
  69916. //>>excludeEnd("ctx");
  69917. }),$MessageNotUnderstood());
  69918. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69919. $ctx1.sendIdx["should:raise:"]=3;
  69920. //>>excludeEnd("ctx");
  69921. self._should_raise_((function(){
  69922. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69923. return $core.withContext(function($ctx2) {
  69924. //>>excludeEnd("ctx");
  69925. return (16)._rh();
  69926. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69927. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,4)});
  69928. //>>excludeEnd("ctx");
  69929. }),$MessageNotUnderstood());
  69930. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69931. $ctx1.sendIdx["should:raise:"]=4;
  69932. //>>excludeEnd("ctx");
  69933. self._should_raise_((function(){
  69934. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69935. return $core.withContext(function($ctx2) {
  69936. //>>excludeEnd("ctx");
  69937. return (16)._rI();
  69938. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69939. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,5)});
  69940. //>>excludeEnd("ctx");
  69941. }),$MessageNotUnderstood());
  69942. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69943. $ctx1.sendIdx["should:raise:"]=5;
  69944. //>>excludeEnd("ctx");
  69945. self._should_raise_((function(){
  69946. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69947. return $core.withContext(function($ctx2) {
  69948. //>>excludeEnd("ctx");
  69949. return (16)._ri();
  69950. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69951. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,6)});
  69952. //>>excludeEnd("ctx");
  69953. }),$MessageNotUnderstood());
  69954. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69955. $ctx1.sendIdx["should:raise:"]=6;
  69956. //>>excludeEnd("ctx");
  69957. self._should_raise_((function(){
  69958. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69959. return $core.withContext(function($ctx2) {
  69960. //>>excludeEnd("ctx");
  69961. return (16)._rJ();
  69962. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69963. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,7)});
  69964. //>>excludeEnd("ctx");
  69965. }),$MessageNotUnderstood());
  69966. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69967. $ctx1.sendIdx["should:raise:"]=7;
  69968. //>>excludeEnd("ctx");
  69969. self._should_raise_((function(){
  69970. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69971. return $core.withContext(function($ctx2) {
  69972. //>>excludeEnd("ctx");
  69973. return (16)._rj();
  69974. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69975. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,8)});
  69976. //>>excludeEnd("ctx");
  69977. }),$MessageNotUnderstood());
  69978. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69979. $ctx1.sendIdx["should:raise:"]=8;
  69980. //>>excludeEnd("ctx");
  69981. self._should_raise_((function(){
  69982. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69983. return $core.withContext(function($ctx2) {
  69984. //>>excludeEnd("ctx");
  69985. return (16)._rK();
  69986. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69987. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,9)});
  69988. //>>excludeEnd("ctx");
  69989. }),$MessageNotUnderstood());
  69990. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69991. $ctx1.sendIdx["should:raise:"]=9;
  69992. //>>excludeEnd("ctx");
  69993. self._should_raise_((function(){
  69994. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69995. return $core.withContext(function($ctx2) {
  69996. //>>excludeEnd("ctx");
  69997. return (16)._rk();
  69998. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69999. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,10)});
  70000. //>>excludeEnd("ctx");
  70001. }),$MessageNotUnderstood());
  70002. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70003. $ctx1.sendIdx["should:raise:"]=10;
  70004. //>>excludeEnd("ctx");
  70005. self._should_raise_((function(){
  70006. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70007. return $core.withContext(function($ctx2) {
  70008. //>>excludeEnd("ctx");
  70009. return (16)._rL();
  70010. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70011. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,11)});
  70012. //>>excludeEnd("ctx");
  70013. }),$MessageNotUnderstood());
  70014. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70015. $ctx1.sendIdx["should:raise:"]=11;
  70016. //>>excludeEnd("ctx");
  70017. self._should_raise_((function(){
  70018. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70019. return $core.withContext(function($ctx2) {
  70020. //>>excludeEnd("ctx");
  70021. return (16)._rl();
  70022. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70023. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,12)});
  70024. //>>excludeEnd("ctx");
  70025. }),$MessageNotUnderstood());
  70026. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70027. $ctx1.sendIdx["should:raise:"]=12;
  70028. //>>excludeEnd("ctx");
  70029. self._should_raise_((function(){
  70030. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70031. return $core.withContext(function($ctx2) {
  70032. //>>excludeEnd("ctx");
  70033. return (16)._rM();
  70034. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70035. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,13)});
  70036. //>>excludeEnd("ctx");
  70037. }),$MessageNotUnderstood());
  70038. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70039. $ctx1.sendIdx["should:raise:"]=13;
  70040. //>>excludeEnd("ctx");
  70041. self._should_raise_((function(){
  70042. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70043. return $core.withContext(function($ctx2) {
  70044. //>>excludeEnd("ctx");
  70045. return (16)._rm();
  70046. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70047. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,14)});
  70048. //>>excludeEnd("ctx");
  70049. }),$MessageNotUnderstood());
  70050. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70051. $ctx1.sendIdx["should:raise:"]=14;
  70052. //>>excludeEnd("ctx");
  70053. self._should_raise_((function(){
  70054. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70055. return $core.withContext(function($ctx2) {
  70056. //>>excludeEnd("ctx");
  70057. return (16)._rN();
  70058. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70059. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,15)});
  70060. //>>excludeEnd("ctx");
  70061. }),$MessageNotUnderstood());
  70062. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70063. $ctx1.sendIdx["should:raise:"]=15;
  70064. //>>excludeEnd("ctx");
  70065. self._should_raise_((function(){
  70066. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70067. return $core.withContext(function($ctx2) {
  70068. //>>excludeEnd("ctx");
  70069. return (16)._rn();
  70070. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70071. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,16)});
  70072. //>>excludeEnd("ctx");
  70073. }),$MessageNotUnderstood());
  70074. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70075. $ctx1.sendIdx["should:raise:"]=16;
  70076. //>>excludeEnd("ctx");
  70077. self._should_raise_((function(){
  70078. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70079. return $core.withContext(function($ctx2) {
  70080. //>>excludeEnd("ctx");
  70081. return (16)._rO();
  70082. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70083. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,17)});
  70084. //>>excludeEnd("ctx");
  70085. }),$MessageNotUnderstood());
  70086. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70087. $ctx1.sendIdx["should:raise:"]=17;
  70088. //>>excludeEnd("ctx");
  70089. self._should_raise_((function(){
  70090. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70091. return $core.withContext(function($ctx2) {
  70092. //>>excludeEnd("ctx");
  70093. return (16)._ro();
  70094. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70095. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,18)});
  70096. //>>excludeEnd("ctx");
  70097. }),$MessageNotUnderstood());
  70098. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70099. $ctx1.sendIdx["should:raise:"]=18;
  70100. //>>excludeEnd("ctx");
  70101. self._should_raise_((function(){
  70102. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70103. return $core.withContext(function($ctx2) {
  70104. //>>excludeEnd("ctx");
  70105. return (16)._rP();
  70106. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70107. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,19)});
  70108. //>>excludeEnd("ctx");
  70109. }),$MessageNotUnderstood());
  70110. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70111. $ctx1.sendIdx["should:raise:"]=19;
  70112. //>>excludeEnd("ctx");
  70113. self._should_raise_((function(){
  70114. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70115. return $core.withContext(function($ctx2) {
  70116. //>>excludeEnd("ctx");
  70117. return (16)._rp();
  70118. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70119. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,20)});
  70120. //>>excludeEnd("ctx");
  70121. }),$MessageNotUnderstood());
  70122. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70123. $ctx1.sendIdx["should:raise:"]=20;
  70124. //>>excludeEnd("ctx");
  70125. self._should_raise_((function(){
  70126. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70127. return $core.withContext(function($ctx2) {
  70128. //>>excludeEnd("ctx");
  70129. return (16)._rQ();
  70130. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70131. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,21)});
  70132. //>>excludeEnd("ctx");
  70133. }),$MessageNotUnderstood());
  70134. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70135. $ctx1.sendIdx["should:raise:"]=21;
  70136. //>>excludeEnd("ctx");
  70137. self._should_raise_((function(){
  70138. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70139. return $core.withContext(function($ctx2) {
  70140. //>>excludeEnd("ctx");
  70141. return (16)._rq();
  70142. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70143. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,22)});
  70144. //>>excludeEnd("ctx");
  70145. }),$MessageNotUnderstood());
  70146. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70147. $ctx1.sendIdx["should:raise:"]=22;
  70148. //>>excludeEnd("ctx");
  70149. self._should_raise_((function(){
  70150. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70151. return $core.withContext(function($ctx2) {
  70152. //>>excludeEnd("ctx");
  70153. return (16)._rR();
  70154. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70155. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,23)});
  70156. //>>excludeEnd("ctx");
  70157. }),$MessageNotUnderstood());
  70158. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70159. $ctx1.sendIdx["should:raise:"]=23;
  70160. //>>excludeEnd("ctx");
  70161. self._should_raise_((function(){
  70162. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70163. return $core.withContext(function($ctx2) {
  70164. //>>excludeEnd("ctx");
  70165. return (16)._rr();
  70166. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70167. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,24)});
  70168. //>>excludeEnd("ctx");
  70169. }),$MessageNotUnderstood());
  70170. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70171. $ctx1.sendIdx["should:raise:"]=24;
  70172. //>>excludeEnd("ctx");
  70173. self._should_raise_((function(){
  70174. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70175. return $core.withContext(function($ctx2) {
  70176. //>>excludeEnd("ctx");
  70177. return (16)._rS();
  70178. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70179. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,25)});
  70180. //>>excludeEnd("ctx");
  70181. }),$MessageNotUnderstood());
  70182. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70183. $ctx1.sendIdx["should:raise:"]=25;
  70184. //>>excludeEnd("ctx");
  70185. self._should_raise_((function(){
  70186. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70187. return $core.withContext(function($ctx2) {
  70188. //>>excludeEnd("ctx");
  70189. return (16)._rs();
  70190. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70191. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,26)});
  70192. //>>excludeEnd("ctx");
  70193. }),$MessageNotUnderstood());
  70194. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70195. $ctx1.sendIdx["should:raise:"]=26;
  70196. //>>excludeEnd("ctx");
  70197. self._should_raise_((function(){
  70198. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70199. return $core.withContext(function($ctx2) {
  70200. //>>excludeEnd("ctx");
  70201. return (16)._rT();
  70202. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70203. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,27)});
  70204. //>>excludeEnd("ctx");
  70205. }),$MessageNotUnderstood());
  70206. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70207. $ctx1.sendIdx["should:raise:"]=27;
  70208. //>>excludeEnd("ctx");
  70209. self._should_raise_((function(){
  70210. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70211. return $core.withContext(function($ctx2) {
  70212. //>>excludeEnd("ctx");
  70213. return (16)._rt();
  70214. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70215. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,28)});
  70216. //>>excludeEnd("ctx");
  70217. }),$MessageNotUnderstood());
  70218. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70219. $ctx1.sendIdx["should:raise:"]=28;
  70220. //>>excludeEnd("ctx");
  70221. self._should_raise_((function(){
  70222. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70223. return $core.withContext(function($ctx2) {
  70224. //>>excludeEnd("ctx");
  70225. return (16)._rU();
  70226. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70227. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,29)});
  70228. //>>excludeEnd("ctx");
  70229. }),$MessageNotUnderstood());
  70230. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70231. $ctx1.sendIdx["should:raise:"]=29;
  70232. //>>excludeEnd("ctx");
  70233. self._should_raise_((function(){
  70234. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70235. return $core.withContext(function($ctx2) {
  70236. //>>excludeEnd("ctx");
  70237. return (16)._ru();
  70238. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70239. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,30)});
  70240. //>>excludeEnd("ctx");
  70241. }),$MessageNotUnderstood());
  70242. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70243. $ctx1.sendIdx["should:raise:"]=30;
  70244. //>>excludeEnd("ctx");
  70245. self._should_raise_((function(){
  70246. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70247. return $core.withContext(function($ctx2) {
  70248. //>>excludeEnd("ctx");
  70249. return (16)._rV();
  70250. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70251. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,31)});
  70252. //>>excludeEnd("ctx");
  70253. }),$MessageNotUnderstood());
  70254. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70255. $ctx1.sendIdx["should:raise:"]=31;
  70256. //>>excludeEnd("ctx");
  70257. self._should_raise_((function(){
  70258. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70259. return $core.withContext(function($ctx2) {
  70260. //>>excludeEnd("ctx");
  70261. return (16)._rv();
  70262. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70263. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,32)});
  70264. //>>excludeEnd("ctx");
  70265. }),$MessageNotUnderstood());
  70266. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70267. $ctx1.sendIdx["should:raise:"]=32;
  70268. //>>excludeEnd("ctx");
  70269. self._should_raise_((function(){
  70270. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70271. return $core.withContext(function($ctx2) {
  70272. //>>excludeEnd("ctx");
  70273. return (16)._rW();
  70274. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70275. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,33)});
  70276. //>>excludeEnd("ctx");
  70277. }),$MessageNotUnderstood());
  70278. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70279. $ctx1.sendIdx["should:raise:"]=33;
  70280. //>>excludeEnd("ctx");
  70281. self._should_raise_((function(){
  70282. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70283. return $core.withContext(function($ctx2) {
  70284. //>>excludeEnd("ctx");
  70285. return (16)._rw();
  70286. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70287. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,34)});
  70288. //>>excludeEnd("ctx");
  70289. }),$MessageNotUnderstood());
  70290. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70291. $ctx1.sendIdx["should:raise:"]=34;
  70292. //>>excludeEnd("ctx");
  70293. self._should_raise_((function(){
  70294. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70295. return $core.withContext(function($ctx2) {
  70296. //>>excludeEnd("ctx");
  70297. return (16)._rX();
  70298. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70299. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,35)});
  70300. //>>excludeEnd("ctx");
  70301. }),$MessageNotUnderstood());
  70302. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70303. $ctx1.sendIdx["should:raise:"]=35;
  70304. //>>excludeEnd("ctx");
  70305. self._should_raise_((function(){
  70306. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70307. return $core.withContext(function($ctx2) {
  70308. //>>excludeEnd("ctx");
  70309. return (16)._rx();
  70310. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70311. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,36)});
  70312. //>>excludeEnd("ctx");
  70313. }),$MessageNotUnderstood());
  70314. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70315. $ctx1.sendIdx["should:raise:"]=36;
  70316. //>>excludeEnd("ctx");
  70317. self._should_raise_((function(){
  70318. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70319. return $core.withContext(function($ctx2) {
  70320. //>>excludeEnd("ctx");
  70321. return (16)._rY();
  70322. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70323. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,37)});
  70324. //>>excludeEnd("ctx");
  70325. }),$MessageNotUnderstood());
  70326. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70327. $ctx1.sendIdx["should:raise:"]=37;
  70328. //>>excludeEnd("ctx");
  70329. self._should_raise_((function(){
  70330. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70331. return $core.withContext(function($ctx2) {
  70332. //>>excludeEnd("ctx");
  70333. return (16)._ry();
  70334. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70335. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,38)});
  70336. //>>excludeEnd("ctx");
  70337. }),$MessageNotUnderstood());
  70338. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70339. $ctx1.sendIdx["should:raise:"]=38;
  70340. //>>excludeEnd("ctx");
  70341. self._should_raise_((function(){
  70342. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70343. return $core.withContext(function($ctx2) {
  70344. //>>excludeEnd("ctx");
  70345. return (16)._rZ();
  70346. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70347. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,39)});
  70348. //>>excludeEnd("ctx");
  70349. }),$MessageNotUnderstood());
  70350. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70351. $ctx1.sendIdx["should:raise:"]=39;
  70352. //>>excludeEnd("ctx");
  70353. self._should_raise_((function(){
  70354. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70355. return $core.withContext(function($ctx2) {
  70356. //>>excludeEnd("ctx");
  70357. return (16)._rz();
  70358. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70359. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,40)});
  70360. //>>excludeEnd("ctx");
  70361. }),$MessageNotUnderstood());
  70362. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70363. $ctx1.sendIdx["should:raise:"]=40;
  70364. //>>excludeEnd("ctx");
  70365. self._should_raise_((function(){
  70366. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70367. return $core.withContext(function($ctx2) {
  70368. //>>excludeEnd("ctx");
  70369. return (11259375)._Z();
  70370. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70371. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,41)});
  70372. //>>excludeEnd("ctx");
  70373. }),$MessageNotUnderstood());
  70374. return self;
  70375. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70376. }, function($ctx1) {$ctx1.fill(self,"testInvalidHexNumbers",{},$globals.NumberTest)});
  70377. //>>excludeEnd("ctx");
  70378. },
  70379. //>>excludeStart("ide", pragmas.excludeIdeData);
  70380. args: [],
  70381. 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.",
  70382. referencedClasses: ["MessageNotUnderstood"],
  70383. //>>excludeEnd("ide");
  70384. 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"]
  70385. }),
  70386. $globals.NumberTest);
  70387. $core.addMethod(
  70388. $core.method({
  70389. selector: "testLog",
  70390. protocol: 'tests',
  70391. fn: function (){
  70392. var self=this;
  70393. function $Number(){return $globals.Number||(typeof Number=="undefined"?nil:Number)}
  70394. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70395. return $core.withContext(function($ctx1) {
  70396. //>>excludeEnd("ctx");
  70397. self._assert_equals_((10000)._log(),(4));
  70398. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70399. $ctx1.sendIdx["assert:equals:"]=1;
  70400. //>>excludeEnd("ctx");
  70401. self._assert_equals_((512)._log_((2)),(9));
  70402. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70403. $ctx1.sendIdx["assert:equals:"]=2;
  70404. //>>excludeEnd("ctx");
  70405. self._assert_equals_($recv($recv($Number())._e())._ln(),(1));
  70406. return self;
  70407. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70408. }, function($ctx1) {$ctx1.fill(self,"testLog",{},$globals.NumberTest)});
  70409. //>>excludeEnd("ctx");
  70410. },
  70411. //>>excludeStart("ide", pragmas.excludeIdeData);
  70412. args: [],
  70413. 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.",
  70414. referencedClasses: ["Number"],
  70415. //>>excludeEnd("ide");
  70416. messageSends: ["assert:equals:", "log", "log:", "ln", "e"]
  70417. }),
  70418. $globals.NumberTest);
  70419. $core.addMethod(
  70420. $core.method({
  70421. selector: "testMinMax",
  70422. protocol: 'tests',
  70423. fn: function (){
  70424. var self=this;
  70425. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70426. return $core.withContext(function($ctx1) {
  70427. //>>excludeEnd("ctx");
  70428. self._assert_equals_((2)._max_((5)),(5));
  70429. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70430. $ctx1.sendIdx["assert:equals:"]=1;
  70431. //>>excludeEnd("ctx");
  70432. self._assert_equals_((2)._min_((5)),(2));
  70433. return self;
  70434. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70435. }, function($ctx1) {$ctx1.fill(self,"testMinMax",{},$globals.NumberTest)});
  70436. //>>excludeEnd("ctx");
  70437. },
  70438. //>>excludeStart("ide", pragmas.excludeIdeData);
  70439. args: [],
  70440. source: "testMinMax\x0a\x09\x0a\x09self assert: (2 max: 5) equals: 5.\x0a\x09self assert: (2 min: 5) equals: 2",
  70441. referencedClasses: [],
  70442. //>>excludeEnd("ide");
  70443. messageSends: ["assert:equals:", "max:", "min:"]
  70444. }),
  70445. $globals.NumberTest);
  70446. $core.addMethod(
  70447. $core.method({
  70448. selector: "testNegated",
  70449. protocol: 'tests',
  70450. fn: function (){
  70451. var self=this;
  70452. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70453. return $core.withContext(function($ctx1) {
  70454. //>>excludeEnd("ctx");
  70455. var $1;
  70456. $1=(3)._negated();
  70457. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70458. $ctx1.sendIdx["negated"]=1;
  70459. //>>excludeEnd("ctx");
  70460. self._assert_equals_($1,(-3));
  70461. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70462. $ctx1.sendIdx["assert:equals:"]=1;
  70463. //>>excludeEnd("ctx");
  70464. self._assert_equals_((-3)._negated(),(3));
  70465. return self;
  70466. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70467. }, function($ctx1) {$ctx1.fill(self,"testNegated",{},$globals.NumberTest)});
  70468. //>>excludeEnd("ctx");
  70469. },
  70470. //>>excludeStart("ide", pragmas.excludeIdeData);
  70471. args: [],
  70472. source: "testNegated\x0a\x09self assert: 3 negated equals: -3.\x0a\x09self assert: -3 negated equals: 3",
  70473. referencedClasses: [],
  70474. //>>excludeEnd("ide");
  70475. messageSends: ["assert:equals:", "negated"]
  70476. }),
  70477. $globals.NumberTest);
  70478. $core.addMethod(
  70479. $core.method({
  70480. selector: "testPrintShowingDecimalPlaces",
  70481. protocol: 'tests',
  70482. fn: function (){
  70483. var self=this;
  70484. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70485. return $core.withContext(function($ctx1) {
  70486. //>>excludeEnd("ctx");
  70487. var $1,$2,$4,$3,$5,$6,$8,$7,$10,$9,$11,$12,$13,$14,$15;
  70488. $1=(23)._printShowingDecimalPlaces_((2));
  70489. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70490. $ctx1.sendIdx["printShowingDecimalPlaces:"]=1;
  70491. //>>excludeEnd("ctx");
  70492. self._assert_equals_($1,"23.00");
  70493. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70494. $ctx1.sendIdx["assert:equals:"]=1;
  70495. //>>excludeEnd("ctx");
  70496. $2=(23.5698)._printShowingDecimalPlaces_((2));
  70497. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70498. $ctx1.sendIdx["printShowingDecimalPlaces:"]=2;
  70499. //>>excludeEnd("ctx");
  70500. self._assert_equals_($2,"23.57");
  70501. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70502. $ctx1.sendIdx["assert:equals:"]=2;
  70503. //>>excludeEnd("ctx");
  70504. $4=(234.567)._negated();
  70505. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70506. $ctx1.sendIdx["negated"]=1;
  70507. //>>excludeEnd("ctx");
  70508. $3=$recv($4)._printShowingDecimalPlaces_((5));
  70509. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70510. $ctx1.sendIdx["printShowingDecimalPlaces:"]=3;
  70511. //>>excludeEnd("ctx");
  70512. self._assert_equals_($3,"-234.56700");
  70513. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70514. $ctx1.sendIdx["assert:equals:"]=3;
  70515. //>>excludeEnd("ctx");
  70516. $5=(23.4567)._printShowingDecimalPlaces_((0));
  70517. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70518. $ctx1.sendIdx["printShowingDecimalPlaces:"]=4;
  70519. //>>excludeEnd("ctx");
  70520. self._assert_equals_($5,"23");
  70521. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70522. $ctx1.sendIdx["assert:equals:"]=4;
  70523. //>>excludeEnd("ctx");
  70524. $6=(23.5567)._printShowingDecimalPlaces_((0));
  70525. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70526. $ctx1.sendIdx["printShowingDecimalPlaces:"]=5;
  70527. //>>excludeEnd("ctx");
  70528. self._assert_equals_($6,"24");
  70529. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70530. $ctx1.sendIdx["assert:equals:"]=5;
  70531. //>>excludeEnd("ctx");
  70532. $8=(23.4567)._negated();
  70533. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70534. $ctx1.sendIdx["negated"]=2;
  70535. //>>excludeEnd("ctx");
  70536. $7=$recv($8)._printShowingDecimalPlaces_((0));
  70537. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70538. $ctx1.sendIdx["printShowingDecimalPlaces:"]=6;
  70539. //>>excludeEnd("ctx");
  70540. self._assert_equals_($7,"-23");
  70541. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70542. $ctx1.sendIdx["assert:equals:"]=6;
  70543. //>>excludeEnd("ctx");
  70544. $10=(23.5567)._negated();
  70545. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70546. $ctx1.sendIdx["negated"]=3;
  70547. //>>excludeEnd("ctx");
  70548. $9=$recv($10)._printShowingDecimalPlaces_((0));
  70549. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70550. $ctx1.sendIdx["printShowingDecimalPlaces:"]=7;
  70551. //>>excludeEnd("ctx");
  70552. self._assert_equals_($9,"-24");
  70553. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70554. $ctx1.sendIdx["assert:equals:"]=7;
  70555. //>>excludeEnd("ctx");
  70556. $11=(100000000)._printShowingDecimalPlaces_((1));
  70557. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70558. $ctx1.sendIdx["printShowingDecimalPlaces:"]=8;
  70559. //>>excludeEnd("ctx");
  70560. self._assert_equals_($11,"100000000.0");
  70561. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70562. $ctx1.sendIdx["assert:equals:"]=8;
  70563. //>>excludeEnd("ctx");
  70564. $12=(0.98)._printShowingDecimalPlaces_((5));
  70565. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70566. $ctx1.sendIdx["printShowingDecimalPlaces:"]=9;
  70567. //>>excludeEnd("ctx");
  70568. self._assert_equals_($12,"0.98000");
  70569. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70570. $ctx1.sendIdx["assert:equals:"]=9;
  70571. //>>excludeEnd("ctx");
  70572. $13=$recv((0.98)._negated())._printShowingDecimalPlaces_((2));
  70573. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70574. $ctx1.sendIdx["printShowingDecimalPlaces:"]=10;
  70575. //>>excludeEnd("ctx");
  70576. self._assert_equals_($13,"-0.98");
  70577. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70578. $ctx1.sendIdx["assert:equals:"]=10;
  70579. //>>excludeEnd("ctx");
  70580. $14=(2.567)._printShowingDecimalPlaces_((2));
  70581. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70582. $ctx1.sendIdx["printShowingDecimalPlaces:"]=11;
  70583. //>>excludeEnd("ctx");
  70584. self._assert_equals_($14,"2.57");
  70585. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70586. $ctx1.sendIdx["assert:equals:"]=11;
  70587. //>>excludeEnd("ctx");
  70588. $15=(-2.567)._printShowingDecimalPlaces_((2));
  70589. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70590. $ctx1.sendIdx["printShowingDecimalPlaces:"]=12;
  70591. //>>excludeEnd("ctx");
  70592. self._assert_equals_($15,"-2.57");
  70593. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70594. $ctx1.sendIdx["assert:equals:"]=12;
  70595. //>>excludeEnd("ctx");
  70596. self._assert_equals_((0)._printShowingDecimalPlaces_((2)),"0.00");
  70597. return self;
  70598. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70599. }, function($ctx1) {$ctx1.fill(self,"testPrintShowingDecimalPlaces",{},$globals.NumberTest)});
  70600. //>>excludeEnd("ctx");
  70601. },
  70602. //>>excludeStart("ide", pragmas.excludeIdeData);
  70603. args: [],
  70604. 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'.",
  70605. referencedClasses: [],
  70606. //>>excludeEnd("ide");
  70607. messageSends: ["assert:equals:", "printShowingDecimalPlaces:", "negated"]
  70608. }),
  70609. $globals.NumberTest);
  70610. $core.addMethod(
  70611. $core.method({
  70612. selector: "testRaisedTo",
  70613. protocol: 'tests',
  70614. fn: function (){
  70615. var self=this;
  70616. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70617. return $core.withContext(function($ctx1) {
  70618. //>>excludeEnd("ctx");
  70619. var $1,$2,$3;
  70620. $1=(2)._raisedTo_((4));
  70621. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70622. $ctx1.sendIdx["raisedTo:"]=1;
  70623. //>>excludeEnd("ctx");
  70624. self._assert_equals_($1,(16));
  70625. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70626. $ctx1.sendIdx["assert:equals:"]=1;
  70627. //>>excludeEnd("ctx");
  70628. $2=(2)._raisedTo_((0));
  70629. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70630. $ctx1.sendIdx["raisedTo:"]=2;
  70631. //>>excludeEnd("ctx");
  70632. self._assert_equals_($2,(1));
  70633. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70634. $ctx1.sendIdx["assert:equals:"]=2;
  70635. //>>excludeEnd("ctx");
  70636. $3=(2)._raisedTo_((-3));
  70637. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70638. $ctx1.sendIdx["raisedTo:"]=3;
  70639. //>>excludeEnd("ctx");
  70640. self._assert_equals_($3,(0.125));
  70641. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70642. $ctx1.sendIdx["assert:equals:"]=3;
  70643. //>>excludeEnd("ctx");
  70644. self._assert_equals_((4)._raisedTo_((0.5)),(2));
  70645. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70646. $ctx1.sendIdx["assert:equals:"]=4;
  70647. //>>excludeEnd("ctx");
  70648. self._assert_equals_((2).__star_star((4)),(16));
  70649. return self;
  70650. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70651. }, function($ctx1) {$ctx1.fill(self,"testRaisedTo",{},$globals.NumberTest)});
  70652. //>>excludeEnd("ctx");
  70653. },
  70654. //>>excludeStart("ide", pragmas.excludeIdeData);
  70655. args: [],
  70656. 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.",
  70657. referencedClasses: [],
  70658. //>>excludeEnd("ide");
  70659. messageSends: ["assert:equals:", "raisedTo:", "**"]
  70660. }),
  70661. $globals.NumberTest);
  70662. $core.addMethod(
  70663. $core.method({
  70664. selector: "testRounded",
  70665. protocol: 'tests',
  70666. fn: function (){
  70667. var self=this;
  70668. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70669. return $core.withContext(function($ctx1) {
  70670. //>>excludeEnd("ctx");
  70671. var $1,$2;
  70672. $1=(3)._rounded();
  70673. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70674. $ctx1.sendIdx["rounded"]=1;
  70675. //>>excludeEnd("ctx");
  70676. self._assert_equals_($1,(3));
  70677. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70678. $ctx1.sendIdx["assert:equals:"]=1;
  70679. //>>excludeEnd("ctx");
  70680. $2=(3.212)._rounded();
  70681. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70682. $ctx1.sendIdx["rounded"]=2;
  70683. //>>excludeEnd("ctx");
  70684. self._assert_equals_($2,(3));
  70685. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70686. $ctx1.sendIdx["assert:equals:"]=2;
  70687. //>>excludeEnd("ctx");
  70688. self._assert_equals_((3.51)._rounded(),(4));
  70689. return self;
  70690. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70691. }, function($ctx1) {$ctx1.fill(self,"testRounded",{},$globals.NumberTest)});
  70692. //>>excludeEnd("ctx");
  70693. },
  70694. //>>excludeStart("ide", pragmas.excludeIdeData);
  70695. args: [],
  70696. 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",
  70697. referencedClasses: [],
  70698. //>>excludeEnd("ide");
  70699. messageSends: ["assert:equals:", "rounded"]
  70700. }),
  70701. $globals.NumberTest);
  70702. $core.addMethod(
  70703. $core.method({
  70704. selector: "testSign",
  70705. protocol: 'tests',
  70706. fn: function (){
  70707. var self=this;
  70708. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70709. return $core.withContext(function($ctx1) {
  70710. //>>excludeEnd("ctx");
  70711. var $1,$2;
  70712. $1=(5)._sign();
  70713. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70714. $ctx1.sendIdx["sign"]=1;
  70715. //>>excludeEnd("ctx");
  70716. self._assert_equals_($1,(1));
  70717. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70718. $ctx1.sendIdx["assert:equals:"]=1;
  70719. //>>excludeEnd("ctx");
  70720. $2=(0)._sign();
  70721. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70722. $ctx1.sendIdx["sign"]=2;
  70723. //>>excludeEnd("ctx");
  70724. self._assert_equals_($2,(0));
  70725. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70726. $ctx1.sendIdx["assert:equals:"]=2;
  70727. //>>excludeEnd("ctx");
  70728. self._assert_equals_((-1.4)._sign(),(-1));
  70729. return self;
  70730. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70731. }, function($ctx1) {$ctx1.fill(self,"testSign",{},$globals.NumberTest)});
  70732. //>>excludeEnd("ctx");
  70733. },
  70734. //>>excludeStart("ide", pragmas.excludeIdeData);
  70735. args: [],
  70736. source: "testSign\x0a\x09self assert: 5 sign equals: 1.\x0a\x09self assert: 0 sign equals: 0.\x0a\x09self assert: -1.4 sign equals: -1.",
  70737. referencedClasses: [],
  70738. //>>excludeEnd("ide");
  70739. messageSends: ["assert:equals:", "sign"]
  70740. }),
  70741. $globals.NumberTest);
  70742. $core.addMethod(
  70743. $core.method({
  70744. selector: "testSqrt",
  70745. protocol: 'tests',
  70746. fn: function (){
  70747. var self=this;
  70748. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70749. return $core.withContext(function($ctx1) {
  70750. //>>excludeEnd("ctx");
  70751. var $1;
  70752. $1=(4)._sqrt();
  70753. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70754. $ctx1.sendIdx["sqrt"]=1;
  70755. //>>excludeEnd("ctx");
  70756. self._assert_equals_($1,(2));
  70757. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70758. $ctx1.sendIdx["assert:equals:"]=1;
  70759. //>>excludeEnd("ctx");
  70760. self._assert_equals_((16)._sqrt(),(4));
  70761. return self;
  70762. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70763. }, function($ctx1) {$ctx1.fill(self,"testSqrt",{},$globals.NumberTest)});
  70764. //>>excludeEnd("ctx");
  70765. },
  70766. //>>excludeStart("ide", pragmas.excludeIdeData);
  70767. args: [],
  70768. source: "testSqrt\x0a\x09\x0a\x09self assert: 4 sqrt equals: 2.\x0a\x09self assert: 16 sqrt equals: 4",
  70769. referencedClasses: [],
  70770. //>>excludeEnd("ide");
  70771. messageSends: ["assert:equals:", "sqrt"]
  70772. }),
  70773. $globals.NumberTest);
  70774. $core.addMethod(
  70775. $core.method({
  70776. selector: "testSquared",
  70777. protocol: 'tests',
  70778. fn: function (){
  70779. var self=this;
  70780. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70781. return $core.withContext(function($ctx1) {
  70782. //>>excludeEnd("ctx");
  70783. self._assert_equals_((4)._squared(),(16));
  70784. return self;
  70785. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70786. }, function($ctx1) {$ctx1.fill(self,"testSquared",{},$globals.NumberTest)});
  70787. //>>excludeEnd("ctx");
  70788. },
  70789. //>>excludeStart("ide", pragmas.excludeIdeData);
  70790. args: [],
  70791. source: "testSquared\x0a\x09\x0a\x09self assert: 4 squared equals: 16",
  70792. referencedClasses: [],
  70793. //>>excludeEnd("ide");
  70794. messageSends: ["assert:equals:", "squared"]
  70795. }),
  70796. $globals.NumberTest);
  70797. $core.addMethod(
  70798. $core.method({
  70799. selector: "testTimesRepeat",
  70800. protocol: 'tests',
  70801. fn: function (){
  70802. var self=this;
  70803. var i;
  70804. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70805. return $core.withContext(function($ctx1) {
  70806. //>>excludeEnd("ctx");
  70807. i=(0);
  70808. (0)._timesRepeat_((function(){
  70809. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70810. return $core.withContext(function($ctx2) {
  70811. //>>excludeEnd("ctx");
  70812. i=$recv(i).__plus((1));
  70813. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70814. $ctx2.sendIdx["+"]=1;
  70815. //>>excludeEnd("ctx");
  70816. return i;
  70817. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70818. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  70819. //>>excludeEnd("ctx");
  70820. }));
  70821. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70822. $ctx1.sendIdx["timesRepeat:"]=1;
  70823. //>>excludeEnd("ctx");
  70824. self._assert_equals_(i,(0));
  70825. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70826. $ctx1.sendIdx["assert:equals:"]=1;
  70827. //>>excludeEnd("ctx");
  70828. (5)._timesRepeat_((function(){
  70829. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70830. return $core.withContext(function($ctx2) {
  70831. //>>excludeEnd("ctx");
  70832. i=$recv(i).__plus((1));
  70833. return i;
  70834. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70835. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
  70836. //>>excludeEnd("ctx");
  70837. }));
  70838. self._assert_equals_(i,(5));
  70839. return self;
  70840. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70841. }, function($ctx1) {$ctx1.fill(self,"testTimesRepeat",{i:i},$globals.NumberTest)});
  70842. //>>excludeEnd("ctx");
  70843. },
  70844. //>>excludeStart("ide", pragmas.excludeIdeData);
  70845. args: [],
  70846. 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",
  70847. referencedClasses: [],
  70848. //>>excludeEnd("ide");
  70849. messageSends: ["timesRepeat:", "+", "assert:equals:"]
  70850. }),
  70851. $globals.NumberTest);
  70852. $core.addMethod(
  70853. $core.method({
  70854. selector: "testTo",
  70855. protocol: 'tests',
  70856. fn: function (){
  70857. var self=this;
  70858. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70859. return $core.withContext(function($ctx1) {
  70860. //>>excludeEnd("ctx");
  70861. self._assert_equals_((1)._to_((5)),[(1), (2), (3), (4), (5)]);
  70862. return self;
  70863. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70864. }, function($ctx1) {$ctx1.fill(self,"testTo",{},$globals.NumberTest)});
  70865. //>>excludeEnd("ctx");
  70866. },
  70867. //>>excludeStart("ide", pragmas.excludeIdeData);
  70868. args: [],
  70869. source: "testTo\x0a\x09self assert: (1 to: 5) equals: #(1 2 3 4 5)",
  70870. referencedClasses: [],
  70871. //>>excludeEnd("ide");
  70872. messageSends: ["assert:equals:", "to:"]
  70873. }),
  70874. $globals.NumberTest);
  70875. $core.addMethod(
  70876. $core.method({
  70877. selector: "testToBy",
  70878. protocol: 'tests',
  70879. fn: function (){
  70880. var self=this;
  70881. function $Error(){return $globals.Error||(typeof Error=="undefined"?nil:Error)}
  70882. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70883. return $core.withContext(function($ctx1) {
  70884. //>>excludeEnd("ctx");
  70885. var $1;
  70886. $1=(0)._to_by_((6),(2));
  70887. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70888. $ctx1.sendIdx["to:by:"]=1;
  70889. //>>excludeEnd("ctx");
  70890. self._assert_equals_($1,[(0), (2), (4), (6)]);
  70891. self._should_raise_((function(){
  70892. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70893. return $core.withContext(function($ctx2) {
  70894. //>>excludeEnd("ctx");
  70895. return (1)._to_by_((4),(0));
  70896. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70897. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  70898. //>>excludeEnd("ctx");
  70899. }),$Error());
  70900. return self;
  70901. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70902. }, function($ctx1) {$ctx1.fill(self,"testToBy",{},$globals.NumberTest)});
  70903. //>>excludeEnd("ctx");
  70904. },
  70905. //>>excludeStart("ide", pragmas.excludeIdeData);
  70906. args: [],
  70907. 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",
  70908. referencedClasses: ["Error"],
  70909. //>>excludeEnd("ide");
  70910. messageSends: ["assert:equals:", "to:by:", "should:raise:"]
  70911. }),
  70912. $globals.NumberTest);
  70913. $core.addMethod(
  70914. $core.method({
  70915. selector: "testTrigonometry",
  70916. protocol: 'tests',
  70917. fn: function (){
  70918. var self=this;
  70919. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70920. return $core.withContext(function($ctx1) {
  70921. //>>excludeEnd("ctx");
  70922. self._assert_equals_((0)._cos(),(1));
  70923. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70924. $ctx1.sendIdx["assert:equals:"]=1;
  70925. //>>excludeEnd("ctx");
  70926. self._assert_equals_((0)._sin(),(0));
  70927. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70928. $ctx1.sendIdx["assert:equals:"]=2;
  70929. //>>excludeEnd("ctx");
  70930. self._assert_equals_((0)._tan(),(0));
  70931. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70932. $ctx1.sendIdx["assert:equals:"]=3;
  70933. //>>excludeEnd("ctx");
  70934. self._assert_equals_((1)._arcCos(),(0));
  70935. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70936. $ctx1.sendIdx["assert:equals:"]=4;
  70937. //>>excludeEnd("ctx");
  70938. self._assert_equals_((0)._arcSin(),(0));
  70939. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70940. $ctx1.sendIdx["assert:equals:"]=5;
  70941. //>>excludeEnd("ctx");
  70942. self._assert_equals_((0)._arcTan(),(0));
  70943. return self;
  70944. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70945. }, function($ctx1) {$ctx1.fill(self,"testTrigonometry",{},$globals.NumberTest)});
  70946. //>>excludeEnd("ctx");
  70947. },
  70948. //>>excludeStart("ide", pragmas.excludeIdeData);
  70949. args: [],
  70950. 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.",
  70951. referencedClasses: [],
  70952. //>>excludeEnd("ide");
  70953. messageSends: ["assert:equals:", "cos", "sin", "tan", "arcCos", "arcSin", "arcTan"]
  70954. }),
  70955. $globals.NumberTest);
  70956. $core.addMethod(
  70957. $core.method({
  70958. selector: "testTruncated",
  70959. protocol: 'tests',
  70960. fn: function (){
  70961. var self=this;
  70962. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70963. return $core.withContext(function($ctx1) {
  70964. //>>excludeEnd("ctx");
  70965. var $1,$2;
  70966. $1=(3)._truncated();
  70967. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70968. $ctx1.sendIdx["truncated"]=1;
  70969. //>>excludeEnd("ctx");
  70970. self._assert_equals_($1,(3));
  70971. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70972. $ctx1.sendIdx["assert:equals:"]=1;
  70973. //>>excludeEnd("ctx");
  70974. $2=(3.212)._truncated();
  70975. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70976. $ctx1.sendIdx["truncated"]=2;
  70977. //>>excludeEnd("ctx");
  70978. self._assert_equals_($2,(3));
  70979. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70980. $ctx1.sendIdx["assert:equals:"]=2;
  70981. //>>excludeEnd("ctx");
  70982. self._assert_equals_((3.51)._truncated(),(3));
  70983. return self;
  70984. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  70985. }, function($ctx1) {$ctx1.fill(self,"testTruncated",{},$globals.NumberTest)});
  70986. //>>excludeEnd("ctx");
  70987. },
  70988. //>>excludeStart("ide", pragmas.excludeIdeData);
  70989. args: [],
  70990. 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",
  70991. referencedClasses: [],
  70992. //>>excludeEnd("ide");
  70993. messageSends: ["assert:equals:", "truncated"]
  70994. }),
  70995. $globals.NumberTest);
  70996. $core.addClass('ObjectMock', $globals.Object, ['foo', 'bar'], 'Kernel-Tests');
  70997. //>>excludeStart("ide", pragmas.excludeIdeData);
  70998. $globals.ObjectMock.comment="ObjectMock is there only to perform tests on classes.";
  70999. //>>excludeEnd("ide");
  71000. $core.addMethod(
  71001. $core.method({
  71002. selector: "foo",
  71003. protocol: 'not yet classified',
  71004. fn: function (){
  71005. var self=this;
  71006. var $1;
  71007. $1=self["@foo"];
  71008. return $1;
  71009. },
  71010. //>>excludeStart("ide", pragmas.excludeIdeData);
  71011. args: [],
  71012. source: "foo\x0a\x09^ foo",
  71013. referencedClasses: [],
  71014. //>>excludeEnd("ide");
  71015. messageSends: []
  71016. }),
  71017. $globals.ObjectMock);
  71018. $core.addMethod(
  71019. $core.method({
  71020. selector: "foo:",
  71021. protocol: 'not yet classified',
  71022. fn: function (anObject){
  71023. var self=this;
  71024. self["@foo"]=anObject;
  71025. return self;
  71026. },
  71027. //>>excludeStart("ide", pragmas.excludeIdeData);
  71028. args: ["anObject"],
  71029. source: "foo: anObject\x0a\x09foo := anObject",
  71030. referencedClasses: [],
  71031. //>>excludeEnd("ide");
  71032. messageSends: []
  71033. }),
  71034. $globals.ObjectMock);
  71035. $core.addClass('ObjectTest', $globals.TestCase, [], 'Kernel-Tests');
  71036. $core.addMethod(
  71037. $core.method({
  71038. selector: "notDefined",
  71039. protocol: 'tests',
  71040. fn: function (){
  71041. var self=this;
  71042. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71043. return $core.withContext(function($ctx1) {
  71044. //>>excludeEnd("ctx");
  71045. return void 0;;
  71046. return self;
  71047. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71048. }, function($ctx1) {$ctx1.fill(self,"notDefined",{},$globals.ObjectTest)});
  71049. //>>excludeEnd("ctx");
  71050. },
  71051. //>>excludeStart("ide", pragmas.excludeIdeData);
  71052. args: [],
  71053. source: "notDefined\x0a\x09<return void 0;>",
  71054. referencedClasses: [],
  71055. //>>excludeEnd("ide");
  71056. messageSends: []
  71057. }),
  71058. $globals.ObjectTest);
  71059. $core.addMethod(
  71060. $core.method({
  71061. selector: "testBasicAccess",
  71062. protocol: 'tests',
  71063. fn: function (){
  71064. var self=this;
  71065. var o;
  71066. function $Object(){return $globals.Object||(typeof Object=="undefined"?nil:Object)}
  71067. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71068. return $core.withContext(function($ctx1) {
  71069. //>>excludeEnd("ctx");
  71070. var $1;
  71071. o=$recv($Object())._new();
  71072. $recv(o)._basicAt_put_("a",(1));
  71073. $1=$recv(o)._basicAt_("a");
  71074. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71075. $ctx1.sendIdx["basicAt:"]=1;
  71076. //>>excludeEnd("ctx");
  71077. self._assert_equals_($1,(1));
  71078. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71079. $ctx1.sendIdx["assert:equals:"]=1;
  71080. //>>excludeEnd("ctx");
  71081. self._assert_equals_($recv(o)._basicAt_("b"),nil);
  71082. return self;
  71083. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71084. }, function($ctx1) {$ctx1.fill(self,"testBasicAccess",{o:o},$globals.ObjectTest)});
  71085. //>>excludeEnd("ctx");
  71086. },
  71087. //>>excludeStart("ide", pragmas.excludeIdeData);
  71088. args: [],
  71089. 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",
  71090. referencedClasses: ["Object"],
  71091. //>>excludeEnd("ide");
  71092. messageSends: ["new", "basicAt:put:", "assert:equals:", "basicAt:"]
  71093. }),
  71094. $globals.ObjectTest);
  71095. $core.addMethod(
  71096. $core.method({
  71097. selector: "testBasicPerform",
  71098. protocol: 'tests',
  71099. fn: function (){
  71100. var self=this;
  71101. var o;
  71102. function $Object(){return $globals.Object||(typeof Object=="undefined"?nil:Object)}
  71103. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71104. return $core.withContext(function($ctx1) {
  71105. //>>excludeEnd("ctx");
  71106. o=$recv($Object())._new();
  71107. $recv(o)._basicAt_put_("func",(function(){
  71108. return "hello";
  71109. }));
  71110. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71111. $ctx1.sendIdx["basicAt:put:"]=1;
  71112. //>>excludeEnd("ctx");
  71113. $recv(o)._basicAt_put_("func2",(function(a){
  71114. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71115. return $core.withContext(function($ctx2) {
  71116. //>>excludeEnd("ctx");
  71117. return $recv(a).__plus((1));
  71118. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71119. }, function($ctx2) {$ctx2.fillBlock({a:a},$ctx1,2)});
  71120. //>>excludeEnd("ctx");
  71121. }));
  71122. self._assert_equals_($recv(o)._basicPerform_("func"),"hello");
  71123. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71124. $ctx1.sendIdx["assert:equals:"]=1;
  71125. //>>excludeEnd("ctx");
  71126. self._assert_equals_($recv(o)._basicPerform_withArguments_("func2",[(3)]),(4));
  71127. return self;
  71128. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71129. }, function($ctx1) {$ctx1.fill(self,"testBasicPerform",{o:o},$globals.ObjectTest)});
  71130. //>>excludeEnd("ctx");
  71131. },
  71132. //>>excludeStart("ide", pragmas.excludeIdeData);
  71133. args: [],
  71134. 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",
  71135. referencedClasses: ["Object"],
  71136. //>>excludeEnd("ide");
  71137. messageSends: ["new", "basicAt:put:", "+", "assert:equals:", "basicPerform:", "basicPerform:withArguments:"]
  71138. }),
  71139. $globals.ObjectTest);
  71140. $core.addMethod(
  71141. $core.method({
  71142. selector: "testDNU",
  71143. protocol: 'tests',
  71144. fn: function (){
  71145. var self=this;
  71146. function $Object(){return $globals.Object||(typeof Object=="undefined"?nil:Object)}
  71147. function $MessageNotUnderstood(){return $globals.MessageNotUnderstood||(typeof MessageNotUnderstood=="undefined"?nil:MessageNotUnderstood)}
  71148. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71149. return $core.withContext(function($ctx1) {
  71150. //>>excludeEnd("ctx");
  71151. self._should_raise_((function(){
  71152. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71153. return $core.withContext(function($ctx2) {
  71154. //>>excludeEnd("ctx");
  71155. return $recv($recv($Object())._new())._foo();
  71156. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71157. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  71158. //>>excludeEnd("ctx");
  71159. }),$MessageNotUnderstood());
  71160. return self;
  71161. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71162. }, function($ctx1) {$ctx1.fill(self,"testDNU",{},$globals.ObjectTest)});
  71163. //>>excludeEnd("ctx");
  71164. },
  71165. //>>excludeStart("ide", pragmas.excludeIdeData);
  71166. args: [],
  71167. source: "testDNU\x0a\x09self should: [ Object new foo ] raise: MessageNotUnderstood",
  71168. referencedClasses: ["Object", "MessageNotUnderstood"],
  71169. //>>excludeEnd("ide");
  71170. messageSends: ["should:raise:", "foo", "new"]
  71171. }),
  71172. $globals.ObjectTest);
  71173. $core.addMethod(
  71174. $core.method({
  71175. selector: "testEquality",
  71176. protocol: 'tests',
  71177. fn: function (){
  71178. var self=this;
  71179. var o;
  71180. function $Object(){return $globals.Object||(typeof Object=="undefined"?nil:Object)}
  71181. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71182. return $core.withContext(function($ctx1) {
  71183. //>>excludeEnd("ctx");
  71184. var $1,$2,$4,$3;
  71185. o=$recv($Object())._new();
  71186. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71187. $ctx1.sendIdx["new"]=1;
  71188. //>>excludeEnd("ctx");
  71189. $1=$recv(o).__eq($recv($Object())._new());
  71190. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71191. $ctx1.sendIdx["="]=1;
  71192. //>>excludeEnd("ctx");
  71193. self._deny_($1);
  71194. $2=$recv(o).__eq(o);
  71195. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71196. $ctx1.sendIdx["="]=2;
  71197. //>>excludeEnd("ctx");
  71198. self._assert_($2);
  71199. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71200. $ctx1.sendIdx["assert:"]=1;
  71201. //>>excludeEnd("ctx");
  71202. $4=$recv(o)._yourself();
  71203. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71204. $ctx1.sendIdx["yourself"]=1;
  71205. //>>excludeEnd("ctx");
  71206. $3=$recv($4).__eq(o);
  71207. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71208. $ctx1.sendIdx["="]=3;
  71209. //>>excludeEnd("ctx");
  71210. self._assert_($3);
  71211. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71212. $ctx1.sendIdx["assert:"]=2;
  71213. //>>excludeEnd("ctx");
  71214. self._assert_($recv(o).__eq($recv(o)._yourself()));
  71215. return self;
  71216. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71217. }, function($ctx1) {$ctx1.fill(self,"testEquality",{o:o},$globals.ObjectTest)});
  71218. //>>excludeEnd("ctx");
  71219. },
  71220. //>>excludeStart("ide", pragmas.excludeIdeData);
  71221. args: [],
  71222. 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)",
  71223. referencedClasses: ["Object"],
  71224. //>>excludeEnd("ide");
  71225. messageSends: ["new", "deny:", "=", "assert:", "yourself"]
  71226. }),
  71227. $globals.ObjectTest);
  71228. $core.addMethod(
  71229. $core.method({
  71230. selector: "testHalt",
  71231. protocol: 'tests',
  71232. fn: function (){
  71233. var self=this;
  71234. function $Object(){return $globals.Object||(typeof Object=="undefined"?nil:Object)}
  71235. function $Error(){return $globals.Error||(typeof Error=="undefined"?nil:Error)}
  71236. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71237. return $core.withContext(function($ctx1) {
  71238. //>>excludeEnd("ctx");
  71239. self._should_raise_((function(){
  71240. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71241. return $core.withContext(function($ctx2) {
  71242. //>>excludeEnd("ctx");
  71243. return $recv($recv($Object())._new())._halt();
  71244. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71245. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  71246. //>>excludeEnd("ctx");
  71247. }),$Error());
  71248. return self;
  71249. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71250. }, function($ctx1) {$ctx1.fill(self,"testHalt",{},$globals.ObjectTest)});
  71251. //>>excludeEnd("ctx");
  71252. },
  71253. //>>excludeStart("ide", pragmas.excludeIdeData);
  71254. args: [],
  71255. source: "testHalt\x0a\x09self should: [ Object new halt ] raise: Error",
  71256. referencedClasses: ["Object", "Error"],
  71257. //>>excludeEnd("ide");
  71258. messageSends: ["should:raise:", "halt", "new"]
  71259. }),
  71260. $globals.ObjectTest);
  71261. $core.addMethod(
  71262. $core.method({
  71263. selector: "testIdentity",
  71264. protocol: 'tests',
  71265. fn: function (){
  71266. var self=this;
  71267. var o;
  71268. function $Object(){return $globals.Object||(typeof Object=="undefined"?nil:Object)}
  71269. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71270. return $core.withContext(function($ctx1) {
  71271. //>>excludeEnd("ctx");
  71272. var $1,$2,$4,$3;
  71273. o=$recv($Object())._new();
  71274. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71275. $ctx1.sendIdx["new"]=1;
  71276. //>>excludeEnd("ctx");
  71277. $1=$recv(o).__eq_eq($recv($Object())._new());
  71278. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71279. $ctx1.sendIdx["=="]=1;
  71280. //>>excludeEnd("ctx");
  71281. self._deny_($1);
  71282. $2=$recv(o).__eq_eq(o);
  71283. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71284. $ctx1.sendIdx["=="]=2;
  71285. //>>excludeEnd("ctx");
  71286. self._assert_($2);
  71287. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71288. $ctx1.sendIdx["assert:"]=1;
  71289. //>>excludeEnd("ctx");
  71290. $4=$recv(o)._yourself();
  71291. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71292. $ctx1.sendIdx["yourself"]=1;
  71293. //>>excludeEnd("ctx");
  71294. $3=$recv($4).__eq_eq(o);
  71295. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71296. $ctx1.sendIdx["=="]=3;
  71297. //>>excludeEnd("ctx");
  71298. self._assert_($3);
  71299. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71300. $ctx1.sendIdx["assert:"]=2;
  71301. //>>excludeEnd("ctx");
  71302. self._assert_($recv(o).__eq_eq($recv(o)._yourself()));
  71303. return self;
  71304. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71305. }, function($ctx1) {$ctx1.fill(self,"testIdentity",{o:o},$globals.ObjectTest)});
  71306. //>>excludeEnd("ctx");
  71307. },
  71308. //>>excludeStart("ide", pragmas.excludeIdeData);
  71309. args: [],
  71310. 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",
  71311. referencedClasses: ["Object"],
  71312. //>>excludeEnd("ide");
  71313. messageSends: ["new", "deny:", "==", "assert:", "yourself"]
  71314. }),
  71315. $globals.ObjectTest);
  71316. $core.addMethod(
  71317. $core.method({
  71318. selector: "testIfNil",
  71319. protocol: 'tests',
  71320. fn: function (){
  71321. var self=this;
  71322. function $Object(){return $globals.Object||(typeof Object=="undefined"?nil:Object)}
  71323. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71324. return $core.withContext(function($ctx1) {
  71325. //>>excludeEnd("ctx");
  71326. var $2,$1,$5,$4,$3,$7,$6,$9,$8,$11,$10,$receiver;
  71327. $2=$recv($Object())._new();
  71328. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71329. $ctx1.sendIdx["new"]=1;
  71330. //>>excludeEnd("ctx");
  71331. $1=$recv($2)._isNil();
  71332. self._deny_($1);
  71333. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71334. $ctx1.sendIdx["deny:"]=1;
  71335. //>>excludeEnd("ctx");
  71336. $5=$recv($Object())._new();
  71337. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71338. $ctx1.sendIdx["new"]=2;
  71339. //>>excludeEnd("ctx");
  71340. if(($receiver = $5) == null || $receiver.isNil){
  71341. $4=true;
  71342. } else {
  71343. $4=$5;
  71344. };
  71345. $3=$recv($4).__eq(true);
  71346. self._deny_($3);
  71347. $7=$recv($Object())._new();
  71348. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71349. $ctx1.sendIdx["new"]=3;
  71350. //>>excludeEnd("ctx");
  71351. if(($receiver = $7) == null || $receiver.isNil){
  71352. $6=$7;
  71353. } else {
  71354. $6=true;
  71355. };
  71356. self._assert_equals_($6,true);
  71357. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71358. $ctx1.sendIdx["assert:equals:"]=1;
  71359. //>>excludeEnd("ctx");
  71360. $9=$recv($Object())._new();
  71361. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71362. $ctx1.sendIdx["new"]=4;
  71363. //>>excludeEnd("ctx");
  71364. if(($receiver = $9) == null || $receiver.isNil){
  71365. $8=false;
  71366. } else {
  71367. $8=true;
  71368. };
  71369. self._assert_equals_($8,true);
  71370. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71371. $ctx1.sendIdx["assert:equals:"]=2;
  71372. //>>excludeEnd("ctx");
  71373. $11=$recv($Object())._new();
  71374. if(($receiver = $11) == null || $receiver.isNil){
  71375. $10=false;
  71376. } else {
  71377. $10=true;
  71378. };
  71379. self._assert_equals_($10,true);
  71380. return self;
  71381. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71382. }, function($ctx1) {$ctx1.fill(self,"testIfNil",{},$globals.ObjectTest)});
  71383. //>>excludeEnd("ctx");
  71384. },
  71385. //>>excludeStart("ide", pragmas.excludeIdeData);
  71386. args: [],
  71387. 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",
  71388. referencedClasses: ["Object"],
  71389. //>>excludeEnd("ide");
  71390. messageSends: ["deny:", "isNil", "new", "=", "ifNil:", "assert:equals:", "ifNotNil:", "ifNil:ifNotNil:", "ifNotNil:ifNil:"]
  71391. }),
  71392. $globals.ObjectTest);
  71393. $core.addMethod(
  71394. $core.method({
  71395. selector: "testInstVars",
  71396. protocol: 'tests',
  71397. fn: function (){
  71398. var self=this;
  71399. var o;
  71400. function $ObjectMock(){return $globals.ObjectMock||(typeof ObjectMock=="undefined"?nil:ObjectMock)}
  71401. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71402. return $core.withContext(function($ctx1) {
  71403. //>>excludeEnd("ctx");
  71404. var $1,$2;
  71405. o=$recv($ObjectMock())._new();
  71406. $1=$recv(o)._instVarAt_("foo");
  71407. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71408. $ctx1.sendIdx["instVarAt:"]=1;
  71409. //>>excludeEnd("ctx");
  71410. self._assert_equals_($1,nil);
  71411. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71412. $ctx1.sendIdx["assert:equals:"]=1;
  71413. //>>excludeEnd("ctx");
  71414. $recv(o)._instVarAt_put_("foo",(1));
  71415. $2=$recv(o)._instVarAt_("foo");
  71416. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71417. $ctx1.sendIdx["instVarAt:"]=2;
  71418. //>>excludeEnd("ctx");
  71419. self._assert_equals_($2,(1));
  71420. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71421. $ctx1.sendIdx["assert:equals:"]=2;
  71422. //>>excludeEnd("ctx");
  71423. self._assert_equals_($recv(o)._instVarAt_("foo"),(1));
  71424. return self;
  71425. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71426. }, function($ctx1) {$ctx1.fill(self,"testInstVars",{o:o},$globals.ObjectTest)});
  71427. //>>excludeEnd("ctx");
  71428. },
  71429. //>>excludeStart("ide", pragmas.excludeIdeData);
  71430. args: [],
  71431. source: "testInstVars\x0a\x09| o |\x0a\x09o := ObjectMock new.\x0a\x09self assert: (o instVarAt: #foo) equals: nil.\x0a\x0a\x09o instVarAt: #foo put: 1.\x0a\x09self assert: (o instVarAt: #foo) equals: 1.\x0a\x09self assert: (o instVarAt: 'foo') equals: 1",
  71432. referencedClasses: ["ObjectMock"],
  71433. //>>excludeEnd("ide");
  71434. messageSends: ["new", "assert:equals:", "instVarAt:", "instVarAt:put:"]
  71435. }),
  71436. $globals.ObjectTest);
  71437. $core.addMethod(
  71438. $core.method({
  71439. selector: "testNilUndefined",
  71440. protocol: 'tests',
  71441. fn: function (){
  71442. var self=this;
  71443. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71444. return $core.withContext(function($ctx1) {
  71445. //>>excludeEnd("ctx");
  71446. self._assert_equals_(self._notDefined(),nil);
  71447. return self;
  71448. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71449. }, function($ctx1) {$ctx1.fill(self,"testNilUndefined",{},$globals.ObjectTest)});
  71450. //>>excludeEnd("ctx");
  71451. },
  71452. //>>excludeStart("ide", pragmas.excludeIdeData);
  71453. args: [],
  71454. source: "testNilUndefined\x0a\x09\x22nil in Smalltalk is the undefined object in JS\x22\x0a\x0a\x09self assert: self notDefined equals: nil",
  71455. referencedClasses: [],
  71456. //>>excludeEnd("ide");
  71457. messageSends: ["assert:equals:", "notDefined"]
  71458. }),
  71459. $globals.ObjectTest);
  71460. $core.addMethod(
  71461. $core.method({
  71462. selector: "testYourself",
  71463. protocol: 'tests',
  71464. fn: function (){
  71465. var self=this;
  71466. var o;
  71467. function $ObjectMock(){return $globals.ObjectMock||(typeof ObjectMock=="undefined"?nil:ObjectMock)}
  71468. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71469. return $core.withContext(function($ctx1) {
  71470. //>>excludeEnd("ctx");
  71471. o=$recv($ObjectMock())._new();
  71472. self._assert_($recv($recv(o)._yourself()).__eq_eq(o));
  71473. return self;
  71474. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71475. }, function($ctx1) {$ctx1.fill(self,"testYourself",{o:o},$globals.ObjectTest)});
  71476. //>>excludeEnd("ctx");
  71477. },
  71478. //>>excludeStart("ide", pragmas.excludeIdeData);
  71479. args: [],
  71480. source: "testYourself\x0a\x09| o |\x0a\x09o := ObjectMock new.\x0a\x09self assert: o yourself == o",
  71481. referencedClasses: ["ObjectMock"],
  71482. //>>excludeEnd("ide");
  71483. messageSends: ["new", "assert:", "==", "yourself"]
  71484. }),
  71485. $globals.ObjectTest);
  71486. $core.addMethod(
  71487. $core.method({
  71488. selector: "testidentityHash",
  71489. protocol: 'tests',
  71490. fn: function (){
  71491. var self=this;
  71492. var o1,o2;
  71493. function $Object(){return $globals.Object||(typeof Object=="undefined"?nil:Object)}
  71494. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71495. return $core.withContext(function($ctx1) {
  71496. //>>excludeEnd("ctx");
  71497. var $2,$3,$1,$5,$4;
  71498. o1=$recv($Object())._new();
  71499. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71500. $ctx1.sendIdx["new"]=1;
  71501. //>>excludeEnd("ctx");
  71502. o2=$recv($Object())._new();
  71503. $2=$recv(o1)._identityHash();
  71504. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71505. $ctx1.sendIdx["identityHash"]=1;
  71506. //>>excludeEnd("ctx");
  71507. $3=$recv(o1)._identityHash();
  71508. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71509. $ctx1.sendIdx["identityHash"]=2;
  71510. //>>excludeEnd("ctx");
  71511. $1=$recv($2).__eq_eq($3);
  71512. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71513. $ctx1.sendIdx["=="]=1;
  71514. //>>excludeEnd("ctx");
  71515. self._assert_($1);
  71516. $5=$recv(o1)._identityHash();
  71517. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71518. $ctx1.sendIdx["identityHash"]=3;
  71519. //>>excludeEnd("ctx");
  71520. $4=$recv($5).__eq_eq($recv(o2)._identityHash());
  71521. self._deny_($4);
  71522. return self;
  71523. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71524. }, function($ctx1) {$ctx1.fill(self,"testidentityHash",{o1:o1,o2:o2},$globals.ObjectTest)});
  71525. //>>excludeEnd("ctx");
  71526. },
  71527. //>>excludeStart("ide", pragmas.excludeIdeData);
  71528. args: [],
  71529. source: "testidentityHash\x0a\x09| o1 o2 |\x0a\x09\x0a\x09o1 := Object new.\x0a\x09o2 := Object new.\x0a\x0a\x09self assert: o1 identityHash == o1 identityHash.\x0a\x09self deny: o1 identityHash == o2 identityHash",
  71530. referencedClasses: ["Object"],
  71531. //>>excludeEnd("ide");
  71532. messageSends: ["new", "assert:", "==", "identityHash", "deny:"]
  71533. }),
  71534. $globals.ObjectTest);
  71535. $core.addClass('PointTest', $globals.TestCase, [], 'Kernel-Tests');
  71536. $core.addMethod(
  71537. $core.method({
  71538. selector: "testAccessing",
  71539. protocol: 'tests',
  71540. fn: function (){
  71541. var self=this;
  71542. function $Point(){return $globals.Point||(typeof Point=="undefined"?nil:Point)}
  71543. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71544. return $core.withContext(function($ctx1) {
  71545. //>>excludeEnd("ctx");
  71546. var $2,$1,$3,$6,$5,$4;
  71547. $2=$recv($Point())._x_y_((3),(4));
  71548. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71549. $ctx1.sendIdx["x:y:"]=1;
  71550. //>>excludeEnd("ctx");
  71551. $1=$recv($2)._x();
  71552. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71553. $ctx1.sendIdx["x"]=1;
  71554. //>>excludeEnd("ctx");
  71555. self._assert_equals_($1,(3));
  71556. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71557. $ctx1.sendIdx["assert:equals:"]=1;
  71558. //>>excludeEnd("ctx");
  71559. $3=$recv($recv($Point())._x_y_((3),(4)))._y();
  71560. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71561. $ctx1.sendIdx["y"]=1;
  71562. //>>excludeEnd("ctx");
  71563. self._assert_equals_($3,(4));
  71564. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71565. $ctx1.sendIdx["assert:equals:"]=2;
  71566. //>>excludeEnd("ctx");
  71567. $6=$recv($Point())._new();
  71568. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71569. $ctx1.sendIdx["new"]=1;
  71570. //>>excludeEnd("ctx");
  71571. $5=$recv($6)._x_((3));
  71572. $4=$recv($5)._x();
  71573. self._assert_equals_($4,(3));
  71574. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71575. $ctx1.sendIdx["assert:equals:"]=3;
  71576. //>>excludeEnd("ctx");
  71577. self._assert_equals_($recv($recv($recv($Point())._new())._y_((4)))._y(),(4));
  71578. return self;
  71579. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71580. }, function($ctx1) {$ctx1.fill(self,"testAccessing",{},$globals.PointTest)});
  71581. //>>excludeEnd("ctx");
  71582. },
  71583. //>>excludeStart("ide", pragmas.excludeIdeData);
  71584. args: [],
  71585. 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",
  71586. referencedClasses: ["Point"],
  71587. //>>excludeEnd("ide");
  71588. messageSends: ["assert:equals:", "x", "x:y:", "y", "x:", "new", "y:"]
  71589. }),
  71590. $globals.PointTest);
  71591. $core.addMethod(
  71592. $core.method({
  71593. selector: "testArithmetic",
  71594. protocol: 'tests',
  71595. fn: function (){
  71596. var self=this;
  71597. function $Point(){return $globals.Point||(typeof Point=="undefined"?nil:Point)}
  71598. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71599. return $core.withContext(function($ctx1) {
  71600. //>>excludeEnd("ctx");
  71601. var $2,$3,$1,$4,$6,$7,$5,$8,$10,$11,$9,$12,$14,$13;
  71602. $2=(3).__at((4));
  71603. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71604. $ctx1.sendIdx["@"]=1;
  71605. //>>excludeEnd("ctx");
  71606. $3=(3).__at((4));
  71607. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71608. $ctx1.sendIdx["@"]=2;
  71609. //>>excludeEnd("ctx");
  71610. $1=$recv($2).__star($3);
  71611. $4=$recv($Point())._x_y_((9),(16));
  71612. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71613. $ctx1.sendIdx["x:y:"]=1;
  71614. //>>excludeEnd("ctx");
  71615. self._assert_equals_($1,$4);
  71616. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71617. $ctx1.sendIdx["assert:equals:"]=1;
  71618. //>>excludeEnd("ctx");
  71619. $6=(3).__at((4));
  71620. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71621. $ctx1.sendIdx["@"]=3;
  71622. //>>excludeEnd("ctx");
  71623. $7=(3).__at((4));
  71624. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71625. $ctx1.sendIdx["@"]=4;
  71626. //>>excludeEnd("ctx");
  71627. $5=$recv($6).__plus($7);
  71628. $8=$recv($Point())._x_y_((6),(8));
  71629. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71630. $ctx1.sendIdx["x:y:"]=2;
  71631. //>>excludeEnd("ctx");
  71632. self._assert_equals_($5,$8);
  71633. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71634. $ctx1.sendIdx["assert:equals:"]=2;
  71635. //>>excludeEnd("ctx");
  71636. $10=(3).__at((4));
  71637. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71638. $ctx1.sendIdx["@"]=5;
  71639. //>>excludeEnd("ctx");
  71640. $11=(3).__at((4));
  71641. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71642. $ctx1.sendIdx["@"]=6;
  71643. //>>excludeEnd("ctx");
  71644. $9=$recv($10).__minus($11);
  71645. $12=$recv($Point())._x_y_((0),(0));
  71646. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71647. $ctx1.sendIdx["x:y:"]=3;
  71648. //>>excludeEnd("ctx");
  71649. self._assert_equals_($9,$12);
  71650. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71651. $ctx1.sendIdx["assert:equals:"]=3;
  71652. //>>excludeEnd("ctx");
  71653. $14=(6).__at((8));
  71654. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71655. $ctx1.sendIdx["@"]=7;
  71656. //>>excludeEnd("ctx");
  71657. $13=$recv($14).__slash((3).__at((4)));
  71658. self._assert_equals_($13,$recv($Point())._x_y_((2),(2)));
  71659. return self;
  71660. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71661. }, function($ctx1) {$ctx1.fill(self,"testArithmetic",{},$globals.PointTest)});
  71662. //>>excludeEnd("ctx");
  71663. },
  71664. //>>excludeStart("ide", pragmas.excludeIdeData);
  71665. args: [],
  71666. 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)",
  71667. referencedClasses: ["Point"],
  71668. //>>excludeEnd("ide");
  71669. messageSends: ["assert:equals:", "*", "@", "x:y:", "+", "-", "/"]
  71670. }),
  71671. $globals.PointTest);
  71672. $core.addMethod(
  71673. $core.method({
  71674. selector: "testAt",
  71675. protocol: 'tests',
  71676. fn: function (){
  71677. var self=this;
  71678. function $Point(){return $globals.Point||(typeof Point=="undefined"?nil:Point)}
  71679. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71680. return $core.withContext(function($ctx1) {
  71681. //>>excludeEnd("ctx");
  71682. self._assert_equals_((3).__at((4)),$recv($Point())._x_y_((3),(4)));
  71683. return self;
  71684. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71685. }, function($ctx1) {$ctx1.fill(self,"testAt",{},$globals.PointTest)});
  71686. //>>excludeEnd("ctx");
  71687. },
  71688. //>>excludeStart("ide", pragmas.excludeIdeData);
  71689. args: [],
  71690. source: "testAt\x0a\x09self assert: 3@4 equals: (Point x: 3 y: 4)",
  71691. referencedClasses: ["Point"],
  71692. //>>excludeEnd("ide");
  71693. messageSends: ["assert:equals:", "@", "x:y:"]
  71694. }),
  71695. $globals.PointTest);
  71696. $core.addMethod(
  71697. $core.method({
  71698. selector: "testComparison",
  71699. protocol: 'tests',
  71700. fn: function (){
  71701. var self=this;
  71702. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71703. return $core.withContext(function($ctx1) {
  71704. //>>excludeEnd("ctx");
  71705. var $2,$3,$1,$5,$6,$4,$8,$9,$7,$11,$12,$10,$14,$15,$13,$17,$18,$16,$20,$21,$19,$23,$22;
  71706. $2=(3).__at((4));
  71707. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71708. $ctx1.sendIdx["@"]=1;
  71709. //>>excludeEnd("ctx");
  71710. $3=(4).__at((5));
  71711. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71712. $ctx1.sendIdx["@"]=2;
  71713. //>>excludeEnd("ctx");
  71714. $1=$recv($2).__lt($3);
  71715. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71716. $ctx1.sendIdx["<"]=1;
  71717. //>>excludeEnd("ctx");
  71718. self._assert_($1);
  71719. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71720. $ctx1.sendIdx["assert:"]=1;
  71721. //>>excludeEnd("ctx");
  71722. $5=(3).__at((4));
  71723. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71724. $ctx1.sendIdx["@"]=3;
  71725. //>>excludeEnd("ctx");
  71726. $6=(4).__at((4));
  71727. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71728. $ctx1.sendIdx["@"]=4;
  71729. //>>excludeEnd("ctx");
  71730. $4=$recv($5).__lt($6);
  71731. self._deny_($4);
  71732. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71733. $ctx1.sendIdx["deny:"]=1;
  71734. //>>excludeEnd("ctx");
  71735. $8=(4).__at((5));
  71736. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71737. $ctx1.sendIdx["@"]=5;
  71738. //>>excludeEnd("ctx");
  71739. $9=(4).__at((5));
  71740. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71741. $ctx1.sendIdx["@"]=6;
  71742. //>>excludeEnd("ctx");
  71743. $7=$recv($8).__lt_eq($9);
  71744. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71745. $ctx1.sendIdx["<="]=1;
  71746. //>>excludeEnd("ctx");
  71747. self._assert_($7);
  71748. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71749. $ctx1.sendIdx["assert:"]=2;
  71750. //>>excludeEnd("ctx");
  71751. $11=(4).__at((5));
  71752. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71753. $ctx1.sendIdx["@"]=7;
  71754. //>>excludeEnd("ctx");
  71755. $12=(3).__at((5));
  71756. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71757. $ctx1.sendIdx["@"]=8;
  71758. //>>excludeEnd("ctx");
  71759. $10=$recv($11).__lt_eq($12);
  71760. self._deny_($10);
  71761. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71762. $ctx1.sendIdx["deny:"]=2;
  71763. //>>excludeEnd("ctx");
  71764. $14=(5).__at((6));
  71765. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71766. $ctx1.sendIdx["@"]=9;
  71767. //>>excludeEnd("ctx");
  71768. $15=(4).__at((5));
  71769. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71770. $ctx1.sendIdx["@"]=10;
  71771. //>>excludeEnd("ctx");
  71772. $13=$recv($14).__gt($15);
  71773. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71774. $ctx1.sendIdx[">"]=1;
  71775. //>>excludeEnd("ctx");
  71776. self._assert_($13);
  71777. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71778. $ctx1.sendIdx["assert:"]=3;
  71779. //>>excludeEnd("ctx");
  71780. $17=(5).__at((6));
  71781. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71782. $ctx1.sendIdx["@"]=11;
  71783. //>>excludeEnd("ctx");
  71784. $18=(6).__at((6));
  71785. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71786. $ctx1.sendIdx["@"]=12;
  71787. //>>excludeEnd("ctx");
  71788. $16=$recv($17).__gt($18);
  71789. self._deny_($16);
  71790. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71791. $ctx1.sendIdx["deny:"]=3;
  71792. //>>excludeEnd("ctx");
  71793. $20=(4).__at((5));
  71794. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71795. $ctx1.sendIdx["@"]=13;
  71796. //>>excludeEnd("ctx");
  71797. $21=(4).__at((5));
  71798. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71799. $ctx1.sendIdx["@"]=14;
  71800. //>>excludeEnd("ctx");
  71801. $19=$recv($20).__gt_eq($21);
  71802. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71803. $ctx1.sendIdx[">="]=1;
  71804. //>>excludeEnd("ctx");
  71805. self._assert_($19);
  71806. $23=(4).__at((5));
  71807. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71808. $ctx1.sendIdx["@"]=15;
  71809. //>>excludeEnd("ctx");
  71810. $22=$recv($23).__gt_eq((5).__at((5)));
  71811. self._deny_($22);
  71812. return self;
  71813. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71814. }, function($ctx1) {$ctx1.fill(self,"testComparison",{},$globals.PointTest)});
  71815. //>>excludeEnd("ctx");
  71816. },
  71817. //>>excludeStart("ide", pragmas.excludeIdeData);
  71818. args: [],
  71819. 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)",
  71820. referencedClasses: [],
  71821. //>>excludeEnd("ide");
  71822. messageSends: ["assert:", "<", "@", "deny:", "<=", ">", ">="]
  71823. }),
  71824. $globals.PointTest);
  71825. $core.addMethod(
  71826. $core.method({
  71827. selector: "testEgality",
  71828. protocol: 'tests',
  71829. fn: function (){
  71830. var self=this;
  71831. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71832. return $core.withContext(function($ctx1) {
  71833. //>>excludeEnd("ctx");
  71834. var $2,$3,$1,$5,$4;
  71835. $2=(3).__at((4));
  71836. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71837. $ctx1.sendIdx["@"]=1;
  71838. //>>excludeEnd("ctx");
  71839. $3=(3).__at((4));
  71840. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71841. $ctx1.sendIdx["@"]=2;
  71842. //>>excludeEnd("ctx");
  71843. $1=$recv($2).__eq($3);
  71844. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71845. $ctx1.sendIdx["="]=1;
  71846. //>>excludeEnd("ctx");
  71847. self._assert_($1);
  71848. $5=(3).__at((5));
  71849. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71850. $ctx1.sendIdx["@"]=3;
  71851. //>>excludeEnd("ctx");
  71852. $4=$recv($5).__eq((3).__at((6)));
  71853. self._deny_($4);
  71854. return self;
  71855. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71856. }, function($ctx1) {$ctx1.fill(self,"testEgality",{},$globals.PointTest)});
  71857. //>>excludeEnd("ctx");
  71858. },
  71859. //>>excludeStart("ide", pragmas.excludeIdeData);
  71860. args: [],
  71861. source: "testEgality\x0a\x09self assert: (3@4 = (3@4)).\x0a\x09self deny: 3@5 = (3@6)",
  71862. referencedClasses: [],
  71863. //>>excludeEnd("ide");
  71864. messageSends: ["assert:", "=", "@", "deny:"]
  71865. }),
  71866. $globals.PointTest);
  71867. $core.addMethod(
  71868. $core.method({
  71869. selector: "testNew",
  71870. protocol: 'tests',
  71871. fn: function (){
  71872. var self=this;
  71873. function $Point(){return $globals.Point||(typeof Point=="undefined"?nil:Point)}
  71874. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71875. return $core.withContext(function($ctx1) {
  71876. //>>excludeEnd("ctx");
  71877. var $3,$2,$1,$7,$6,$5,$4,$10,$9,$8;
  71878. $3=$recv($Point())._new();
  71879. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71880. $ctx1.sendIdx["new"]=1;
  71881. //>>excludeEnd("ctx");
  71882. $2=$recv($3)._x_((3));
  71883. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71884. $ctx1.sendIdx["x:"]=1;
  71885. //>>excludeEnd("ctx");
  71886. $1=$recv($2)._y();
  71887. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71888. $ctx1.sendIdx["y"]=1;
  71889. //>>excludeEnd("ctx");
  71890. self._assert_equals_($1,nil);
  71891. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71892. $ctx1.sendIdx["assert:equals:"]=1;
  71893. //>>excludeEnd("ctx");
  71894. $7=$recv($Point())._new();
  71895. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71896. $ctx1.sendIdx["new"]=2;
  71897. //>>excludeEnd("ctx");
  71898. $6=$recv($7)._x_((3));
  71899. $5=$recv($6)._x();
  71900. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71901. $ctx1.sendIdx["x"]=1;
  71902. //>>excludeEnd("ctx");
  71903. $4=$recv($5).__eq((0));
  71904. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71905. $ctx1.sendIdx["="]=1;
  71906. //>>excludeEnd("ctx");
  71907. self._deny_($4);
  71908. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71909. $ctx1.sendIdx["deny:"]=1;
  71910. //>>excludeEnd("ctx");
  71911. $10=$recv($Point())._new();
  71912. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71913. $ctx1.sendIdx["new"]=3;
  71914. //>>excludeEnd("ctx");
  71915. $9=$recv($10)._y_((4));
  71916. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71917. $ctx1.sendIdx["y:"]=1;
  71918. //>>excludeEnd("ctx");
  71919. $8=$recv($9)._x();
  71920. self._assert_equals_($8,nil);
  71921. self._deny_($recv($recv($recv($recv($Point())._new())._y_((4)))._y()).__eq((0)));
  71922. return self;
  71923. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71924. }, function($ctx1) {$ctx1.fill(self,"testNew",{},$globals.PointTest)});
  71925. //>>excludeEnd("ctx");
  71926. },
  71927. //>>excludeStart("ide", pragmas.excludeIdeData);
  71928. args: [],
  71929. 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",
  71930. referencedClasses: ["Point"],
  71931. //>>excludeEnd("ide");
  71932. messageSends: ["assert:equals:", "y", "x:", "new", "deny:", "=", "x", "y:"]
  71933. }),
  71934. $globals.PointTest);
  71935. $core.addMethod(
  71936. $core.method({
  71937. selector: "testTranslateBy",
  71938. protocol: 'tests',
  71939. fn: function (){
  71940. var self=this;
  71941. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71942. return $core.withContext(function($ctx1) {
  71943. //>>excludeEnd("ctx");
  71944. var $2,$3,$1,$4,$6,$8,$7,$5,$9,$11,$12,$10,$13,$15,$16,$14;
  71945. $2=(3).__at((3));
  71946. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71947. $ctx1.sendIdx["@"]=1;
  71948. //>>excludeEnd("ctx");
  71949. $3=(0).__at((1));
  71950. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71951. $ctx1.sendIdx["@"]=2;
  71952. //>>excludeEnd("ctx");
  71953. $1=$recv($2)._translateBy_($3);
  71954. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71955. $ctx1.sendIdx["translateBy:"]=1;
  71956. //>>excludeEnd("ctx");
  71957. $4=(3).__at((4));
  71958. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71959. $ctx1.sendIdx["@"]=3;
  71960. //>>excludeEnd("ctx");
  71961. self._assert_equals_($1,$4);
  71962. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71963. $ctx1.sendIdx["assert:equals:"]=1;
  71964. //>>excludeEnd("ctx");
  71965. $6=(3).__at((3));
  71966. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71967. $ctx1.sendIdx["@"]=4;
  71968. //>>excludeEnd("ctx");
  71969. $8=(1)._negated();
  71970. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71971. $ctx1.sendIdx["negated"]=1;
  71972. //>>excludeEnd("ctx");
  71973. $7=(0).__at($8);
  71974. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71975. $ctx1.sendIdx["@"]=5;
  71976. //>>excludeEnd("ctx");
  71977. $5=$recv($6)._translateBy_($7);
  71978. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71979. $ctx1.sendIdx["translateBy:"]=2;
  71980. //>>excludeEnd("ctx");
  71981. $9=(3).__at((2));
  71982. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71983. $ctx1.sendIdx["@"]=6;
  71984. //>>excludeEnd("ctx");
  71985. self._assert_equals_($5,$9);
  71986. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71987. $ctx1.sendIdx["assert:equals:"]=2;
  71988. //>>excludeEnd("ctx");
  71989. $11=(3).__at((3));
  71990. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71991. $ctx1.sendIdx["@"]=7;
  71992. //>>excludeEnd("ctx");
  71993. $12=(2).__at((3));
  71994. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71995. $ctx1.sendIdx["@"]=8;
  71996. //>>excludeEnd("ctx");
  71997. $10=$recv($11)._translateBy_($12);
  71998. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  71999. $ctx1.sendIdx["translateBy:"]=3;
  72000. //>>excludeEnd("ctx");
  72001. $13=(5).__at((6));
  72002. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72003. $ctx1.sendIdx["@"]=9;
  72004. //>>excludeEnd("ctx");
  72005. self._assert_equals_($10,$13);
  72006. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72007. $ctx1.sendIdx["assert:equals:"]=3;
  72008. //>>excludeEnd("ctx");
  72009. $15=(3).__at((3));
  72010. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72011. $ctx1.sendIdx["@"]=10;
  72012. //>>excludeEnd("ctx");
  72013. $16=$recv((3)._negated()).__at((0));
  72014. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72015. $ctx1.sendIdx["@"]=11;
  72016. //>>excludeEnd("ctx");
  72017. $14=$recv($15)._translateBy_($16);
  72018. self._assert_equals_($14,(0).__at((3)));
  72019. return self;
  72020. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72021. }, function($ctx1) {$ctx1.fill(self,"testTranslateBy",{},$globals.PointTest)});
  72022. //>>excludeEnd("ctx");
  72023. },
  72024. //>>excludeStart("ide", pragmas.excludeIdeData);
  72025. args: [],
  72026. 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.",
  72027. referencedClasses: [],
  72028. //>>excludeEnd("ide");
  72029. messageSends: ["assert:equals:", "translateBy:", "@", "negated"]
  72030. }),
  72031. $globals.PointTest);
  72032. $core.addClass('QueueTest', $globals.TestCase, [], 'Kernel-Tests');
  72033. $core.addMethod(
  72034. $core.method({
  72035. selector: "testNextIfAbsent",
  72036. protocol: 'tests',
  72037. fn: function (){
  72038. var self=this;
  72039. var queue;
  72040. function $Queue(){return $globals.Queue||(typeof Queue=="undefined"?nil:Queue)}
  72041. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72042. return $core.withContext(function($ctx1) {
  72043. //>>excludeEnd("ctx");
  72044. var $2,$1;
  72045. queue=$recv($Queue())._new();
  72046. $recv(queue)._nextPut_("index1");
  72047. $2=$recv(queue)._nextIfAbsent_("empty");
  72048. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72049. $ctx1.sendIdx["nextIfAbsent:"]=1;
  72050. //>>excludeEnd("ctx");
  72051. $1=$recv($2).__eq("index1");
  72052. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72053. $ctx1.sendIdx["="]=1;
  72054. //>>excludeEnd("ctx");
  72055. self._assert_($1);
  72056. self._deny_($recv($recv(queue)._nextIfAbsent_("empty")).__eq("index1"));
  72057. return self;
  72058. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72059. }, function($ctx1) {$ctx1.fill(self,"testNextIfAbsent",{queue:queue},$globals.QueueTest)});
  72060. //>>excludeEnd("ctx");
  72061. },
  72062. //>>excludeStart("ide", pragmas.excludeIdeData);
  72063. args: [],
  72064. 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'",
  72065. referencedClasses: ["Queue"],
  72066. //>>excludeEnd("ide");
  72067. messageSends: ["new", "nextPut:", "assert:", "=", "nextIfAbsent:", "deny:"]
  72068. }),
  72069. $globals.QueueTest);
  72070. $core.addMethod(
  72071. $core.method({
  72072. selector: "testQueueNext",
  72073. protocol: 'tests',
  72074. fn: function (){
  72075. var self=this;
  72076. var queue;
  72077. function $Queue(){return $globals.Queue||(typeof Queue=="undefined"?nil:Queue)}
  72078. function $Error(){return $globals.Error||(typeof Error=="undefined"?nil:Error)}
  72079. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72080. return $core.withContext(function($ctx1) {
  72081. //>>excludeEnd("ctx");
  72082. var $1,$2,$4,$3,$6,$5;
  72083. queue=$recv($Queue())._new();
  72084. $1=queue;
  72085. $recv($1)._nextPut_("index1");
  72086. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72087. $ctx1.sendIdx["nextPut:"]=1;
  72088. //>>excludeEnd("ctx");
  72089. $2=$recv($1)._nextPut_("index2");
  72090. $4=$recv(queue)._next();
  72091. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72092. $ctx1.sendIdx["next"]=1;
  72093. //>>excludeEnd("ctx");
  72094. $3=$recv($4).__eq("index1");
  72095. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72096. $ctx1.sendIdx["="]=1;
  72097. //>>excludeEnd("ctx");
  72098. self._assert_($3);
  72099. $6=$recv(queue)._next();
  72100. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72101. $ctx1.sendIdx["next"]=2;
  72102. //>>excludeEnd("ctx");
  72103. $5=$recv($6).__eq("index");
  72104. self._deny_($5);
  72105. self._should_raise_((function(){
  72106. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72107. return $core.withContext(function($ctx2) {
  72108. //>>excludeEnd("ctx");
  72109. return $recv(queue)._next();
  72110. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72111. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  72112. //>>excludeEnd("ctx");
  72113. }),$Error());
  72114. return self;
  72115. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72116. }, function($ctx1) {$ctx1.fill(self,"testQueueNext",{queue:queue},$globals.QueueTest)});
  72117. //>>excludeEnd("ctx");
  72118. },
  72119. //>>excludeStart("ide", pragmas.excludeIdeData);
  72120. args: [],
  72121. 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",
  72122. referencedClasses: ["Queue", "Error"],
  72123. //>>excludeEnd("ide");
  72124. messageSends: ["new", "nextPut:", "assert:", "=", "next", "deny:", "should:raise:"]
  72125. }),
  72126. $globals.QueueTest);
  72127. $core.addClass('RandomTest', $globals.TestCase, [], 'Kernel-Tests');
  72128. $core.addMethod(
  72129. $core.method({
  72130. selector: "testAtRandomNumber",
  72131. protocol: 'tests',
  72132. fn: function (){
  72133. var self=this;
  72134. var val;
  72135. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72136. return $core.withContext(function($ctx1) {
  72137. //>>excludeEnd("ctx");
  72138. (100)._timesRepeat_((function(){
  72139. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72140. return $core.withContext(function($ctx2) {
  72141. //>>excludeEnd("ctx");
  72142. val=(10)._atRandom();
  72143. val;
  72144. self._assert_($recv(val).__gt((0)));
  72145. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72146. $ctx2.sendIdx["assert:"]=1;
  72147. //>>excludeEnd("ctx");
  72148. return self._assert_($recv(val).__lt((11)));
  72149. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72150. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  72151. //>>excludeEnd("ctx");
  72152. }));
  72153. return self;
  72154. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72155. }, function($ctx1) {$ctx1.fill(self,"testAtRandomNumber",{val:val},$globals.RandomTest)});
  72156. //>>excludeEnd("ctx");
  72157. },
  72158. //>>excludeStart("ide", pragmas.excludeIdeData);
  72159. args: [],
  72160. 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]",
  72161. referencedClasses: [],
  72162. //>>excludeEnd("ide");
  72163. messageSends: ["timesRepeat:", "atRandom", "assert:", ">", "<"]
  72164. }),
  72165. $globals.RandomTest);
  72166. $core.addMethod(
  72167. $core.method({
  72168. selector: "testAtRandomSequenceableCollection",
  72169. protocol: 'tests',
  72170. fn: function (){
  72171. var self=this;
  72172. var val;
  72173. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72174. return $core.withContext(function($ctx1) {
  72175. //>>excludeEnd("ctx");
  72176. var $3,$4,$2,$1;
  72177. (100)._timesRepeat_((function(){
  72178. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72179. return $core.withContext(function($ctx2) {
  72180. //>>excludeEnd("ctx");
  72181. val="abc"._atRandom();
  72182. val;
  72183. $3=$recv(val).__eq("a");
  72184. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72185. $ctx2.sendIdx["="]=1;
  72186. //>>excludeEnd("ctx");
  72187. $4=$recv(val).__eq("b");
  72188. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72189. $ctx2.sendIdx["="]=2;
  72190. //>>excludeEnd("ctx");
  72191. $2=$recv($3).__or($4);
  72192. $1=$recv($2).__or($recv(val).__eq("c"));
  72193. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72194. $ctx2.sendIdx["|"]=1;
  72195. //>>excludeEnd("ctx");
  72196. return self._assert_($1);
  72197. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72198. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  72199. //>>excludeEnd("ctx");
  72200. }));
  72201. return self;
  72202. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72203. }, function($ctx1) {$ctx1.fill(self,"testAtRandomSequenceableCollection",{val:val},$globals.RandomTest)});
  72204. //>>excludeEnd("ctx");
  72205. },
  72206. //>>excludeStart("ide", pragmas.excludeIdeData);
  72207. args: [],
  72208. 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].",
  72209. referencedClasses: [],
  72210. //>>excludeEnd("ide");
  72211. messageSends: ["timesRepeat:", "atRandom", "assert:", "|", "="]
  72212. }),
  72213. $globals.RandomTest);
  72214. $core.addMethod(
  72215. $core.method({
  72216. selector: "textNext",
  72217. protocol: 'tests',
  72218. fn: function (){
  72219. var self=this;
  72220. function $Random(){return $globals.Random||(typeof Random=="undefined"?nil:Random)}
  72221. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72222. return $core.withContext(function($ctx1) {
  72223. //>>excludeEnd("ctx");
  72224. var $1;
  72225. (10000)._timesRepeat_((function(){
  72226. var current,next;
  72227. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72228. return $core.withContext(function($ctx2) {
  72229. //>>excludeEnd("ctx");
  72230. next=$recv($recv($Random())._new())._next();
  72231. next;
  72232. self._assert_($recv(next).__gt_eq((0)));
  72233. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72234. $ctx2.sendIdx["assert:"]=1;
  72235. //>>excludeEnd("ctx");
  72236. self._assert_($recv(next).__lt((1)));
  72237. $1=$recv(current).__eq(next);
  72238. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72239. $ctx2.sendIdx["="]=1;
  72240. //>>excludeEnd("ctx");
  72241. self._deny_($1);
  72242. return $recv(next).__eq(current);
  72243. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72244. }, function($ctx2) {$ctx2.fillBlock({current:current,next:next},$ctx1,1)});
  72245. //>>excludeEnd("ctx");
  72246. }));
  72247. return self;
  72248. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72249. }, function($ctx1) {$ctx1.fill(self,"textNext",{},$globals.RandomTest)});
  72250. //>>excludeEnd("ctx");
  72251. },
  72252. //>>excludeStart("ide", pragmas.excludeIdeData);
  72253. args: [],
  72254. 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 ]",
  72255. referencedClasses: ["Random"],
  72256. //>>excludeEnd("ide");
  72257. messageSends: ["timesRepeat:", "next", "new", "assert:", ">=", "<", "deny:", "="]
  72258. }),
  72259. $globals.RandomTest);
  72260. $core.addClass('StreamTest', $globals.TestCase, [], 'Kernel-Tests');
  72261. $core.addMethod(
  72262. $core.method({
  72263. selector: "collectionClass",
  72264. protocol: 'accessing',
  72265. fn: function (){
  72266. var self=this;
  72267. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72268. return $core.withContext(function($ctx1) {
  72269. //>>excludeEnd("ctx");
  72270. var $1;
  72271. $1=$recv(self._class())._collectionClass();
  72272. return $1;
  72273. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72274. }, function($ctx1) {$ctx1.fill(self,"collectionClass",{},$globals.StreamTest)});
  72275. //>>excludeEnd("ctx");
  72276. },
  72277. //>>excludeStart("ide", pragmas.excludeIdeData);
  72278. args: [],
  72279. source: "collectionClass\x0a\x09^ self class collectionClass",
  72280. referencedClasses: [],
  72281. //>>excludeEnd("ide");
  72282. messageSends: ["collectionClass", "class"]
  72283. }),
  72284. $globals.StreamTest);
  72285. $core.addMethod(
  72286. $core.method({
  72287. selector: "newCollection",
  72288. protocol: 'accessing',
  72289. fn: function (){
  72290. var self=this;
  72291. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72292. return $core.withContext(function($ctx1) {
  72293. //>>excludeEnd("ctx");
  72294. var $1;
  72295. $1=$recv(self._collectionClass())._new();
  72296. return $1;
  72297. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72298. }, function($ctx1) {$ctx1.fill(self,"newCollection",{},$globals.StreamTest)});
  72299. //>>excludeEnd("ctx");
  72300. },
  72301. //>>excludeStart("ide", pragmas.excludeIdeData);
  72302. args: [],
  72303. source: "newCollection\x0a\x09^ self collectionClass new",
  72304. referencedClasses: [],
  72305. //>>excludeEnd("ide");
  72306. messageSends: ["new", "collectionClass"]
  72307. }),
  72308. $globals.StreamTest);
  72309. $core.addMethod(
  72310. $core.method({
  72311. selector: "newStream",
  72312. protocol: 'accessing',
  72313. fn: function (){
  72314. var self=this;
  72315. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72316. return $core.withContext(function($ctx1) {
  72317. //>>excludeEnd("ctx");
  72318. var $1;
  72319. $1=$recv($recv(self._collectionClass())._new())._stream();
  72320. return $1;
  72321. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72322. }, function($ctx1) {$ctx1.fill(self,"newStream",{},$globals.StreamTest)});
  72323. //>>excludeEnd("ctx");
  72324. },
  72325. //>>excludeStart("ide", pragmas.excludeIdeData);
  72326. args: [],
  72327. source: "newStream\x0a\x09^ self collectionClass new stream",
  72328. referencedClasses: [],
  72329. //>>excludeEnd("ide");
  72330. messageSends: ["stream", "new", "collectionClass"]
  72331. }),
  72332. $globals.StreamTest);
  72333. $core.addMethod(
  72334. $core.method({
  72335. selector: "testAtStartAtEnd",
  72336. protocol: 'tests',
  72337. fn: function (){
  72338. var self=this;
  72339. var stream;
  72340. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72341. return $core.withContext(function($ctx1) {
  72342. //>>excludeEnd("ctx");
  72343. var $1,$2,$3,$4;
  72344. stream=self._newStream();
  72345. $1=$recv(stream)._atStart();
  72346. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72347. $ctx1.sendIdx["atStart"]=1;
  72348. //>>excludeEnd("ctx");
  72349. self._assert_($1);
  72350. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72351. $ctx1.sendIdx["assert:"]=1;
  72352. //>>excludeEnd("ctx");
  72353. $2=$recv(stream)._atEnd();
  72354. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72355. $ctx1.sendIdx["atEnd"]=1;
  72356. //>>excludeEnd("ctx");
  72357. self._assert_($2);
  72358. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72359. $ctx1.sendIdx["assert:"]=2;
  72360. //>>excludeEnd("ctx");
  72361. $recv(stream)._nextPutAll_(self._newCollection());
  72362. $3=$recv(stream)._atEnd();
  72363. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72364. $ctx1.sendIdx["atEnd"]=2;
  72365. //>>excludeEnd("ctx");
  72366. self._assert_($3);
  72367. $4=$recv(stream)._atStart();
  72368. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72369. $ctx1.sendIdx["atStart"]=2;
  72370. //>>excludeEnd("ctx");
  72371. self._deny_($4);
  72372. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72373. $ctx1.sendIdx["deny:"]=1;
  72374. //>>excludeEnd("ctx");
  72375. $recv(stream)._position_((1));
  72376. self._deny_($recv(stream)._atEnd());
  72377. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72378. $ctx1.sendIdx["deny:"]=2;
  72379. //>>excludeEnd("ctx");
  72380. self._deny_($recv(stream)._atStart());
  72381. return self;
  72382. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72383. }, function($ctx1) {$ctx1.fill(self,"testAtStartAtEnd",{stream:stream},$globals.StreamTest)});
  72384. //>>excludeEnd("ctx");
  72385. },
  72386. //>>excludeStart("ide", pragmas.excludeIdeData);
  72387. args: [],
  72388. 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",
  72389. referencedClasses: [],
  72390. //>>excludeEnd("ide");
  72391. messageSends: ["newStream", "assert:", "atStart", "atEnd", "nextPutAll:", "newCollection", "deny:", "position:"]
  72392. }),
  72393. $globals.StreamTest);
  72394. $core.addMethod(
  72395. $core.method({
  72396. selector: "testContents",
  72397. protocol: 'tests',
  72398. fn: function (){
  72399. var self=this;
  72400. var stream;
  72401. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72402. return $core.withContext(function($ctx1) {
  72403. //>>excludeEnd("ctx");
  72404. var $1,$2;
  72405. stream=self._newStream();
  72406. $1=stream;
  72407. $2=self._newCollection();
  72408. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72409. $ctx1.sendIdx["newCollection"]=1;
  72410. //>>excludeEnd("ctx");
  72411. $recv($1)._nextPutAll_($2);
  72412. self._assert_equals_($recv(stream)._contents(),self._newCollection());
  72413. return self;
  72414. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72415. }, function($ctx1) {$ctx1.fill(self,"testContents",{stream:stream},$globals.StreamTest)});
  72416. //>>excludeEnd("ctx");
  72417. },
  72418. //>>excludeStart("ide", pragmas.excludeIdeData);
  72419. args: [],
  72420. 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",
  72421. referencedClasses: [],
  72422. //>>excludeEnd("ide");
  72423. messageSends: ["newStream", "nextPutAll:", "newCollection", "assert:equals:", "contents"]
  72424. }),
  72425. $globals.StreamTest);
  72426. $core.addMethod(
  72427. $core.method({
  72428. selector: "testIsEmpty",
  72429. protocol: 'tests',
  72430. fn: function (){
  72431. var self=this;
  72432. var stream;
  72433. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72434. return $core.withContext(function($ctx1) {
  72435. //>>excludeEnd("ctx");
  72436. var $1;
  72437. stream=self._newStream();
  72438. $1=$recv(stream)._isEmpty();
  72439. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72440. $ctx1.sendIdx["isEmpty"]=1;
  72441. //>>excludeEnd("ctx");
  72442. self._assert_($1);
  72443. $recv(stream)._nextPutAll_(self._newCollection());
  72444. self._deny_($recv(stream)._isEmpty());
  72445. return self;
  72446. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72447. }, function($ctx1) {$ctx1.fill(self,"testIsEmpty",{stream:stream},$globals.StreamTest)});
  72448. //>>excludeEnd("ctx");
  72449. },
  72450. //>>excludeStart("ide", pragmas.excludeIdeData);
  72451. args: [],
  72452. 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",
  72453. referencedClasses: [],
  72454. //>>excludeEnd("ide");
  72455. messageSends: ["newStream", "assert:", "isEmpty", "nextPutAll:", "newCollection", "deny:"]
  72456. }),
  72457. $globals.StreamTest);
  72458. $core.addMethod(
  72459. $core.method({
  72460. selector: "testPosition",
  72461. protocol: 'tests',
  72462. fn: function (){
  72463. var self=this;
  72464. var collection,stream;
  72465. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72466. return $core.withContext(function($ctx1) {
  72467. //>>excludeEnd("ctx");
  72468. var $1,$2,$3;
  72469. collection=self._newCollection();
  72470. stream=self._newStream();
  72471. $recv(stream)._nextPutAll_(collection);
  72472. $1=$recv(stream)._position();
  72473. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72474. $ctx1.sendIdx["position"]=1;
  72475. //>>excludeEnd("ctx");
  72476. self._assert_equals_($1,$recv(collection)._size());
  72477. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72478. $ctx1.sendIdx["assert:equals:"]=1;
  72479. //>>excludeEnd("ctx");
  72480. $recv(stream)._position_((0));
  72481. $2=$recv(stream)._position();
  72482. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72483. $ctx1.sendIdx["position"]=2;
  72484. //>>excludeEnd("ctx");
  72485. self._assert_equals_($2,(0));
  72486. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72487. $ctx1.sendIdx["assert:equals:"]=2;
  72488. //>>excludeEnd("ctx");
  72489. $recv(stream)._next();
  72490. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72491. $ctx1.sendIdx["next"]=1;
  72492. //>>excludeEnd("ctx");
  72493. $3=$recv(stream)._position();
  72494. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72495. $ctx1.sendIdx["position"]=3;
  72496. //>>excludeEnd("ctx");
  72497. self._assert_equals_($3,(1));
  72498. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72499. $ctx1.sendIdx["assert:equals:"]=3;
  72500. //>>excludeEnd("ctx");
  72501. $recv(stream)._next();
  72502. self._assert_equals_($recv(stream)._position(),(2));
  72503. return self;
  72504. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72505. }, function($ctx1) {$ctx1.fill(self,"testPosition",{collection:collection,stream:stream},$globals.StreamTest)});
  72506. //>>excludeEnd("ctx");
  72507. },
  72508. //>>excludeStart("ide", pragmas.excludeIdeData);
  72509. args: [],
  72510. 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",
  72511. referencedClasses: [],
  72512. //>>excludeEnd("ide");
  72513. messageSends: ["newCollection", "newStream", "nextPutAll:", "assert:equals:", "position", "size", "position:", "next"]
  72514. }),
  72515. $globals.StreamTest);
  72516. $core.addMethod(
  72517. $core.method({
  72518. selector: "testReading",
  72519. protocol: 'tests',
  72520. fn: function (){
  72521. var self=this;
  72522. var stream,collection;
  72523. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72524. return $core.withContext(function($ctx1) {
  72525. //>>excludeEnd("ctx");
  72526. var $1,$2,$3;
  72527. collection=self._newCollection();
  72528. stream=self._newStream();
  72529. $1=stream;
  72530. $recv($1)._nextPutAll_(collection);
  72531. $2=$recv($1)._position_((0));
  72532. $recv(collection)._do_((function(each){
  72533. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72534. return $core.withContext(function($ctx2) {
  72535. //>>excludeEnd("ctx");
  72536. $3=$recv(stream)._next();
  72537. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72538. $ctx2.sendIdx["next"]=1;
  72539. //>>excludeEnd("ctx");
  72540. return self._assert_equals_($3,each);
  72541. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72542. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  72543. //>>excludeEnd("ctx");
  72544. }));
  72545. self._assert_($recv($recv(stream)._next())._isNil());
  72546. return self;
  72547. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72548. }, function($ctx1) {$ctx1.fill(self,"testReading",{stream:stream,collection:collection},$globals.StreamTest)});
  72549. //>>excludeEnd("ctx");
  72550. },
  72551. //>>excludeStart("ide", pragmas.excludeIdeData);
  72552. args: [],
  72553. 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",
  72554. referencedClasses: [],
  72555. //>>excludeEnd("ide");
  72556. messageSends: ["newCollection", "newStream", "nextPutAll:", "position:", "do:", "assert:equals:", "next", "assert:", "isNil"]
  72557. }),
  72558. $globals.StreamTest);
  72559. $core.addMethod(
  72560. $core.method({
  72561. selector: "testStreamContents",
  72562. protocol: 'tests',
  72563. fn: function (){
  72564. var self=this;
  72565. return self;
  72566. },
  72567. //>>excludeStart("ide", pragmas.excludeIdeData);
  72568. args: [],
  72569. source: "testStreamContents",
  72570. referencedClasses: [],
  72571. //>>excludeEnd("ide");
  72572. messageSends: []
  72573. }),
  72574. $globals.StreamTest);
  72575. $core.addMethod(
  72576. $core.method({
  72577. selector: "testWrite",
  72578. protocol: 'tests',
  72579. fn: function (){
  72580. var self=this;
  72581. var stream,collection;
  72582. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72583. return $core.withContext(function($ctx1) {
  72584. //>>excludeEnd("ctx");
  72585. collection=self._newCollection();
  72586. stream=self._newStream();
  72587. $recv(collection)._do_((function(each){
  72588. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72589. return $core.withContext(function($ctx2) {
  72590. //>>excludeEnd("ctx");
  72591. return $recv(stream).__lt_lt(each);
  72592. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72593. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  72594. //>>excludeEnd("ctx");
  72595. }));
  72596. self._assert_equals_($recv(stream)._contents(),collection);
  72597. return self;
  72598. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72599. }, function($ctx1) {$ctx1.fill(self,"testWrite",{stream:stream,collection:collection},$globals.StreamTest)});
  72600. //>>excludeEnd("ctx");
  72601. },
  72602. //>>excludeStart("ide", pragmas.excludeIdeData);
  72603. args: [],
  72604. 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",
  72605. referencedClasses: [],
  72606. //>>excludeEnd("ide");
  72607. messageSends: ["newCollection", "newStream", "do:", "<<", "assert:equals:", "contents"]
  72608. }),
  72609. $globals.StreamTest);
  72610. $core.addMethod(
  72611. $core.method({
  72612. selector: "testWriting",
  72613. protocol: 'tests',
  72614. fn: function (){
  72615. var self=this;
  72616. var stream,collection;
  72617. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72618. return $core.withContext(function($ctx1) {
  72619. //>>excludeEnd("ctx");
  72620. var $1;
  72621. collection=self._newCollection();
  72622. stream=self._newStream();
  72623. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72624. $ctx1.sendIdx["newStream"]=1;
  72625. //>>excludeEnd("ctx");
  72626. $recv(collection)._do_((function(each){
  72627. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72628. return $core.withContext(function($ctx2) {
  72629. //>>excludeEnd("ctx");
  72630. return $recv(stream)._nextPut_(each);
  72631. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72632. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  72633. //>>excludeEnd("ctx");
  72634. }));
  72635. $1=$recv(stream)._contents();
  72636. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72637. $ctx1.sendIdx["contents"]=1;
  72638. //>>excludeEnd("ctx");
  72639. self._assert_equals_($1,collection);
  72640. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72641. $ctx1.sendIdx["assert:equals:"]=1;
  72642. //>>excludeEnd("ctx");
  72643. stream=self._newStream();
  72644. $recv(stream)._nextPutAll_(collection);
  72645. self._assert_equals_($recv(stream)._contents(),collection);
  72646. return self;
  72647. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72648. }, function($ctx1) {$ctx1.fill(self,"testWriting",{stream:stream,collection:collection},$globals.StreamTest)});
  72649. //>>excludeEnd("ctx");
  72650. },
  72651. //>>excludeStart("ide", pragmas.excludeIdeData);
  72652. args: [],
  72653. 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",
  72654. referencedClasses: [],
  72655. //>>excludeEnd("ide");
  72656. messageSends: ["newCollection", "newStream", "do:", "nextPut:", "assert:equals:", "contents", "nextPutAll:"]
  72657. }),
  72658. $globals.StreamTest);
  72659. $core.addMethod(
  72660. $core.method({
  72661. selector: "collectionClass",
  72662. protocol: 'accessing',
  72663. fn: function (){
  72664. var self=this;
  72665. return nil;
  72666. },
  72667. //>>excludeStart("ide", pragmas.excludeIdeData);
  72668. args: [],
  72669. source: "collectionClass\x0a\x09^ nil",
  72670. referencedClasses: [],
  72671. //>>excludeEnd("ide");
  72672. messageSends: []
  72673. }),
  72674. $globals.StreamTest.klass);
  72675. $core.addMethod(
  72676. $core.method({
  72677. selector: "isAbstract",
  72678. protocol: 'testing',
  72679. fn: function (){
  72680. var self=this;
  72681. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72682. return $core.withContext(function($ctx1) {
  72683. //>>excludeEnd("ctx");
  72684. var $1;
  72685. $1=$recv(self._collectionClass())._isNil();
  72686. return $1;
  72687. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72688. }, function($ctx1) {$ctx1.fill(self,"isAbstract",{},$globals.StreamTest.klass)});
  72689. //>>excludeEnd("ctx");
  72690. },
  72691. //>>excludeStart("ide", pragmas.excludeIdeData);
  72692. args: [],
  72693. source: "isAbstract\x0a\x09^ self collectionClass isNil",
  72694. referencedClasses: [],
  72695. //>>excludeEnd("ide");
  72696. messageSends: ["isNil", "collectionClass"]
  72697. }),
  72698. $globals.StreamTest.klass);
  72699. $core.addClass('ArrayStreamTest', $globals.StreamTest, [], 'Kernel-Tests');
  72700. $core.addMethod(
  72701. $core.method({
  72702. selector: "newCollection",
  72703. protocol: 'accessing',
  72704. fn: function (){
  72705. var self=this;
  72706. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72707. return $core.withContext(function($ctx1) {
  72708. //>>excludeEnd("ctx");
  72709. var $1;
  72710. $1=[true,(1),(3).__at((4)),"foo"];
  72711. return $1;
  72712. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72713. }, function($ctx1) {$ctx1.fill(self,"newCollection",{},$globals.ArrayStreamTest)});
  72714. //>>excludeEnd("ctx");
  72715. },
  72716. //>>excludeStart("ide", pragmas.excludeIdeData);
  72717. args: [],
  72718. source: "newCollection\x0a\x09^ { true. 1. 3@4. 'foo' }",
  72719. referencedClasses: [],
  72720. //>>excludeEnd("ide");
  72721. messageSends: ["@"]
  72722. }),
  72723. $globals.ArrayStreamTest);
  72724. $core.addMethod(
  72725. $core.method({
  72726. selector: "collectionClass",
  72727. protocol: 'accessing',
  72728. fn: function (){
  72729. var self=this;
  72730. function $Array(){return $globals.Array||(typeof Array=="undefined"?nil:Array)}
  72731. return $Array();
  72732. },
  72733. //>>excludeStart("ide", pragmas.excludeIdeData);
  72734. args: [],
  72735. source: "collectionClass\x0a\x09^ Array",
  72736. referencedClasses: ["Array"],
  72737. //>>excludeEnd("ide");
  72738. messageSends: []
  72739. }),
  72740. $globals.ArrayStreamTest.klass);
  72741. $core.addClass('StringStreamTest', $globals.StreamTest, [], 'Kernel-Tests');
  72742. $core.addMethod(
  72743. $core.method({
  72744. selector: "newCollection",
  72745. protocol: 'accessing',
  72746. fn: function (){
  72747. var self=this;
  72748. return "hello world";
  72749. },
  72750. //>>excludeStart("ide", pragmas.excludeIdeData);
  72751. args: [],
  72752. source: "newCollection\x0a\x09^ 'hello world'",
  72753. referencedClasses: [],
  72754. //>>excludeEnd("ide");
  72755. messageSends: []
  72756. }),
  72757. $globals.StringStreamTest);
  72758. $core.addMethod(
  72759. $core.method({
  72760. selector: "collectionClass",
  72761. protocol: 'accessing',
  72762. fn: function (){
  72763. var self=this;
  72764. function $String(){return $globals.String||(typeof String=="undefined"?nil:String)}
  72765. return $String();
  72766. },
  72767. //>>excludeStart("ide", pragmas.excludeIdeData);
  72768. args: [],
  72769. source: "collectionClass\x0a\x09^ String",
  72770. referencedClasses: ["String"],
  72771. //>>excludeEnd("ide");
  72772. messageSends: []
  72773. }),
  72774. $globals.StringStreamTest.klass);
  72775. $core.addClass('UndefinedTest', $globals.TestCase, [], 'Kernel-Tests');
  72776. $core.addMethod(
  72777. $core.method({
  72778. selector: "testCopying",
  72779. protocol: 'tests',
  72780. fn: function (){
  72781. var self=this;
  72782. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72783. return $core.withContext(function($ctx1) {
  72784. //>>excludeEnd("ctx");
  72785. self._assert_equals_(nil._copy(),nil);
  72786. return self;
  72787. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72788. }, function($ctx1) {$ctx1.fill(self,"testCopying",{},$globals.UndefinedTest)});
  72789. //>>excludeEnd("ctx");
  72790. },
  72791. //>>excludeStart("ide", pragmas.excludeIdeData);
  72792. args: [],
  72793. source: "testCopying\x0a\x09self assert: nil copy equals: nil",
  72794. referencedClasses: [],
  72795. //>>excludeEnd("ide");
  72796. messageSends: ["assert:equals:", "copy"]
  72797. }),
  72798. $globals.UndefinedTest);
  72799. $core.addMethod(
  72800. $core.method({
  72801. selector: "testDeepCopy",
  72802. protocol: 'tests',
  72803. fn: function (){
  72804. var self=this;
  72805. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72806. return $core.withContext(function($ctx1) {
  72807. //>>excludeEnd("ctx");
  72808. self._assert_($recv(nil._deepCopy()).__eq(nil));
  72809. return self;
  72810. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72811. }, function($ctx1) {$ctx1.fill(self,"testDeepCopy",{},$globals.UndefinedTest)});
  72812. //>>excludeEnd("ctx");
  72813. },
  72814. //>>excludeStart("ide", pragmas.excludeIdeData);
  72815. args: [],
  72816. source: "testDeepCopy\x0a\x09self assert: nil deepCopy = nil",
  72817. referencedClasses: [],
  72818. //>>excludeEnd("ide");
  72819. messageSends: ["assert:", "=", "deepCopy"]
  72820. }),
  72821. $globals.UndefinedTest);
  72822. $core.addMethod(
  72823. $core.method({
  72824. selector: "testIfNil",
  72825. protocol: 'tests',
  72826. fn: function (){
  72827. var self=this;
  72828. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72829. return $core.withContext(function($ctx1) {
  72830. //>>excludeEnd("ctx");
  72831. var $1,$3,$2,$4,$6,$5,$receiver;
  72832. if(($receiver = nil) == null || $receiver.isNil){
  72833. $1=true;
  72834. } else {
  72835. $1=nil;
  72836. };
  72837. self._assert_equals_($1,true);
  72838. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72839. $ctx1.sendIdx["assert:equals:"]=1;
  72840. //>>excludeEnd("ctx");
  72841. if(($receiver = nil) == null || $receiver.isNil){
  72842. $3=nil;
  72843. } else {
  72844. $3=true;
  72845. };
  72846. $2=$recv($3).__eq(true);
  72847. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72848. $ctx1.sendIdx["="]=1;
  72849. //>>excludeEnd("ctx");
  72850. self._deny_($2);
  72851. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72852. $ctx1.sendIdx["deny:"]=1;
  72853. //>>excludeEnd("ctx");
  72854. if(($receiver = nil) == null || $receiver.isNil){
  72855. $4=true;
  72856. } else {
  72857. $4=false;
  72858. };
  72859. self._assert_equals_($4,true);
  72860. if(($receiver = nil) == null || $receiver.isNil){
  72861. $6=false;
  72862. } else {
  72863. $6=true;
  72864. };
  72865. $5=$recv($6).__eq(true);
  72866. self._deny_($5);
  72867. return self;
  72868. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72869. }, function($ctx1) {$ctx1.fill(self,"testIfNil",{},$globals.UndefinedTest)});
  72870. //>>excludeEnd("ctx");
  72871. },
  72872. //>>excludeStart("ide", pragmas.excludeIdeData);
  72873. args: [],
  72874. 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",
  72875. referencedClasses: [],
  72876. //>>excludeEnd("ide");
  72877. messageSends: ["assert:equals:", "ifNil:", "deny:", "=", "ifNotNil:", "ifNil:ifNotNil:", "ifNotNil:ifNil:"]
  72878. }),
  72879. $globals.UndefinedTest);
  72880. $core.addMethod(
  72881. $core.method({
  72882. selector: "testIsNil",
  72883. protocol: 'tests',
  72884. fn: function (){
  72885. var self=this;
  72886. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72887. return $core.withContext(function($ctx1) {
  72888. //>>excludeEnd("ctx");
  72889. self._assert_(nil._isNil());
  72890. self._deny_(nil._notNil());
  72891. return self;
  72892. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72893. }, function($ctx1) {$ctx1.fill(self,"testIsNil",{},$globals.UndefinedTest)});
  72894. //>>excludeEnd("ctx");
  72895. },
  72896. //>>excludeStart("ide", pragmas.excludeIdeData);
  72897. args: [],
  72898. source: "testIsNil\x0a\x09self assert: nil isNil.\x0a\x09self deny: nil notNil.",
  72899. referencedClasses: [],
  72900. //>>excludeEnd("ide");
  72901. messageSends: ["assert:", "isNil", "deny:", "notNil"]
  72902. }),
  72903. $globals.UndefinedTest);
  72904. });
  72905. define("amber_core/Compiler-Tests", ["amber/boot", "amber_core/SUnit"], function($boot){
  72906. var $core=$boot.api,nil=$boot.nil,$recv=$boot.asReceiver,$globals=$boot.globals;
  72907. var smalltalk=$core,_st=$recv,globals=$globals;
  72908. $core.addPackage('Compiler-Tests');
  72909. $core.packages["Compiler-Tests"].transport = {"type":"amd","amdNamespace":"amber_core"};
  72910. $core.addClass('ASTParsingTest', $globals.TestCase, [], 'Compiler-Tests');
  72911. $core.addMethod(
  72912. $core.method({
  72913. selector: "analyze:forClass:",
  72914. protocol: 'convenience',
  72915. fn: function (aNode,aClass){
  72916. var self=this;
  72917. function $SemanticAnalyzer(){return $globals.SemanticAnalyzer||(typeof SemanticAnalyzer=="undefined"?nil:SemanticAnalyzer)}
  72918. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72919. return $core.withContext(function($ctx1) {
  72920. //>>excludeEnd("ctx");
  72921. $recv($recv($SemanticAnalyzer())._on_(aClass))._visit_(aNode);
  72922. return aNode;
  72923. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72924. }, function($ctx1) {$ctx1.fill(self,"analyze:forClass:",{aNode:aNode,aClass:aClass},$globals.ASTParsingTest)});
  72925. //>>excludeEnd("ctx");
  72926. },
  72927. //>>excludeStart("ide", pragmas.excludeIdeData);
  72928. args: ["aNode", "aClass"],
  72929. source: "analyze: aNode forClass: aClass\x0a\x09(SemanticAnalyzer on: aClass) visit: aNode.\x0a\x09^ aNode",
  72930. referencedClasses: ["SemanticAnalyzer"],
  72931. //>>excludeEnd("ide");
  72932. messageSends: ["visit:", "on:"]
  72933. }),
  72934. $globals.ASTParsingTest);
  72935. $core.addMethod(
  72936. $core.method({
  72937. selector: "parse:",
  72938. protocol: 'parsing',
  72939. fn: function (aString){
  72940. var self=this;
  72941. function $Smalltalk(){return $globals.Smalltalk||(typeof Smalltalk=="undefined"?nil:Smalltalk)}
  72942. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72943. return $core.withContext(function($ctx1) {
  72944. //>>excludeEnd("ctx");
  72945. var $1;
  72946. $1=$recv($Smalltalk())._parse_(aString);
  72947. return $1;
  72948. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72949. }, function($ctx1) {$ctx1.fill(self,"parse:",{aString:aString},$globals.ASTParsingTest)});
  72950. //>>excludeEnd("ctx");
  72951. },
  72952. //>>excludeStart("ide", pragmas.excludeIdeData);
  72953. args: ["aString"],
  72954. source: "parse: aString\x0a\x09^ Smalltalk parse: aString",
  72955. referencedClasses: ["Smalltalk"],
  72956. //>>excludeEnd("ide");
  72957. messageSends: ["parse:"]
  72958. }),
  72959. $globals.ASTParsingTest);
  72960. $core.addMethod(
  72961. $core.method({
  72962. selector: "parse:forClass:",
  72963. protocol: 'parsing',
  72964. fn: function (aString,aClass){
  72965. var self=this;
  72966. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72967. return $core.withContext(function($ctx1) {
  72968. //>>excludeEnd("ctx");
  72969. var $1;
  72970. $1=self._analyze_forClass_(self._parse_(aString),aClass);
  72971. return $1;
  72972. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72973. }, function($ctx1) {$ctx1.fill(self,"parse:forClass:",{aString:aString,aClass:aClass},$globals.ASTParsingTest)});
  72974. //>>excludeEnd("ctx");
  72975. },
  72976. //>>excludeStart("ide", pragmas.excludeIdeData);
  72977. args: ["aString", "aClass"],
  72978. source: "parse: aString forClass: aClass\x0a\x09^ self analyze: (self parse: aString) forClass: aClass",
  72979. referencedClasses: [],
  72980. //>>excludeEnd("ide");
  72981. messageSends: ["analyze:forClass:", "parse:"]
  72982. }),
  72983. $globals.ASTParsingTest);
  72984. $core.addClass('ASTPCNodeVisitorTest', $globals.ASTParsingTest, [], 'Compiler-Tests');
  72985. $core.addMethod(
  72986. $core.method({
  72987. selector: "astPCNodeVisitor",
  72988. protocol: 'factory',
  72989. fn: function (){
  72990. var self=this;
  72991. function $ASTPCNodeVisitor(){return $globals.ASTPCNodeVisitor||(typeof ASTPCNodeVisitor=="undefined"?nil:ASTPCNodeVisitor)}
  72992. function $AIContext(){return $globals.AIContext||(typeof AIContext=="undefined"?nil:AIContext)}
  72993. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72994. return $core.withContext(function($ctx1) {
  72995. //>>excludeEnd("ctx");
  72996. var $2,$3,$4,$5,$1;
  72997. $2=$recv($ASTPCNodeVisitor())._new();
  72998. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  72999. $ctx1.sendIdx["new"]=1;
  73000. //>>excludeEnd("ctx");
  73001. $3=$2;
  73002. $4=$recv($recv($AIContext())._new())._yourself();
  73003. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73004. $ctx1.sendIdx["yourself"]=1;
  73005. //>>excludeEnd("ctx");
  73006. $recv($3)._context_($4);
  73007. $5=$recv($2)._yourself();
  73008. $1=$5;
  73009. return $1;
  73010. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73011. }, function($ctx1) {$ctx1.fill(self,"astPCNodeVisitor",{},$globals.ASTPCNodeVisitorTest)});
  73012. //>>excludeEnd("ctx");
  73013. },
  73014. //>>excludeStart("ide", pragmas.excludeIdeData);
  73015. args: [],
  73016. source: "astPCNodeVisitor\x0a\x09^ ASTPCNodeVisitor new\x0a\x09\x09context: (AIContext new\x0a\x09\x09\x09yourself);\x0a\x09\x09yourself",
  73017. referencedClasses: ["ASTPCNodeVisitor", "AIContext"],
  73018. //>>excludeEnd("ide");
  73019. messageSends: ["context:", "new", "yourself"]
  73020. }),
  73021. $globals.ASTPCNodeVisitorTest);
  73022. $core.addMethod(
  73023. $core.method({
  73024. selector: "astPCNodeVisitorForSelector:",
  73025. protocol: 'factory',
  73026. fn: function (aString){
  73027. var self=this;
  73028. function $ASTPCNodeVisitor(){return $globals.ASTPCNodeVisitor||(typeof ASTPCNodeVisitor=="undefined"?nil:ASTPCNodeVisitor)}
  73029. function $AIContext(){return $globals.AIContext||(typeof AIContext=="undefined"?nil:AIContext)}
  73030. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73031. return $core.withContext(function($ctx1) {
  73032. //>>excludeEnd("ctx");
  73033. var $2,$3,$4,$5,$1;
  73034. $2=$recv($ASTPCNodeVisitor())._new();
  73035. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73036. $ctx1.sendIdx["new"]=1;
  73037. //>>excludeEnd("ctx");
  73038. $recv($2)._selector_(aString);
  73039. $3=$2;
  73040. $4=$recv($recv($AIContext())._new())._yourself();
  73041. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73042. $ctx1.sendIdx["yourself"]=1;
  73043. //>>excludeEnd("ctx");
  73044. $recv($3)._context_($4);
  73045. $5=$recv($2)._yourself();
  73046. $1=$5;
  73047. return $1;
  73048. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73049. }, function($ctx1) {$ctx1.fill(self,"astPCNodeVisitorForSelector:",{aString:aString},$globals.ASTPCNodeVisitorTest)});
  73050. //>>excludeEnd("ctx");
  73051. },
  73052. //>>excludeStart("ide", pragmas.excludeIdeData);
  73053. args: ["aString"],
  73054. source: "astPCNodeVisitorForSelector: aString\x0a\x09^ ASTPCNodeVisitor new\x0a\x09\x09selector: aString;\x0a\x09\x09context: (AIContext new\x0a\x09\x09\x09yourself);\x0a\x09\x09yourself",
  73055. referencedClasses: ["ASTPCNodeVisitor", "AIContext"],
  73056. //>>excludeEnd("ide");
  73057. messageSends: ["selector:", "new", "context:", "yourself"]
  73058. }),
  73059. $globals.ASTPCNodeVisitorTest);
  73060. $core.addMethod(
  73061. $core.method({
  73062. selector: "testJSStatementNode",
  73063. protocol: 'tests',
  73064. fn: function (){
  73065. var self=this;
  73066. var ast,visitor;
  73067. function $Object(){return $globals.Object||(typeof Object=="undefined"?nil:Object)}
  73068. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73069. return $core.withContext(function($ctx1) {
  73070. //>>excludeEnd("ctx");
  73071. var $1,$2;
  73072. ast=self._parse_forClass_("foo <consolee.log(1)>",$Object());
  73073. $1=self._astPCNodeVisitor();
  73074. $recv($1)._visit_(ast);
  73075. $2=$recv($1)._currentNode();
  73076. self._assert_($recv($2)._isJSStatementNode());
  73077. return self;
  73078. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73079. }, function($ctx1) {$ctx1.fill(self,"testJSStatementNode",{ast:ast,visitor:visitor},$globals.ASTPCNodeVisitorTest)});
  73080. //>>excludeEnd("ctx");
  73081. },
  73082. //>>excludeStart("ide", pragmas.excludeIdeData);
  73083. args: [],
  73084. source: "testJSStatementNode\x0a\x09| ast visitor |\x0a\x09\x0a\x09ast := self parse: 'foo <consolee.log(1)>' forClass: Object.\x0a\x09self assert: (self astPCNodeVisitor\x0a\x09\x09visit: ast;\x0a\x09\x09currentNode) isJSStatementNode",
  73085. referencedClasses: ["Object"],
  73086. //>>excludeEnd("ide");
  73087. messageSends: ["parse:forClass:", "assert:", "isJSStatementNode", "visit:", "astPCNodeVisitor", "currentNode"]
  73088. }),
  73089. $globals.ASTPCNodeVisitorTest);
  73090. $core.addMethod(
  73091. $core.method({
  73092. selector: "testMessageSend",
  73093. protocol: 'tests',
  73094. fn: function (){
  73095. var self=this;
  73096. var ast;
  73097. function $Object(){return $globals.Object||(typeof Object=="undefined"?nil:Object)}
  73098. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73099. return $core.withContext(function($ctx1) {
  73100. //>>excludeEnd("ctx");
  73101. var $1,$2;
  73102. ast=self._parse_forClass_("foo self asString yourself. ^ self asBoolean",$Object());
  73103. $1=self._astPCNodeVisitorForSelector_("yourself");
  73104. $recv($1)._visit_(ast);
  73105. $2=$recv($1)._currentNode();
  73106. self._assert_equals_($recv($2)._selector(),"yourself");
  73107. return self;
  73108. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73109. }, function($ctx1) {$ctx1.fill(self,"testMessageSend",{ast:ast},$globals.ASTPCNodeVisitorTest)});
  73110. //>>excludeEnd("ctx");
  73111. },
  73112. //>>excludeStart("ide", pragmas.excludeIdeData);
  73113. args: [],
  73114. 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'",
  73115. referencedClasses: ["Object"],
  73116. //>>excludeEnd("ide");
  73117. messageSends: ["parse:forClass:", "assert:equals:", "selector", "visit:", "astPCNodeVisitorForSelector:", "currentNode"]
  73118. }),
  73119. $globals.ASTPCNodeVisitorTest);
  73120. $core.addMethod(
  73121. $core.method({
  73122. selector: "testMessageSendWithBlocks",
  73123. protocol: 'tests',
  73124. fn: function (){
  73125. var self=this;
  73126. var ast;
  73127. function $Object(){return $globals.Object||(typeof Object=="undefined"?nil:Object)}
  73128. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73129. return $core.withContext(function($ctx1) {
  73130. //>>excludeEnd("ctx");
  73131. var $1,$2;
  73132. ast=self._parse_forClass_("foo true ifTrue: [ [ self asString yourself ] value. ]. ^ self asBoolean",$Object());
  73133. $1=self._astPCNodeVisitorForSelector_("yourself");
  73134. $recv($1)._visit_(ast);
  73135. $2=$recv($1)._currentNode();
  73136. self._assert_equals_($recv($2)._selector(),"yourself");
  73137. return self;
  73138. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73139. }, function($ctx1) {$ctx1.fill(self,"testMessageSendWithBlocks",{ast:ast},$globals.ASTPCNodeVisitorTest)});
  73140. //>>excludeEnd("ctx");
  73141. },
  73142. //>>excludeStart("ide", pragmas.excludeIdeData);
  73143. args: [],
  73144. 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'",
  73145. referencedClasses: ["Object"],
  73146. //>>excludeEnd("ide");
  73147. messageSends: ["parse:forClass:", "assert:equals:", "selector", "visit:", "astPCNodeVisitorForSelector:", "currentNode"]
  73148. }),
  73149. $globals.ASTPCNodeVisitorTest);
  73150. $core.addMethod(
  73151. $core.method({
  73152. selector: "testMessageSendWithInlining",
  73153. protocol: 'tests',
  73154. fn: function (){
  73155. var self=this;
  73156. var ast;
  73157. function $Object(){return $globals.Object||(typeof Object=="undefined"?nil:Object)}
  73158. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73159. return $core.withContext(function($ctx1) {
  73160. //>>excludeEnd("ctx");
  73161. var $3,$4,$2,$1,$5,$6;
  73162. ast=self._parse_forClass_("foo true ifTrue: [ self asString yourself ]. ^ self asBoolean",$Object());
  73163. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73164. $ctx1.sendIdx["parse:forClass:"]=1;
  73165. //>>excludeEnd("ctx");
  73166. $3=self._astPCNodeVisitorForSelector_("yourself");
  73167. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73168. $ctx1.sendIdx["astPCNodeVisitorForSelector:"]=1;
  73169. //>>excludeEnd("ctx");
  73170. $recv($3)._visit_(ast);
  73171. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73172. $ctx1.sendIdx["visit:"]=1;
  73173. //>>excludeEnd("ctx");
  73174. $4=$recv($3)._currentNode();
  73175. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73176. $ctx1.sendIdx["currentNode"]=1;
  73177. //>>excludeEnd("ctx");
  73178. $2=$4;
  73179. $1=$recv($2)._selector();
  73180. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73181. $ctx1.sendIdx["selector"]=1;
  73182. //>>excludeEnd("ctx");
  73183. self._assert_equals_($1,"yourself");
  73184. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73185. $ctx1.sendIdx["assert:equals:"]=1;
  73186. //>>excludeEnd("ctx");
  73187. ast=self._parse_forClass_("foo true ifTrue: [ self asString yourself ]. ^ self asBoolean",$Object());
  73188. $5=self._astPCNodeVisitorForSelector_("asBoolean");
  73189. $recv($5)._visit_(ast);
  73190. $6=$recv($5)._currentNode();
  73191. self._assert_equals_($recv($6)._selector(),"asBoolean");
  73192. return self;
  73193. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73194. }, function($ctx1) {$ctx1.fill(self,"testMessageSendWithInlining",{ast:ast},$globals.ASTPCNodeVisitorTest)});
  73195. //>>excludeEnd("ctx");
  73196. },
  73197. //>>excludeStart("ide", pragmas.excludeIdeData);
  73198. args: [],
  73199. 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'",
  73200. referencedClasses: ["Object"],
  73201. //>>excludeEnd("ide");
  73202. messageSends: ["parse:forClass:", "assert:equals:", "selector", "visit:", "astPCNodeVisitorForSelector:", "currentNode"]
  73203. }),
  73204. $globals.ASTPCNodeVisitorTest);
  73205. $core.addMethod(
  73206. $core.method({
  73207. selector: "testNoMessageSend",
  73208. protocol: 'tests',
  73209. fn: function (){
  73210. var self=this;
  73211. var ast;
  73212. function $Object(){return $globals.Object||(typeof Object=="undefined"?nil:Object)}
  73213. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73214. return $core.withContext(function($ctx1) {
  73215. //>>excludeEnd("ctx");
  73216. var $1,$2;
  73217. ast=self._parse_forClass_("foo ^ self",$Object());
  73218. $1=self._astPCNodeVisitor();
  73219. $recv($1)._visit_(ast);
  73220. $2=$recv($1)._currentNode();
  73221. self._assert_($recv($2)._isNil());
  73222. return self;
  73223. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73224. }, function($ctx1) {$ctx1.fill(self,"testNoMessageSend",{ast:ast},$globals.ASTPCNodeVisitorTest)});
  73225. //>>excludeEnd("ctx");
  73226. },
  73227. //>>excludeStart("ide", pragmas.excludeIdeData);
  73228. args: [],
  73229. 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",
  73230. referencedClasses: ["Object"],
  73231. //>>excludeEnd("ide");
  73232. messageSends: ["parse:forClass:", "assert:", "isNil", "visit:", "astPCNodeVisitor", "currentNode"]
  73233. }),
  73234. $globals.ASTPCNodeVisitorTest);
  73235. $core.addMethod(
  73236. $core.method({
  73237. selector: "testPC",
  73238. protocol: 'tests',
  73239. fn: function (){
  73240. var self=this;
  73241. var ast,visitor;
  73242. function $Object(){return $globals.Object||(typeof Object=="undefined"?nil:Object)}
  73243. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73244. return $core.withContext(function($ctx1) {
  73245. //>>excludeEnd("ctx");
  73246. var $1,$2;
  73247. ast=self._parse_forClass_("foo <console.log(1)>",$Object());
  73248. $1=self._astPCNodeVisitor();
  73249. $recv($1)._visit_(ast);
  73250. $2=$recv($1)._currentNode();
  73251. self._assert_($recv($2)._isJSStatementNode());
  73252. return self;
  73253. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73254. }, function($ctx1) {$ctx1.fill(self,"testPC",{ast:ast,visitor:visitor},$globals.ASTPCNodeVisitorTest)});
  73255. //>>excludeEnd("ctx");
  73256. },
  73257. //>>excludeStart("ide", pragmas.excludeIdeData);
  73258. args: [],
  73259. source: "testPC\x0a\x09| ast visitor |\x0a\x09\x0a\x09ast := self parse: 'foo <console.log(1)>' forClass: Object.\x0a\x09self assert: (self astPCNodeVisitor\x0a\x09\x09visit: ast;\x0a\x09\x09currentNode) isJSStatementNode",
  73260. referencedClasses: ["Object"],
  73261. //>>excludeEnd("ide");
  73262. messageSends: ["parse:forClass:", "assert:", "isJSStatementNode", "visit:", "astPCNodeVisitor", "currentNode"]
  73263. }),
  73264. $globals.ASTPCNodeVisitorTest);
  73265. $core.addClass('ASTPositionTest', $globals.ASTParsingTest, [], 'Compiler-Tests');
  73266. $core.addMethod(
  73267. $core.method({
  73268. selector: "testNodeAtPosition",
  73269. protocol: 'tests',
  73270. fn: function (){
  73271. var self=this;
  73272. var node;
  73273. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73274. return $core.withContext(function($ctx1) {
  73275. //>>excludeEnd("ctx");
  73276. var $3,$4,$2,$1,$7,$8,$6,$5;
  73277. node=self._parse_("yourself\x0a\x09^ self");
  73278. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73279. $ctx1.sendIdx["parse:"]=1;
  73280. //>>excludeEnd("ctx");
  73281. $3=node;
  73282. $4=(2).__at((4));
  73283. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73284. $ctx1.sendIdx["@"]=1;
  73285. //>>excludeEnd("ctx");
  73286. $2=$recv($3)._navigationNodeAt_ifAbsent_($4,(function(){
  73287. return nil;
  73288. }));
  73289. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73290. $ctx1.sendIdx["navigationNodeAt:ifAbsent:"]=1;
  73291. //>>excludeEnd("ctx");
  73292. $1=$recv($2)._source();
  73293. self._assert_equals_($1,"self");
  73294. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73295. $ctx1.sendIdx["assert:equals:"]=1;
  73296. //>>excludeEnd("ctx");
  73297. node=self._parse_("foo\x0a\x09true ifTrue: [ 1 ]");
  73298. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73299. $ctx1.sendIdx["parse:"]=2;
  73300. //>>excludeEnd("ctx");
  73301. $7=node;
  73302. $8=(2).__at((7));
  73303. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73304. $ctx1.sendIdx["@"]=2;
  73305. //>>excludeEnd("ctx");
  73306. $6=$recv($7)._navigationNodeAt_ifAbsent_($8,(function(){
  73307. return nil;
  73308. }));
  73309. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73310. $ctx1.sendIdx["navigationNodeAt:ifAbsent:"]=2;
  73311. //>>excludeEnd("ctx");
  73312. $5=$recv($6)._selector();
  73313. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73314. $ctx1.sendIdx["selector"]=1;
  73315. //>>excludeEnd("ctx");
  73316. self._assert_equals_($5,"ifTrue:");
  73317. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73318. $ctx1.sendIdx["assert:equals:"]=2;
  73319. //>>excludeEnd("ctx");
  73320. node=self._parse_("foo\x0a\x09self foo; bar; baz");
  73321. self._assert_equals_($recv($recv(node)._navigationNodeAt_ifAbsent_((2).__at((8)),(function(){
  73322. return nil;
  73323. })))._selector(),"foo");
  73324. return self;
  73325. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73326. }, function($ctx1) {$ctx1.fill(self,"testNodeAtPosition",{node:node},$globals.ASTPositionTest)});
  73327. //>>excludeEnd("ctx");
  73328. },
  73329. //>>excludeStart("ide", pragmas.excludeIdeData);
  73330. args: [],
  73331. source: "testNodeAtPosition\x0a\x09| node |\x0a\x09\x0a\x09node := self parse: 'yourself\x0a\x09^ self'.\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 ]'.\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'.\x0a\x09\x0a\x09self assert: (node navigationNodeAt: 2@8 ifAbsent: [ nil ]) selector equals: 'foo'",
  73332. referencedClasses: [],
  73333. //>>excludeEnd("ide");
  73334. messageSends: ["parse:", "assert:equals:", "source", "navigationNodeAt:ifAbsent:", "@", "selector"]
  73335. }),
  73336. $globals.ASTPositionTest);
  73337. $core.addClass('CodeGeneratorTest', $globals.ASTParsingTest, ['receiver'], 'Compiler-Tests');
  73338. $core.addMethod(
  73339. $core.method({
  73340. selector: "codeGeneratorClass",
  73341. protocol: 'accessing',
  73342. fn: function (){
  73343. var self=this;
  73344. function $CodeGenerator(){return $globals.CodeGenerator||(typeof CodeGenerator=="undefined"?nil:CodeGenerator)}
  73345. return $CodeGenerator();
  73346. },
  73347. //>>excludeStart("ide", pragmas.excludeIdeData);
  73348. args: [],
  73349. source: "codeGeneratorClass\x0a\x09^ CodeGenerator",
  73350. referencedClasses: ["CodeGenerator"],
  73351. //>>excludeEnd("ide");
  73352. messageSends: []
  73353. }),
  73354. $globals.CodeGeneratorTest);
  73355. $core.addMethod(
  73356. $core.method({
  73357. selector: "compiler",
  73358. protocol: 'factory',
  73359. fn: function (){
  73360. var self=this;
  73361. function $Compiler(){return $globals.Compiler||(typeof Compiler=="undefined"?nil:Compiler)}
  73362. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73363. return $core.withContext(function($ctx1) {
  73364. //>>excludeEnd("ctx");
  73365. var $2,$3,$1;
  73366. $2=$recv($Compiler())._new();
  73367. $recv($2)._codeGeneratorClass_(self._codeGeneratorClass());
  73368. $3=$recv($2)._yourself();
  73369. $1=$3;
  73370. return $1;
  73371. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73372. }, function($ctx1) {$ctx1.fill(self,"compiler",{},$globals.CodeGeneratorTest)});
  73373. //>>excludeEnd("ctx");
  73374. },
  73375. //>>excludeStart("ide", pragmas.excludeIdeData);
  73376. args: [],
  73377. source: "compiler\x0a\x09^ Compiler new\x0a\x09\x09codeGeneratorClass: self codeGeneratorClass;\x0a\x09\x09yourself",
  73378. referencedClasses: ["Compiler"],
  73379. //>>excludeEnd("ide");
  73380. messageSends: ["codeGeneratorClass:", "new", "codeGeneratorClass", "yourself"]
  73381. }),
  73382. $globals.CodeGeneratorTest);
  73383. $core.addMethod(
  73384. $core.method({
  73385. selector: "setUp",
  73386. protocol: 'initialization',
  73387. fn: function (){
  73388. var self=this;
  73389. function $DoIt(){return $globals.DoIt||(typeof DoIt=="undefined"?nil:DoIt)}
  73390. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73391. return $core.withContext(function($ctx1) {
  73392. //>>excludeEnd("ctx");
  73393. self["@receiver"]=$recv($DoIt())._new();
  73394. return self;
  73395. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73396. }, function($ctx1) {$ctx1.fill(self,"setUp",{},$globals.CodeGeneratorTest)});
  73397. //>>excludeEnd("ctx");
  73398. },
  73399. //>>excludeStart("ide", pragmas.excludeIdeData);
  73400. args: [],
  73401. source: "setUp\x0a\x09receiver := DoIt new",
  73402. referencedClasses: ["DoIt"],
  73403. //>>excludeEnd("ide");
  73404. messageSends: ["new"]
  73405. }),
  73406. $globals.CodeGeneratorTest);
  73407. $core.addMethod(
  73408. $core.method({
  73409. selector: "should:receiver:return:",
  73410. protocol: 'testing',
  73411. fn: function (aString,anObject,aResult){
  73412. var self=this;
  73413. var method,result;
  73414. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73415. return $core.withContext(function($ctx1) {
  73416. //>>excludeEnd("ctx");
  73417. var $1,$2;
  73418. self["@receiver"]=anObject;
  73419. $1=self._compiler();
  73420. $2=$recv(anObject)._class();
  73421. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73422. $ctx1.sendIdx["class"]=1;
  73423. //>>excludeEnd("ctx");
  73424. method=$recv($1)._install_forClass_protocol_(aString,$2,"tests");
  73425. result=$recv(self["@receiver"])._perform_($recv(method)._selector());
  73426. $recv($recv(anObject)._class())._removeCompiledMethod_(method);
  73427. self._assert_equals_(aResult,result);
  73428. return self;
  73429. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73430. }, function($ctx1) {$ctx1.fill(self,"should:receiver:return:",{aString:aString,anObject:anObject,aResult:aResult,method:method,result:result},$globals.CodeGeneratorTest)});
  73431. //>>excludeEnd("ctx");
  73432. },
  73433. //>>excludeStart("ide", pragmas.excludeIdeData);
  73434. args: ["aString", "anObject", "aResult"],
  73435. source: "should: aString receiver: anObject return: aResult\x0a\x09| method result |\x0a\x0a\x09receiver := anObject.\x0a\x09method := self compiler install: aString forClass: anObject class protocol: 'tests'.\x0a\x09result := receiver perform: method selector.\x0a\x09anObject class removeCompiledMethod: method.\x0a\x09self assert: aResult equals: result",
  73436. referencedClasses: [],
  73437. //>>excludeEnd("ide");
  73438. messageSends: ["install:forClass:protocol:", "compiler", "class", "perform:", "selector", "removeCompiledMethod:", "assert:equals:"]
  73439. }),
  73440. $globals.CodeGeneratorTest);
  73441. $core.addMethod(
  73442. $core.method({
  73443. selector: "should:return:",
  73444. protocol: 'testing',
  73445. fn: function (aString,anObject){
  73446. var self=this;
  73447. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73448. return $core.withContext(function($ctx1) {
  73449. //>>excludeEnd("ctx");
  73450. var $1;
  73451. $1=self._should_receiver_return_(aString,self["@receiver"],anObject);
  73452. return $1;
  73453. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73454. }, function($ctx1) {$ctx1.fill(self,"should:return:",{aString:aString,anObject:anObject},$globals.CodeGeneratorTest)});
  73455. //>>excludeEnd("ctx");
  73456. },
  73457. //>>excludeStart("ide", pragmas.excludeIdeData);
  73458. args: ["aString", "anObject"],
  73459. source: "should: aString return: anObject\x0a\x09^ self \x0a\x09\x09should: aString \x0a\x09\x09receiver: receiver \x0a\x09\x09return: anObject",
  73460. referencedClasses: [],
  73461. //>>excludeEnd("ide");
  73462. messageSends: ["should:receiver:return:"]
  73463. }),
  73464. $globals.CodeGeneratorTest);
  73465. $core.addMethod(
  73466. $core.method({
  73467. selector: "tearDown",
  73468. protocol: 'initialization',
  73469. fn: function (){
  73470. var self=this;
  73471. return self;
  73472. },
  73473. //>>excludeStart("ide", pragmas.excludeIdeData);
  73474. args: [],
  73475. source: "tearDown\x0a\x09\x22receiver := nil\x22",
  73476. referencedClasses: [],
  73477. //>>excludeEnd("ide");
  73478. messageSends: []
  73479. }),
  73480. $globals.CodeGeneratorTest);
  73481. $core.addMethod(
  73482. $core.method({
  73483. selector: "testAssignment",
  73484. protocol: 'tests',
  73485. fn: function (){
  73486. var self=this;
  73487. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73488. return $core.withContext(function($ctx1) {
  73489. //>>excludeEnd("ctx");
  73490. self._should_return_("foo | a | a := true ifTrue: [ 1 ]. ^ a",(1));
  73491. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73492. $ctx1.sendIdx["should:return:"]=1;
  73493. //>>excludeEnd("ctx");
  73494. self._should_return_("foo | a | a := false ifTrue: [ 1 ]. ^ a",nil);
  73495. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73496. $ctx1.sendIdx["should:return:"]=2;
  73497. //>>excludeEnd("ctx");
  73498. self._should_return_("foo | a | ^ a := true ifTrue: [ 1 ]",(1));
  73499. return self;
  73500. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73501. }, function($ctx1) {$ctx1.fill(self,"testAssignment",{},$globals.CodeGeneratorTest)});
  73502. //>>excludeEnd("ctx");
  73503. },
  73504. //>>excludeStart("ide", pragmas.excludeIdeData);
  73505. args: [],
  73506. 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",
  73507. referencedClasses: [],
  73508. //>>excludeEnd("ide");
  73509. messageSends: ["should:return:"]
  73510. }),
  73511. $globals.CodeGeneratorTest);
  73512. $core.addMethod(
  73513. $core.method({
  73514. selector: "testBackslashSelectors",
  73515. protocol: 'tests',
  73516. fn: function (){
  73517. var self=this;
  73518. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73519. return $core.withContext(function($ctx1) {
  73520. //>>excludeEnd("ctx");
  73521. self._should_return_("\x5c arg ^ 4",(4));
  73522. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73523. $ctx1.sendIdx["should:return:"]=1;
  73524. //>>excludeEnd("ctx");
  73525. self._should_return_("\x5c\x5c arg ^ 42",(42));
  73526. return self;
  73527. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73528. }, function($ctx1) {$ctx1.fill(self,"testBackslashSelectors",{},$globals.CodeGeneratorTest)});
  73529. //>>excludeEnd("ctx");
  73530. },
  73531. //>>excludeStart("ide", pragmas.excludeIdeData);
  73532. args: [],
  73533. source: "testBackslashSelectors\x0a\x09\x0a\x09self should: '\x5c arg ^ 4' return: 4.\x0a\x09self should: '\x5c\x5c arg ^ 42' return: 42",
  73534. referencedClasses: [],
  73535. //>>excludeEnd("ide");
  73536. messageSends: ["should:return:"]
  73537. }),
  73538. $globals.CodeGeneratorTest);
  73539. $core.addMethod(
  73540. $core.method({
  73541. selector: "testBlockReturn",
  73542. protocol: 'tests',
  73543. fn: function (){
  73544. var self=this;
  73545. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73546. return $core.withContext(function($ctx1) {
  73547. //>>excludeEnd("ctx");
  73548. self._should_return_("foo ^ #(1 2 3) collect: [ :each | true ifTrue: [ each + 1 ] ]",[(2), (3), (4)]);
  73549. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73550. $ctx1.sendIdx["should:return:"]=1;
  73551. //>>excludeEnd("ctx");
  73552. self._should_return_("foo ^ #(1 2 3) collect: [ :each | false ifFalse: [ each + 1 ] ]",[(2), (3), (4)]);
  73553. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73554. $ctx1.sendIdx["should:return:"]=2;
  73555. //>>excludeEnd("ctx");
  73556. self._should_return_("foo ^ #(1 2 3) collect: [ :each | each odd ifTrue: [ each + 1 ] ifFalse: [ each - 1 ] ]",[(2), (1), (4)]);
  73557. return self;
  73558. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73559. }, function($ctx1) {$ctx1.fill(self,"testBlockReturn",{},$globals.CodeGeneratorTest)});
  73560. //>>excludeEnd("ctx");
  73561. },
  73562. //>>excludeStart("ide", pragmas.excludeIdeData);
  73563. args: [],
  73564. 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).",
  73565. referencedClasses: [],
  73566. //>>excludeEnd("ide");
  73567. messageSends: ["should:return:"]
  73568. }),
  73569. $globals.CodeGeneratorTest);
  73570. $core.addMethod(
  73571. $core.method({
  73572. selector: "testCascades",
  73573. protocol: 'tests',
  73574. fn: function (){
  73575. var self=this;
  73576. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73577. return $core.withContext(function($ctx1) {
  73578. //>>excludeEnd("ctx");
  73579. self._should_return_("foo ^ Array new add: 3; add: 4; yourself",[(3), (4)]);
  73580. return self;
  73581. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73582. }, function($ctx1) {$ctx1.fill(self,"testCascades",{},$globals.CodeGeneratorTest)});
  73583. //>>excludeEnd("ctx");
  73584. },
  73585. //>>excludeStart("ide", pragmas.excludeIdeData);
  73586. args: [],
  73587. source: "testCascades\x0a\x09\x0a\x09self should: 'foo ^ Array new add: 3; add: 4; yourself' return: #(3 4)",
  73588. referencedClasses: [],
  73589. //>>excludeEnd("ide");
  73590. messageSends: ["should:return:"]
  73591. }),
  73592. $globals.CodeGeneratorTest);
  73593. $core.addMethod(
  73594. $core.method({
  73595. selector: "testCascadesWithInlining",
  73596. protocol: 'tests',
  73597. fn: function (){
  73598. var self=this;
  73599. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73600. return $core.withContext(function($ctx1) {
  73601. //>>excludeEnd("ctx");
  73602. self._should_return_("foo ^ true ifTrue: [ 1 ] ifFalse: [ 2 ]",(1));
  73603. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73604. $ctx1.sendIdx["should:return:"]=1;
  73605. //>>excludeEnd("ctx");
  73606. self._should_return_("foo ^ false ifTrue: [ 1 ] ifFalse: [ 2 ]",(2));
  73607. return self;
  73608. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73609. }, function($ctx1) {$ctx1.fill(self,"testCascadesWithInlining",{},$globals.CodeGeneratorTest)});
  73610. //>>excludeEnd("ctx");
  73611. },
  73612. //>>excludeStart("ide", pragmas.excludeIdeData);
  73613. args: [],
  73614. source: "testCascadesWithInlining\x0a\x09\x0a\x09self should: 'foo ^ true ifTrue: [ 1 ] ifFalse: [ 2 ]' return: 1.\x0a\x09self should: 'foo ^ false ifTrue: [ 1 ] ifFalse: [ 2 ]' return: 2",
  73615. referencedClasses: [],
  73616. //>>excludeEnd("ide");
  73617. messageSends: ["should:return:"]
  73618. }),
  73619. $globals.CodeGeneratorTest);
  73620. $core.addMethod(
  73621. $core.method({
  73622. selector: "testDynamicArrayElementsOrdered",
  73623. protocol: 'tests',
  73624. fn: function (){
  73625. var self=this;
  73626. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73627. return $core.withContext(function($ctx1) {
  73628. //>>excludeEnd("ctx");
  73629. self._should_return_("foo\x0a\x09| x |\x0a\x09x := 1.\x0a\x09^ { x. x := 2 }\x0a",[(1), (2)]);
  73630. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73631. $ctx1.sendIdx["should:return:"]=1;
  73632. //>>excludeEnd("ctx");
  73633. self._should_return_("foo\x0a\x09| x |\x0a\x09x := 1.\x0a\x09^ { x. true ifTrue: [ x := 2 ] }\x0a",[(1), (2)]);
  73634. return self;
  73635. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73636. }, function($ctx1) {$ctx1.fill(self,"testDynamicArrayElementsOrdered",{},$globals.CodeGeneratorTest)});
  73637. //>>excludeEnd("ctx");
  73638. },
  73639. //>>excludeStart("ide", pragmas.excludeIdeData);
  73640. args: [],
  73641. 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).",
  73642. referencedClasses: [],
  73643. //>>excludeEnd("ide");
  73644. messageSends: ["should:return:"]
  73645. }),
  73646. $globals.CodeGeneratorTest);
  73647. $core.addMethod(
  73648. $core.method({
  73649. selector: "testDynamicDictionaryElementsOrdered",
  73650. protocol: 'tests',
  73651. fn: function (){
  73652. var self=this;
  73653. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73654. return $core.withContext(function($ctx1) {
  73655. //>>excludeEnd("ctx");
  73656. 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)]));
  73657. return self;
  73658. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73659. }, function($ctx1) {$ctx1.fill(self,"testDynamicDictionaryElementsOrdered",{},$globals.CodeGeneratorTest)});
  73660. //>>excludeEnd("ctx");
  73661. },
  73662. //>>excludeStart("ide", pragmas.excludeIdeData);
  73663. args: [],
  73664. 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}.",
  73665. referencedClasses: [],
  73666. //>>excludeEnd("ide");
  73667. messageSends: ["should:return:"]
  73668. }),
  73669. $globals.CodeGeneratorTest);
  73670. $core.addMethod(
  73671. $core.method({
  73672. selector: "testDynamicDictionaryWithMoreArrows",
  73673. protocol: 'tests',
  73674. fn: function (){
  73675. var self=this;
  73676. function $HashedCollection(){return $globals.HashedCollection||(typeof HashedCollection=="undefined"?nil:HashedCollection)}
  73677. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73678. return $core.withContext(function($ctx1) {
  73679. //>>excludeEnd("ctx");
  73680. var $2,$1;
  73681. $2=$recv((1).__minus_gt((2))).__minus_gt((3));
  73682. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73683. $ctx1.sendIdx["->"]=1;
  73684. //>>excludeEnd("ctx");
  73685. $1=$recv($HashedCollection())._with_($2);
  73686. self._should_return_("foo ^ #{1->2->3}",$1);
  73687. return self;
  73688. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73689. }, function($ctx1) {$ctx1.fill(self,"testDynamicDictionaryWithMoreArrows",{},$globals.CodeGeneratorTest)});
  73690. //>>excludeEnd("ctx");
  73691. },
  73692. //>>excludeStart("ide", pragmas.excludeIdeData);
  73693. args: [],
  73694. source: "testDynamicDictionaryWithMoreArrows\x0a\x09self should: 'foo ^ #{1->2->3}' return: (HashedCollection with: 1->2->3)",
  73695. referencedClasses: ["HashedCollection"],
  73696. //>>excludeEnd("ide");
  73697. messageSends: ["should:return:", "with:", "->"]
  73698. }),
  73699. $globals.CodeGeneratorTest);
  73700. $core.addMethod(
  73701. $core.method({
  73702. selector: "testGlobalVar",
  73703. protocol: 'tests',
  73704. fn: function (){
  73705. var self=this;
  73706. function $BlockClosure(){return $globals.BlockClosure||(typeof BlockClosure=="undefined"?nil:BlockClosure)}
  73707. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73708. return $core.withContext(function($ctx1) {
  73709. //>>excludeEnd("ctx");
  73710. self._should_return_("foo ^ eval class",$BlockClosure());
  73711. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73712. $ctx1.sendIdx["should:return:"]=1;
  73713. //>>excludeEnd("ctx");
  73714. self._should_return_("foo ^ Math cos: 0",(1));
  73715. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73716. $ctx1.sendIdx["should:return:"]=2;
  73717. //>>excludeEnd("ctx");
  73718. self._should_return_("foo ^ NonExistingVar",nil);
  73719. return self;
  73720. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73721. }, function($ctx1) {$ctx1.fill(self,"testGlobalVar",{},$globals.CodeGeneratorTest)});
  73722. //>>excludeEnd("ctx");
  73723. },
  73724. //>>excludeStart("ide", pragmas.excludeIdeData);
  73725. args: [],
  73726. 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",
  73727. referencedClasses: ["BlockClosure"],
  73728. //>>excludeEnd("ide");
  73729. messageSends: ["should:return:"]
  73730. }),
  73731. $globals.CodeGeneratorTest);
  73732. $core.addMethod(
  73733. $core.method({
  73734. selector: "testInnerTemporalDependentElementsOrdered",
  73735. protocol: 'tests',
  73736. fn: function (){
  73737. var self=this;
  73738. function $Array(){return $globals.Array||(typeof Array=="undefined"?nil:Array)}
  73739. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73740. return $core.withContext(function($ctx1) {
  73741. //>>excludeEnd("ctx");
  73742. var $2,$3,$1,$5,$6,$4,$8,$9,$7,$11,$10;
  73743. $2="foo".__minus_gt($Array());
  73744. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73745. $ctx1.sendIdx["->"]=1;
  73746. //>>excludeEnd("ctx");
  73747. $3="bar".__minus_gt((2));
  73748. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73749. $ctx1.sendIdx["->"]=2;
  73750. //>>excludeEnd("ctx");
  73751. $1=[$2,$3];
  73752. self._should_return_("foo\x0a\x09| x |\x0a\x09x := Array.\x0a\x09^ x with: 'foo'->x with: 'bar'->(x := 2)\x0a",$1);
  73753. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73754. $ctx1.sendIdx["should:return:"]=1;
  73755. //>>excludeEnd("ctx");
  73756. $5="foo".__minus_gt($Array());
  73757. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73758. $ctx1.sendIdx["->"]=3;
  73759. //>>excludeEnd("ctx");
  73760. $6="bar".__minus_gt((2));
  73761. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73762. $ctx1.sendIdx["->"]=4;
  73763. //>>excludeEnd("ctx");
  73764. $4=[$5,$6];
  73765. self._should_return_("foo\x0a\x09| x |\x0a\x09x := Array.\x0a\x09^ x with: 'foo'->x with: 'bar'->(true ifTrue: [ x := 2 ])\x0a",$4);
  73766. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73767. $ctx1.sendIdx["should:return:"]=2;
  73768. //>>excludeEnd("ctx");
  73769. $8="foo".__minus_gt((1));
  73770. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73771. $ctx1.sendIdx["->"]=5;
  73772. //>>excludeEnd("ctx");
  73773. $9="bar".__minus_gt((2));
  73774. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73775. $ctx1.sendIdx["->"]=6;
  73776. //>>excludeEnd("ctx");
  73777. $7=[$8,$9];
  73778. self._should_return_("foo\x0a\x09| x |\x0a\x09x := 1.\x0a\x09^ Array with: 'foo'->x with: 'bar'->(true ifTrue: [ x := 2 ])\x0a",$7);
  73779. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73780. $ctx1.sendIdx["should:return:"]=3;
  73781. //>>excludeEnd("ctx");
  73782. $11="foo".__minus_gt((1));
  73783. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73784. $ctx1.sendIdx["->"]=7;
  73785. //>>excludeEnd("ctx");
  73786. $10=[$11,"bar".__minus_gt((2))];
  73787. self._should_return_("foo\x0a\x09| x |\x0a\x09x := 1.\x0a\x09^ { 'foo'->x. 'bar'->(true ifTrue: [ x := 2 ]) }\x0a",$10);
  73788. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73789. $ctx1.sendIdx["should:return:"]=4;
  73790. //>>excludeEnd("ctx");
  73791. 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)]));
  73792. return self;
  73793. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73794. }, function($ctx1) {$ctx1.fill(self,"testInnerTemporalDependentElementsOrdered",{},$globals.CodeGeneratorTest)});
  73795. //>>excludeEnd("ctx");
  73796. },
  73797. //>>excludeStart("ide", pragmas.excludeIdeData);
  73798. args: [],
  73799. 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}.",
  73800. referencedClasses: ["Array"],
  73801. //>>excludeEnd("ide");
  73802. messageSends: ["should:return:", "->"]
  73803. }),
  73804. $globals.CodeGeneratorTest);
  73805. $core.addMethod(
  73806. $core.method({
  73807. selector: "testJSStatement",
  73808. protocol: 'tests',
  73809. fn: function (){
  73810. var self=this;
  73811. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73812. return $core.withContext(function($ctx1) {
  73813. //>>excludeEnd("ctx");
  73814. self._should_return_("foo <return 2+3>",(5));
  73815. return self;
  73816. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73817. }, function($ctx1) {$ctx1.fill(self,"testJSStatement",{},$globals.CodeGeneratorTest)});
  73818. //>>excludeEnd("ctx");
  73819. },
  73820. //>>excludeStart("ide", pragmas.excludeIdeData);
  73821. args: [],
  73822. source: "testJSStatement\x0a\x09self should: 'foo <return 2+3>' return: 5",
  73823. referencedClasses: [],
  73824. //>>excludeEnd("ide");
  73825. messageSends: ["should:return:"]
  73826. }),
  73827. $globals.CodeGeneratorTest);
  73828. $core.addMethod(
  73829. $core.method({
  73830. selector: "testLexicalScope",
  73831. protocol: 'tests',
  73832. fn: function (){
  73833. var self=this;
  73834. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73835. return $core.withContext(function($ctx1) {
  73836. //>>excludeEnd("ctx");
  73837. self._should_return_("foo | a | a := 1. [ a := 2 ] value. ^ a",(2));
  73838. return self;
  73839. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73840. }, function($ctx1) {$ctx1.fill(self,"testLexicalScope",{},$globals.CodeGeneratorTest)});
  73841. //>>excludeEnd("ctx");
  73842. },
  73843. //>>excludeStart("ide", pragmas.excludeIdeData);
  73844. args: [],
  73845. source: "testLexicalScope\x0a\x09self should: 'foo | a | a := 1. [ a := 2 ] value. ^ a' return: 2",
  73846. referencedClasses: [],
  73847. //>>excludeEnd("ide");
  73848. messageSends: ["should:return:"]
  73849. }),
  73850. $globals.CodeGeneratorTest);
  73851. $core.addMethod(
  73852. $core.method({
  73853. selector: "testLiterals",
  73854. protocol: 'tests',
  73855. fn: function (){
  73856. var self=this;
  73857. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73858. return $core.withContext(function($ctx1) {
  73859. //>>excludeEnd("ctx");
  73860. self._should_return_("foo ^ 1",(1));
  73861. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73862. $ctx1.sendIdx["should:return:"]=1;
  73863. //>>excludeEnd("ctx");
  73864. self._should_return_("foo ^ 'hello'","hello");
  73865. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73866. $ctx1.sendIdx["should:return:"]=2;
  73867. //>>excludeEnd("ctx");
  73868. self._should_return_("foo ^ #(1 2 3 4)",[(1), (2), (3), (4)]);
  73869. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73870. $ctx1.sendIdx["should:return:"]=3;
  73871. //>>excludeEnd("ctx");
  73872. self._should_return_("foo ^ {1. [:x | x ] value: 2. 3. [4] value}",[(1), (2), (3), (4)]);
  73873. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73874. $ctx1.sendIdx["should:return:"]=4;
  73875. //>>excludeEnd("ctx");
  73876. self._should_return_("foo ^ true",true);
  73877. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73878. $ctx1.sendIdx["should:return:"]=5;
  73879. //>>excludeEnd("ctx");
  73880. self._should_return_("foo ^ false",false);
  73881. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73882. $ctx1.sendIdx["should:return:"]=6;
  73883. //>>excludeEnd("ctx");
  73884. self._should_return_("foo ^ #{1->2. 3->4}",$globals.HashedCollection._newFromPairs_([(1),(2),(3),(4)]));
  73885. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73886. $ctx1.sendIdx["should:return:"]=7;
  73887. //>>excludeEnd("ctx");
  73888. self._should_return_("foo ^ #hello","hello");
  73889. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73890. $ctx1.sendIdx["should:return:"]=8;
  73891. //>>excludeEnd("ctx");
  73892. self._should_return_("foo ^ $h","h");
  73893. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73894. $ctx1.sendIdx["should:return:"]=9;
  73895. //>>excludeEnd("ctx");
  73896. self._should_return_("foo ^ -123.456",(-123.456));
  73897. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73898. $ctx1.sendIdx["should:return:"]=10;
  73899. //>>excludeEnd("ctx");
  73900. self._should_return_("foo ^ -2.5e4",(-25000));
  73901. return self;
  73902. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73903. }, function($ctx1) {$ctx1.fill(self,"testLiterals",{},$globals.CodeGeneratorTest)});
  73904. //>>excludeEnd("ctx");
  73905. },
  73906. //>>excludeStart("ide", pragmas.excludeIdeData);
  73907. args: [],
  73908. 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.",
  73909. referencedClasses: [],
  73910. //>>excludeEnd("ide");
  73911. messageSends: ["should:return:"]
  73912. }),
  73913. $globals.CodeGeneratorTest);
  73914. $core.addMethod(
  73915. $core.method({
  73916. selector: "testLocalReturn",
  73917. protocol: 'tests',
  73918. fn: function (){
  73919. var self=this;
  73920. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73921. return $core.withContext(function($ctx1) {
  73922. //>>excludeEnd("ctx");
  73923. self._should_return_("foo ^ 1",(1));
  73924. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73925. $ctx1.sendIdx["should:return:"]=1;
  73926. //>>excludeEnd("ctx");
  73927. self._should_return_("foo ^ 1 + 1",(2));
  73928. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73929. $ctx1.sendIdx["should:return:"]=2;
  73930. //>>excludeEnd("ctx");
  73931. self._should_return_("foo ",self["@receiver"]);
  73932. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73933. $ctx1.sendIdx["should:return:"]=3;
  73934. //>>excludeEnd("ctx");
  73935. self._should_return_("foo self asString",self["@receiver"]);
  73936. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73937. $ctx1.sendIdx["should:return:"]=4;
  73938. //>>excludeEnd("ctx");
  73939. self._should_return_("foo | a b | a := 1. b := 2. ^ a + b",(3));
  73940. return self;
  73941. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73942. }, function($ctx1) {$ctx1.fill(self,"testLocalReturn",{},$globals.CodeGeneratorTest)});
  73943. //>>excludeEnd("ctx");
  73944. },
  73945. //>>excludeStart("ide", pragmas.excludeIdeData);
  73946. args: [],
  73947. 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",
  73948. referencedClasses: [],
  73949. //>>excludeEnd("ide");
  73950. messageSends: ["should:return:"]
  73951. }),
  73952. $globals.CodeGeneratorTest);
  73953. $core.addMethod(
  73954. $core.method({
  73955. selector: "testMessageSends",
  73956. protocol: 'tests',
  73957. fn: function (){
  73958. var self=this;
  73959. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73960. return $core.withContext(function($ctx1) {
  73961. //>>excludeEnd("ctx");
  73962. self._should_return_("foo ^ 1 asString","1");
  73963. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73964. $ctx1.sendIdx["should:return:"]=1;
  73965. //>>excludeEnd("ctx");
  73966. self._should_return_("foo ^ 1 + 1",(2));
  73967. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73968. $ctx1.sendIdx["should:return:"]=2;
  73969. //>>excludeEnd("ctx");
  73970. self._should_return_("foo ^ 1 + 2 * 3",(9));
  73971. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73972. $ctx1.sendIdx["should:return:"]=3;
  73973. //>>excludeEnd("ctx");
  73974. self._should_return_("foo ^ 1 to: 3",[(1), (2), (3)]);
  73975. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73976. $ctx1.sendIdx["should:return:"]=4;
  73977. //>>excludeEnd("ctx");
  73978. self._should_return_("foo ^ 1 to: 5 by: 2",[(1), (3), (5)]);
  73979. return self;
  73980. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73981. }, function($ctx1) {$ctx1.fill(self,"testMessageSends",{},$globals.CodeGeneratorTest)});
  73982. //>>excludeEnd("ctx");
  73983. },
  73984. //>>excludeStart("ide", pragmas.excludeIdeData);
  73985. args: [],
  73986. 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)",
  73987. referencedClasses: [],
  73988. //>>excludeEnd("ide");
  73989. messageSends: ["should:return:"]
  73990. }),
  73991. $globals.CodeGeneratorTest);
  73992. $core.addMethod(
  73993. $core.method({
  73994. selector: "testMultipleSequences",
  73995. protocol: 'tests',
  73996. fn: function (){
  73997. var self=this;
  73998. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  73999. return $core.withContext(function($ctx1) {
  74000. //>>excludeEnd("ctx");
  74001. self._should_return_("foo | a b c | a := 2. b := 3. c := a + b. ^ c * 6",(30));
  74002. return self;
  74003. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74004. }, function($ctx1) {$ctx1.fill(self,"testMultipleSequences",{},$globals.CodeGeneratorTest)});
  74005. //>>excludeEnd("ctx");
  74006. },
  74007. //>>excludeStart("ide", pragmas.excludeIdeData);
  74008. args: [],
  74009. source: "testMultipleSequences\x0a\x09self should: 'foo | a b c | a := 2. b := 3. c := a + b. ^ c * 6' return: 30",
  74010. referencedClasses: [],
  74011. //>>excludeEnd("ide");
  74012. messageSends: ["should:return:"]
  74013. }),
  74014. $globals.CodeGeneratorTest);
  74015. $core.addMethod(
  74016. $core.method({
  74017. selector: "testMutableLiterals",
  74018. protocol: 'tests',
  74019. fn: function (){
  74020. var self=this;
  74021. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74022. return $core.withContext(function($ctx1) {
  74023. //>>excludeEnd("ctx");
  74024. self._should_return_("foo ^ #( 1 2 ) at: 1 put: 3; yourself",[(3), (2)]);
  74025. return self;
  74026. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74027. }, function($ctx1) {$ctx1.fill(self,"testMutableLiterals",{},$globals.CodeGeneratorTest)});
  74028. //>>excludeEnd("ctx");
  74029. },
  74030. //>>excludeStart("ide", pragmas.excludeIdeData);
  74031. args: [],
  74032. source: "testMutableLiterals\x0a\x09\x22Mutable literals must be aliased in cascades.\x0a\x09See https://github.com/amber-smalltalk/amber/issues/428\x22\x0a\x09\x0a\x09self \x0a\x09\x09should: 'foo ^ #( 1 2 ) at: 1 put: 3; yourself' \x0a\x09\x09return: #(3 2)",
  74033. referencedClasses: [],
  74034. //>>excludeEnd("ide");
  74035. messageSends: ["should:return:"]
  74036. }),
  74037. $globals.CodeGeneratorTest);
  74038. $core.addMethod(
  74039. $core.method({
  74040. selector: "testNestedIfTrue",
  74041. protocol: 'tests',
  74042. fn: function (){
  74043. var self=this;
  74044. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74045. return $core.withContext(function($ctx1) {
  74046. //>>excludeEnd("ctx");
  74047. self._should_return_("foo ^ true ifTrue: [ false ifFalse: [ 1 ] ]",(1));
  74048. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74049. $ctx1.sendIdx["should:return:"]=1;
  74050. //>>excludeEnd("ctx");
  74051. self._should_return_("foo ^ true ifTrue: [ false ifTrue: [ 1 ] ]",nil);
  74052. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74053. $ctx1.sendIdx["should:return:"]=2;
  74054. //>>excludeEnd("ctx");
  74055. self._should_return_("foo true ifTrue: [ false ifFalse: [ ^ 1 ] ]",(1));
  74056. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74057. $ctx1.sendIdx["should:return:"]=3;
  74058. //>>excludeEnd("ctx");
  74059. self._should_return_("foo true ifTrue: [ false ifTrue: [ ^ 1 ] ]",self["@receiver"]);
  74060. return self;
  74061. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74062. }, function($ctx1) {$ctx1.fill(self,"testNestedIfTrue",{},$globals.CodeGeneratorTest)});
  74063. //>>excludeEnd("ctx");
  74064. },
  74065. //>>excludeStart("ide", pragmas.excludeIdeData);
  74066. args: [],
  74067. 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.",
  74068. referencedClasses: [],
  74069. //>>excludeEnd("ide");
  74070. messageSends: ["should:return:"]
  74071. }),
  74072. $globals.CodeGeneratorTest);
  74073. $core.addMethod(
  74074. $core.method({
  74075. selector: "testNestedSends",
  74076. protocol: 'tests',
  74077. fn: function (){
  74078. var self=this;
  74079. function $Point(){return $globals.Point||(typeof Point=="undefined"?nil:Point)}
  74080. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74081. return $core.withContext(function($ctx1) {
  74082. //>>excludeEnd("ctx");
  74083. self._should_return_("foo ^ (Point x: (Point x: 2 y: 3) y: 4) asString",$recv($recv($Point())._x_y_((2).__at((3)),(4)))._asString());
  74084. return self;
  74085. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74086. }, function($ctx1) {$ctx1.fill(self,"testNestedSends",{},$globals.CodeGeneratorTest)});
  74087. //>>excludeEnd("ctx");
  74088. },
  74089. //>>excludeStart("ide", pragmas.excludeIdeData);
  74090. args: [],
  74091. source: "testNestedSends\x0a\x09self should: 'foo ^ (Point x: (Point x: 2 y: 3) y: 4) asString' return: (Point x: (2@3) y: 4) asString",
  74092. referencedClasses: ["Point"],
  74093. //>>excludeEnd("ide");
  74094. messageSends: ["should:return:", "asString", "x:y:", "@"]
  74095. }),
  74096. $globals.CodeGeneratorTest);
  74097. $core.addMethod(
  74098. $core.method({
  74099. selector: "testNonLocalReturn",
  74100. protocol: 'tests',
  74101. fn: function (){
  74102. var self=this;
  74103. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74104. return $core.withContext(function($ctx1) {
  74105. //>>excludeEnd("ctx");
  74106. self._should_return_("foo [ ^ 1 ] value",(1));
  74107. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74108. $ctx1.sendIdx["should:return:"]=1;
  74109. //>>excludeEnd("ctx");
  74110. self._should_return_("foo [ ^ 1 + 1 ] value",(2));
  74111. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74112. $ctx1.sendIdx["should:return:"]=2;
  74113. //>>excludeEnd("ctx");
  74114. self._should_return_("foo | a b | a := 1. b := 2. [ ^ a + b ] value. self halt",(3));
  74115. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74116. $ctx1.sendIdx["should:return:"]=3;
  74117. //>>excludeEnd("ctx");
  74118. self._should_return_("foo [ :x | ^ x + x ] value: 4. ^ 2",(8));
  74119. return self;
  74120. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74121. }, function($ctx1) {$ctx1.fill(self,"testNonLocalReturn",{},$globals.CodeGeneratorTest)});
  74122. //>>excludeEnd("ctx");
  74123. },
  74124. //>>excludeStart("ide", pragmas.excludeIdeData);
  74125. args: [],
  74126. 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",
  74127. referencedClasses: [],
  74128. //>>excludeEnd("ide");
  74129. messageSends: ["should:return:"]
  74130. }),
  74131. $globals.CodeGeneratorTest);
  74132. $core.addMethod(
  74133. $core.method({
  74134. selector: "testPascalCaseGlobal",
  74135. protocol: 'tests',
  74136. fn: function (){
  74137. var self=this;
  74138. function $Smalltalk(){return $globals.Smalltalk||(typeof Smalltalk=="undefined"?nil:Smalltalk)}
  74139. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74140. return $core.withContext(function($ctx1) {
  74141. //>>excludeEnd("ctx");
  74142. self._should_return_("foo ^Object",$recv($recv($Smalltalk())._globals())._at_("Object"));
  74143. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74144. $ctx1.sendIdx["should:return:"]=1;
  74145. //>>excludeEnd("ctx");
  74146. self._should_return_("foo ^NonExistent",nil);
  74147. return self;
  74148. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74149. }, function($ctx1) {$ctx1.fill(self,"testPascalCaseGlobal",{},$globals.CodeGeneratorTest)});
  74150. //>>excludeEnd("ctx");
  74151. },
  74152. //>>excludeStart("ide", pragmas.excludeIdeData);
  74153. args: [],
  74154. source: "testPascalCaseGlobal\x0a\x09self should: 'foo ^Object' return: (Smalltalk globals at: 'Object').\x0a\x09self should: 'foo ^NonExistent' return: nil",
  74155. referencedClasses: ["Smalltalk"],
  74156. //>>excludeEnd("ide");
  74157. messageSends: ["should:return:", "at:", "globals"]
  74158. }),
  74159. $globals.CodeGeneratorTest);
  74160. $core.addMethod(
  74161. $core.method({
  74162. selector: "testSendReceiverAndArgumentsOrdered",
  74163. protocol: 'tests',
  74164. fn: function (){
  74165. var self=this;
  74166. function $Array(){return $globals.Array||(typeof Array=="undefined"?nil:Array)}
  74167. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74168. return $core.withContext(function($ctx1) {
  74169. //>>excludeEnd("ctx");
  74170. self._should_return_("foo\x0a\x09| x |\x0a\x09x := 1.\x0a\x09^ Array with: x with: (true ifTrue: [ x := 2 ])\x0a",[(1), (2)]);
  74171. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74172. $ctx1.sendIdx["should:return:"]=1;
  74173. //>>excludeEnd("ctx");
  74174. self._should_return_("foo\x0a\x09| x |\x0a\x09x := Array.\x0a\x09^ x with: x with: (true ifTrue: [ x := 2 ])\x0a",[$Array(),(2)]);
  74175. return self;
  74176. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74177. }, function($ctx1) {$ctx1.fill(self,"testSendReceiverAndArgumentsOrdered",{},$globals.CodeGeneratorTest)});
  74178. //>>excludeEnd("ctx");
  74179. },
  74180. //>>excludeStart("ide", pragmas.excludeIdeData);
  74181. args: [],
  74182. 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}.",
  74183. referencedClasses: ["Array"],
  74184. //>>excludeEnd("ide");
  74185. messageSends: ["should:return:"]
  74186. }),
  74187. $globals.CodeGeneratorTest);
  74188. $core.addMethod(
  74189. $core.method({
  74190. selector: "testSuperSend",
  74191. protocol: 'tests',
  74192. fn: function (){
  74193. var self=this;
  74194. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74195. return $core.withContext(function($ctx1) {
  74196. //>>excludeEnd("ctx");
  74197. self._should_receiver_return_("foo ^ super isBoolean",true,false);
  74198. return self;
  74199. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74200. }, function($ctx1) {$ctx1.fill(self,"testSuperSend",{},$globals.CodeGeneratorTest)});
  74201. //>>excludeEnd("ctx");
  74202. },
  74203. //>>excludeStart("ide", pragmas.excludeIdeData);
  74204. args: [],
  74205. source: "testSuperSend\x0a\x09self \x0a\x09\x09should: 'foo ^ super isBoolean' \x0a\x09\x09receiver: true\x0a\x09\x09return: false",
  74206. referencedClasses: [],
  74207. //>>excludeEnd("ide");
  74208. messageSends: ["should:receiver:return:"]
  74209. }),
  74210. $globals.CodeGeneratorTest);
  74211. $core.addMethod(
  74212. $core.method({
  74213. selector: "testTempVariables",
  74214. protocol: 'tests',
  74215. fn: function (){
  74216. var self=this;
  74217. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74218. return $core.withContext(function($ctx1) {
  74219. //>>excludeEnd("ctx");
  74220. self._should_return_("foo | a | ^ a",nil);
  74221. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74222. $ctx1.sendIdx["should:return:"]=1;
  74223. //>>excludeEnd("ctx");
  74224. self._should_return_("foo | AVariable | ^ AVariable",nil);
  74225. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74226. $ctx1.sendIdx["should:return:"]=2;
  74227. //>>excludeEnd("ctx");
  74228. self._should_return_("foo | a b c | ^ c",nil);
  74229. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74230. $ctx1.sendIdx["should:return:"]=3;
  74231. //>>excludeEnd("ctx");
  74232. self._should_return_("foo | a | [ | d | ^ d ] value",nil);
  74233. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74234. $ctx1.sendIdx["should:return:"]=4;
  74235. //>>excludeEnd("ctx");
  74236. self._should_return_("foo | a | a:= 1. ^ a",(1));
  74237. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74238. $ctx1.sendIdx["should:return:"]=5;
  74239. //>>excludeEnd("ctx");
  74240. self._should_return_("foo | AVariable | AVariable := 1. ^ AVariable",(1));
  74241. return self;
  74242. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74243. }, function($ctx1) {$ctx1.fill(self,"testTempVariables",{},$globals.CodeGeneratorTest)});
  74244. //>>excludeEnd("ctx");
  74245. },
  74246. //>>excludeStart("ide", pragmas.excludeIdeData);
  74247. args: [],
  74248. 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.",
  74249. referencedClasses: [],
  74250. //>>excludeEnd("ide");
  74251. messageSends: ["should:return:"]
  74252. }),
  74253. $globals.CodeGeneratorTest);
  74254. $core.addMethod(
  74255. $core.method({
  74256. selector: "testThisContext",
  74257. protocol: 'tests',
  74258. fn: function (){
  74259. var self=this;
  74260. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74261. return $core.withContext(function($ctx1) {
  74262. //>>excludeEnd("ctx");
  74263. self._should_return_("foo ^ [ thisContext ] value outerContext == thisContext",true);
  74264. return self;
  74265. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74266. }, function($ctx1) {$ctx1.fill(self,"testThisContext",{},$globals.CodeGeneratorTest)});
  74267. //>>excludeEnd("ctx");
  74268. },
  74269. //>>excludeStart("ide", pragmas.excludeIdeData);
  74270. args: [],
  74271. source: "testThisContext\x0a\x09self should: 'foo ^ [ thisContext ] value outerContext == thisContext' return: true",
  74272. referencedClasses: [],
  74273. //>>excludeEnd("ide");
  74274. messageSends: ["should:return:"]
  74275. }),
  74276. $globals.CodeGeneratorTest);
  74277. $core.addMethod(
  74278. $core.method({
  74279. selector: "testifFalse",
  74280. protocol: 'tests',
  74281. fn: function (){
  74282. var self=this;
  74283. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74284. return $core.withContext(function($ctx1) {
  74285. //>>excludeEnd("ctx");
  74286. self._should_return_("foo true ifFalse: [ ^ 1 ]",self["@receiver"]);
  74287. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74288. $ctx1.sendIdx["should:return:"]=1;
  74289. //>>excludeEnd("ctx");
  74290. self._should_return_("foo false ifFalse: [ ^ 2 ]",(2));
  74291. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74292. $ctx1.sendIdx["should:return:"]=2;
  74293. //>>excludeEnd("ctx");
  74294. self._should_return_("foo ^ true ifFalse: [ 1 ]",nil);
  74295. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74296. $ctx1.sendIdx["should:return:"]=3;
  74297. //>>excludeEnd("ctx");
  74298. self._should_return_("foo ^ false ifFalse: [ 2 ]",(2));
  74299. return self;
  74300. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74301. }, function($ctx1) {$ctx1.fill(self,"testifFalse",{},$globals.CodeGeneratorTest)});
  74302. //>>excludeEnd("ctx");
  74303. },
  74304. //>>excludeStart("ide", pragmas.excludeIdeData);
  74305. args: [],
  74306. 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.",
  74307. referencedClasses: [],
  74308. //>>excludeEnd("ide");
  74309. messageSends: ["should:return:"]
  74310. }),
  74311. $globals.CodeGeneratorTest);
  74312. $core.addMethod(
  74313. $core.method({
  74314. selector: "testifFalseIfTrue",
  74315. protocol: 'tests',
  74316. fn: function (){
  74317. var self=this;
  74318. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74319. return $core.withContext(function($ctx1) {
  74320. //>>excludeEnd("ctx");
  74321. self._should_return_("foo true ifFalse: [ ^ 1 ] ifTrue: [ ^ 2 ]",(2));
  74322. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74323. $ctx1.sendIdx["should:return:"]=1;
  74324. //>>excludeEnd("ctx");
  74325. self._should_return_("foo false ifFalse: [ ^ 2 ] ifTrue: [ ^1 ]",(2));
  74326. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74327. $ctx1.sendIdx["should:return:"]=2;
  74328. //>>excludeEnd("ctx");
  74329. self._should_return_("foo ^ true ifFalse: [ 1 ] ifTrue: [ 2 ]",(2));
  74330. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74331. $ctx1.sendIdx["should:return:"]=3;
  74332. //>>excludeEnd("ctx");
  74333. self._should_return_("foo ^ false ifFalse: [ 2 ] ifTrue: [ 1 ]",(2));
  74334. return self;
  74335. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74336. }, function($ctx1) {$ctx1.fill(self,"testifFalseIfTrue",{},$globals.CodeGeneratorTest)});
  74337. //>>excludeEnd("ctx");
  74338. },
  74339. //>>excludeStart("ide", pragmas.excludeIdeData);
  74340. args: [],
  74341. 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.",
  74342. referencedClasses: [],
  74343. //>>excludeEnd("ide");
  74344. messageSends: ["should:return:"]
  74345. }),
  74346. $globals.CodeGeneratorTest);
  74347. $core.addMethod(
  74348. $core.method({
  74349. selector: "testifNil",
  74350. protocol: 'tests',
  74351. fn: function (){
  74352. var self=this;
  74353. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74354. return $core.withContext(function($ctx1) {
  74355. //>>excludeEnd("ctx");
  74356. self._should_return_("foo ^ 1 ifNil: [ 2 ]",(1));
  74357. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74358. $ctx1.sendIdx["should:return:"]=1;
  74359. //>>excludeEnd("ctx");
  74360. self._should_return_("foo ^ nil ifNil: [ 2 ]",(2));
  74361. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74362. $ctx1.sendIdx["should:return:"]=2;
  74363. //>>excludeEnd("ctx");
  74364. self._should_return_("foo 1 ifNil: [ ^ 2 ]",self["@receiver"]);
  74365. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74366. $ctx1.sendIdx["should:return:"]=3;
  74367. //>>excludeEnd("ctx");
  74368. self._should_return_("foo nil ifNil: [ ^ 2 ]",(2));
  74369. return self;
  74370. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74371. }, function($ctx1) {$ctx1.fill(self,"testifNil",{},$globals.CodeGeneratorTest)});
  74372. //>>excludeEnd("ctx");
  74373. },
  74374. //>>excludeStart("ide", pragmas.excludeIdeData);
  74375. args: [],
  74376. 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.",
  74377. referencedClasses: [],
  74378. //>>excludeEnd("ide");
  74379. messageSends: ["should:return:"]
  74380. }),
  74381. $globals.CodeGeneratorTest);
  74382. $core.addMethod(
  74383. $core.method({
  74384. selector: "testifNilIfNotNil",
  74385. protocol: 'tests',
  74386. fn: function (){
  74387. var self=this;
  74388. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74389. return $core.withContext(function($ctx1) {
  74390. //>>excludeEnd("ctx");
  74391. self._should_return_("foo ^ 1 ifNil: [ 2 ] ifNotNil: [ 3 ]",(3));
  74392. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74393. $ctx1.sendIdx["should:return:"]=1;
  74394. //>>excludeEnd("ctx");
  74395. self._should_return_("foo ^ nil ifNil: [ 2 ] ifNotNil: [ 3 ]",(2));
  74396. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74397. $ctx1.sendIdx["should:return:"]=2;
  74398. //>>excludeEnd("ctx");
  74399. self._should_return_("foo 1 ifNil: [ ^ 2 ] ifNotNil: [ ^3 ]",(3));
  74400. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74401. $ctx1.sendIdx["should:return:"]=3;
  74402. //>>excludeEnd("ctx");
  74403. self._should_return_("foo nil ifNil: [ ^ 2 ] ifNotNil: [ ^3 ]",(2));
  74404. return self;
  74405. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74406. }, function($ctx1) {$ctx1.fill(self,"testifNilIfNotNil",{},$globals.CodeGeneratorTest)});
  74407. //>>excludeEnd("ctx");
  74408. },
  74409. //>>excludeStart("ide", pragmas.excludeIdeData);
  74410. args: [],
  74411. 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.",
  74412. referencedClasses: [],
  74413. //>>excludeEnd("ide");
  74414. messageSends: ["should:return:"]
  74415. }),
  74416. $globals.CodeGeneratorTest);
  74417. $core.addMethod(
  74418. $core.method({
  74419. selector: "testifNotNil",
  74420. protocol: 'tests',
  74421. fn: function (){
  74422. var self=this;
  74423. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74424. return $core.withContext(function($ctx1) {
  74425. //>>excludeEnd("ctx");
  74426. self._should_return_("foo ^ 1 ifNotNil: [ 2 ]",(2));
  74427. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74428. $ctx1.sendIdx["should:return:"]=1;
  74429. //>>excludeEnd("ctx");
  74430. self._should_return_("foo ^ nil ifNotNil: [ 2 ]",nil);
  74431. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74432. $ctx1.sendIdx["should:return:"]=2;
  74433. //>>excludeEnd("ctx");
  74434. self._should_return_("foo 1 ifNotNil: [ ^ 2 ]",(2));
  74435. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74436. $ctx1.sendIdx["should:return:"]=3;
  74437. //>>excludeEnd("ctx");
  74438. self._should_return_("foo nil ifNotNil: [ ^ 2 ]",self["@receiver"]);
  74439. return self;
  74440. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74441. }, function($ctx1) {$ctx1.fill(self,"testifNotNil",{},$globals.CodeGeneratorTest)});
  74442. //>>excludeEnd("ctx");
  74443. },
  74444. //>>excludeStart("ide", pragmas.excludeIdeData);
  74445. args: [],
  74446. 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.",
  74447. referencedClasses: [],
  74448. //>>excludeEnd("ide");
  74449. messageSends: ["should:return:"]
  74450. }),
  74451. $globals.CodeGeneratorTest);
  74452. $core.addMethod(
  74453. $core.method({
  74454. selector: "testifNotNilWithArgument",
  74455. protocol: 'tests',
  74456. fn: function (){
  74457. var self=this;
  74458. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74459. return $core.withContext(function($ctx1) {
  74460. //>>excludeEnd("ctx");
  74461. self._should_return_("foo ^ 1 ifNotNil: [ :val | val + 2 ]",(3));
  74462. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74463. $ctx1.sendIdx["should:return:"]=1;
  74464. //>>excludeEnd("ctx");
  74465. self._should_return_("foo ^ nil ifNotNil: [ :val | val + 2 ]",nil);
  74466. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74467. $ctx1.sendIdx["should:return:"]=2;
  74468. //>>excludeEnd("ctx");
  74469. self._should_return_("foo ^ 1 ifNil: [ 5 ] ifNotNil: [ :val | val + 2 ]",(3));
  74470. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74471. $ctx1.sendIdx["should:return:"]=3;
  74472. //>>excludeEnd("ctx");
  74473. self._should_return_("foo ^ nil ifNil: [ 5 ] ifNotNil: [ :val | val + 2 ]",(5));
  74474. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74475. $ctx1.sendIdx["should:return:"]=4;
  74476. //>>excludeEnd("ctx");
  74477. self._should_return_("foo ^ 1 ifNotNil: [ :val | val + 2 ] ifNil: [ 5 ]",(3));
  74478. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74479. $ctx1.sendIdx["should:return:"]=5;
  74480. //>>excludeEnd("ctx");
  74481. self._should_return_("foo ^ nil ifNotNil: [ :val | val + 2 ] ifNil: [ 5 ]",(5));
  74482. return self;
  74483. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74484. }, function($ctx1) {$ctx1.fill(self,"testifNotNilWithArgument",{},$globals.CodeGeneratorTest)});
  74485. //>>excludeEnd("ctx");
  74486. },
  74487. //>>excludeStart("ide", pragmas.excludeIdeData);
  74488. args: [],
  74489. 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",
  74490. referencedClasses: [],
  74491. //>>excludeEnd("ide");
  74492. messageSends: ["should:return:"]
  74493. }),
  74494. $globals.CodeGeneratorTest);
  74495. $core.addMethod(
  74496. $core.method({
  74497. selector: "testifTrue",
  74498. protocol: 'tests',
  74499. fn: function (){
  74500. var self=this;
  74501. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74502. return $core.withContext(function($ctx1) {
  74503. //>>excludeEnd("ctx");
  74504. self._should_return_("foo false ifTrue: [ ^ 1 ]",self["@receiver"]);
  74505. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74506. $ctx1.sendIdx["should:return:"]=1;
  74507. //>>excludeEnd("ctx");
  74508. self._should_return_("foo true ifTrue: [ ^ 2 ]",(2));
  74509. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74510. $ctx1.sendIdx["should:return:"]=2;
  74511. //>>excludeEnd("ctx");
  74512. self._should_return_("foo ^ false ifTrue: [ 1 ]",nil);
  74513. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74514. $ctx1.sendIdx["should:return:"]=3;
  74515. //>>excludeEnd("ctx");
  74516. self._should_return_("foo ^ true ifTrue: [ 2 ]",(2));
  74517. return self;
  74518. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74519. }, function($ctx1) {$ctx1.fill(self,"testifTrue",{},$globals.CodeGeneratorTest)});
  74520. //>>excludeEnd("ctx");
  74521. },
  74522. //>>excludeStart("ide", pragmas.excludeIdeData);
  74523. args: [],
  74524. 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.",
  74525. referencedClasses: [],
  74526. //>>excludeEnd("ide");
  74527. messageSends: ["should:return:"]
  74528. }),
  74529. $globals.CodeGeneratorTest);
  74530. $core.addMethod(
  74531. $core.method({
  74532. selector: "testifTrueIfFalse",
  74533. protocol: 'tests',
  74534. fn: function (){
  74535. var self=this;
  74536. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74537. return $core.withContext(function($ctx1) {
  74538. //>>excludeEnd("ctx");
  74539. self._should_return_("foo false ifTrue: [ ^ 1 ] ifFalse: [ ^2 ]",(2));
  74540. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74541. $ctx1.sendIdx["should:return:"]=1;
  74542. //>>excludeEnd("ctx");
  74543. self._should_return_("foo true ifTrue: [ ^ 1 ] ifFalse: [ ^ 2 ]",(1));
  74544. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74545. $ctx1.sendIdx["should:return:"]=2;
  74546. //>>excludeEnd("ctx");
  74547. self._should_return_("foo ^ false ifTrue: [ 2 ] ifFalse: [ 1 ]",(1));
  74548. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74549. $ctx1.sendIdx["should:return:"]=3;
  74550. //>>excludeEnd("ctx");
  74551. self._should_return_("foo ^ true ifTrue: [ 2 ] ifFalse: [ 1 ]",(2));
  74552. return self;
  74553. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74554. }, function($ctx1) {$ctx1.fill(self,"testifTrueIfFalse",{},$globals.CodeGeneratorTest)});
  74555. //>>excludeEnd("ctx");
  74556. },
  74557. //>>excludeStart("ide", pragmas.excludeIdeData);
  74558. args: [],
  74559. 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.",
  74560. referencedClasses: [],
  74561. //>>excludeEnd("ide");
  74562. messageSends: ["should:return:"]
  74563. }),
  74564. $globals.CodeGeneratorTest);
  74565. $core.addClass('ASTInterpreterTest', $globals.CodeGeneratorTest, [], 'Compiler-Tests');
  74566. $core.addMethod(
  74567. $core.method({
  74568. selector: "analyze:forClass:",
  74569. protocol: 'parsing',
  74570. fn: function (aNode,aClass){
  74571. var self=this;
  74572. function $SemanticAnalyzer(){return $globals.SemanticAnalyzer||(typeof SemanticAnalyzer=="undefined"?nil:SemanticAnalyzer)}
  74573. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74574. return $core.withContext(function($ctx1) {
  74575. //>>excludeEnd("ctx");
  74576. $recv($recv($SemanticAnalyzer())._on_(aClass))._visit_(aNode);
  74577. return aNode;
  74578. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74579. }, function($ctx1) {$ctx1.fill(self,"analyze:forClass:",{aNode:aNode,aClass:aClass},$globals.ASTInterpreterTest)});
  74580. //>>excludeEnd("ctx");
  74581. },
  74582. //>>excludeStart("ide", pragmas.excludeIdeData);
  74583. args: ["aNode", "aClass"],
  74584. source: "analyze: aNode forClass: aClass\x0a\x09(SemanticAnalyzer on: aClass) visit: aNode.\x0a\x09^ aNode",
  74585. referencedClasses: ["SemanticAnalyzer"],
  74586. //>>excludeEnd("ide");
  74587. messageSends: ["visit:", "on:"]
  74588. }),
  74589. $globals.ASTInterpreterTest);
  74590. $core.addMethod(
  74591. $core.method({
  74592. selector: "interpret:receiver:withArguments:",
  74593. protocol: 'private',
  74594. fn: function (aString,anObject,aDictionary){
  74595. var self=this;
  74596. var ctx,ast,interpreter;
  74597. function $ASTInterpreter(){return $globals.ASTInterpreter||(typeof ASTInterpreter=="undefined"?nil:ASTInterpreter)}
  74598. function $AIContext(){return $globals.AIContext||(typeof AIContext=="undefined"?nil:AIContext)}
  74599. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74600. return $core.withContext(function($ctx1) {
  74601. //>>excludeEnd("ctx");
  74602. var $1,$2,$3,$5,$6,$4,$receiver;
  74603. interpreter=$recv($ASTInterpreter())._new();
  74604. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74605. $ctx1.sendIdx["new"]=1;
  74606. //>>excludeEnd("ctx");
  74607. ast=self._parse_forClass_(aString,$recv(anObject)._class());
  74608. $1=$recv($AIContext())._new();
  74609. $recv($1)._receiver_(anObject);
  74610. $recv($1)._interpreter_(interpreter);
  74611. $2=$recv($1)._yourself();
  74612. ctx=$2;
  74613. $3=$recv(ast)._sequenceNode();
  74614. if(($receiver = $3) == null || $receiver.isNil){
  74615. $3;
  74616. } else {
  74617. var sequence;
  74618. sequence=$receiver;
  74619. $recv($recv(sequence)._temps())._do_((function(each){
  74620. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74621. return $core.withContext(function($ctx2) {
  74622. //>>excludeEnd("ctx");
  74623. return $recv(ctx)._defineLocal_(each);
  74624. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74625. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,2)});
  74626. //>>excludeEnd("ctx");
  74627. }));
  74628. };
  74629. $recv(aDictionary)._keysAndValuesDo_((function(key,value){
  74630. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74631. return $core.withContext(function($ctx2) {
  74632. //>>excludeEnd("ctx");
  74633. return $recv(ctx)._localAt_put_(key,value);
  74634. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74635. }, function($ctx2) {$ctx2.fillBlock({key:key,value:value},$ctx1,3)});
  74636. //>>excludeEnd("ctx");
  74637. }));
  74638. $5=interpreter;
  74639. $recv($5)._context_(ctx);
  74640. $recv($5)._interpret_($recv(ast)._nextChild());
  74641. $recv($5)._proceed();
  74642. $6=$recv($5)._result();
  74643. $4=$6;
  74644. return $4;
  74645. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74646. }, function($ctx1) {$ctx1.fill(self,"interpret:receiver:withArguments:",{aString:aString,anObject:anObject,aDictionary:aDictionary,ctx:ctx,ast:ast,interpreter:interpreter},$globals.ASTInterpreterTest)});
  74647. //>>excludeEnd("ctx");
  74648. },
  74649. //>>excludeStart("ide", pragmas.excludeIdeData);
  74650. args: ["aString", "anObject", "aDictionary"],
  74651. source: "interpret: aString receiver: anObject withArguments: aDictionary\x0a\x09\x22The food is a methodNode. Interpret the sequenceNode only\x22\x0a\x09\x0a\x09| ctx ast interpreter |\x0a\x09\x0a\x09interpreter := ASTInterpreter new.\x0a\x09ast := self parse: aString forClass: anObject class.\x0a\x09\x0a\x09ctx := AIContext new\x0a\x09\x09receiver: anObject;\x0a\x09\x09interpreter: interpreter;\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\x09\x09\x0a\x09aDictionary keysAndValuesDo: [ :key :value |\x0a\x09\x09ctx localAt: key put: value ].\x0a\x09\x0a\x09^ interpreter\x0a\x09\x09context: ctx;\x0a\x09\x09interpret: ast nextChild;\x0a\x09\x09proceed;\x0a\x09\x09result",
  74652. referencedClasses: ["ASTInterpreter", "AIContext"],
  74653. //>>excludeEnd("ide");
  74654. messageSends: ["new", "parse:forClass:", "class", "receiver:", "interpreter:", "yourself", "ifNotNil:", "sequenceNode", "do:", "temps", "defineLocal:", "keysAndValuesDo:", "localAt:put:", "context:", "interpret:", "nextChild", "proceed", "result"]
  74655. }),
  74656. $globals.ASTInterpreterTest);
  74657. $core.addMethod(
  74658. $core.method({
  74659. selector: "parse:",
  74660. protocol: 'parsing',
  74661. fn: function (aString){
  74662. var self=this;
  74663. function $Smalltalk(){return $globals.Smalltalk||(typeof Smalltalk=="undefined"?nil:Smalltalk)}
  74664. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74665. return $core.withContext(function($ctx1) {
  74666. //>>excludeEnd("ctx");
  74667. var $1;
  74668. $1=$recv($Smalltalk())._parse_(aString);
  74669. return $1;
  74670. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74671. }, function($ctx1) {$ctx1.fill(self,"parse:",{aString:aString},$globals.ASTInterpreterTest)});
  74672. //>>excludeEnd("ctx");
  74673. },
  74674. //>>excludeStart("ide", pragmas.excludeIdeData);
  74675. args: ["aString"],
  74676. source: "parse: aString\x0a\x09^ Smalltalk parse: aString",
  74677. referencedClasses: ["Smalltalk"],
  74678. //>>excludeEnd("ide");
  74679. messageSends: ["parse:"]
  74680. }),
  74681. $globals.ASTInterpreterTest);
  74682. $core.addMethod(
  74683. $core.method({
  74684. selector: "parse:forClass:",
  74685. protocol: 'parsing',
  74686. fn: function (aString,aClass){
  74687. var self=this;
  74688. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74689. return $core.withContext(function($ctx1) {
  74690. //>>excludeEnd("ctx");
  74691. var $1;
  74692. $1=self._analyze_forClass_(self._parse_(aString),aClass);
  74693. return $1;
  74694. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74695. }, function($ctx1) {$ctx1.fill(self,"parse:forClass:",{aString:aString,aClass:aClass},$globals.ASTInterpreterTest)});
  74696. //>>excludeEnd("ctx");
  74697. },
  74698. //>>excludeStart("ide", pragmas.excludeIdeData);
  74699. args: ["aString", "aClass"],
  74700. source: "parse: aString forClass: aClass\x0a\x09^ self analyze: (self parse: aString) forClass: aClass",
  74701. referencedClasses: [],
  74702. //>>excludeEnd("ide");
  74703. messageSends: ["analyze:forClass:", "parse:"]
  74704. }),
  74705. $globals.ASTInterpreterTest);
  74706. $core.addMethod(
  74707. $core.method({
  74708. selector: "should:receiver:return:",
  74709. protocol: 'testing',
  74710. fn: function (aString,anObject,aResult){
  74711. var self=this;
  74712. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74713. return $core.withContext(function($ctx1) {
  74714. //>>excludeEnd("ctx");
  74715. var $1;
  74716. self["@receiver"]=anObject;
  74717. $1=self._assert_equals_(self._interpret_receiver_withArguments_(aString,self["@receiver"],$globals.HashedCollection._newFromPairs_([])),aResult);
  74718. return $1;
  74719. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74720. }, function($ctx1) {$ctx1.fill(self,"should:receiver:return:",{aString:aString,anObject:anObject,aResult:aResult},$globals.ASTInterpreterTest)});
  74721. //>>excludeEnd("ctx");
  74722. },
  74723. //>>excludeStart("ide", pragmas.excludeIdeData);
  74724. args: ["aString", "anObject", "aResult"],
  74725. source: "should: aString receiver: anObject return: aResult\x0a\x09receiver := anObject.\x0a\x09\x0a\x09^ self \x0a\x09\x09assert: (self interpret: aString receiver: receiver withArguments: #{})\x0a\x09\x09equals: aResult",
  74726. referencedClasses: [],
  74727. //>>excludeEnd("ide");
  74728. messageSends: ["assert:equals:", "interpret:receiver:withArguments:"]
  74729. }),
  74730. $globals.ASTInterpreterTest);
  74731. $core.addMethod(
  74732. $core.method({
  74733. selector: "should:return:",
  74734. protocol: 'testing',
  74735. fn: function (aString,anObject){
  74736. var self=this;
  74737. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74738. return $core.withContext(function($ctx1) {
  74739. //>>excludeEnd("ctx");
  74740. var $1;
  74741. $1=self._should_receiver_return_(aString,self["@receiver"],anObject);
  74742. return $1;
  74743. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74744. }, function($ctx1) {$ctx1.fill(self,"should:return:",{aString:aString,anObject:anObject},$globals.ASTInterpreterTest)});
  74745. //>>excludeEnd("ctx");
  74746. },
  74747. //>>excludeStart("ide", pragmas.excludeIdeData);
  74748. args: ["aString", "anObject"],
  74749. source: "should: aString return: anObject\x0a\x09^ self \x0a\x09\x09should: aString\x0a\x09\x09receiver: receiver\x0a\x09\x09return: anObject",
  74750. referencedClasses: [],
  74751. //>>excludeEnd("ide");
  74752. messageSends: ["should:receiver:return:"]
  74753. }),
  74754. $globals.ASTInterpreterTest);
  74755. $core.addClass('ASTDebuggerTest', $globals.ASTInterpreterTest, [], 'Compiler-Tests');
  74756. $core.addMethod(
  74757. $core.method({
  74758. selector: "interpret:receiver:withArguments:",
  74759. protocol: 'private',
  74760. fn: function (aString,anObject,aDictionary){
  74761. var self=this;
  74762. var ctx,ast,debugger_;
  74763. function $AIContext(){return $globals.AIContext||(typeof AIContext=="undefined"?nil:AIContext)}
  74764. function $ASTInterpreter(){return $globals.ASTInterpreter||(typeof ASTInterpreter=="undefined"?nil:ASTInterpreter)}
  74765. function $ASTDebugger(){return $globals.ASTDebugger||(typeof ASTDebugger=="undefined"?nil:ASTDebugger)}
  74766. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74767. return $core.withContext(function($ctx1) {
  74768. //>>excludeEnd("ctx");
  74769. var $1,$2,$3,$4,$6,$7,$5,$receiver;
  74770. $1=$recv($AIContext())._new();
  74771. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74772. $ctx1.sendIdx["new"]=1;
  74773. //>>excludeEnd("ctx");
  74774. $recv($1)._receiver_(anObject);
  74775. $recv($1)._interpreter_($recv($ASTInterpreter())._new());
  74776. $2=$recv($1)._yourself();
  74777. ctx=$2;
  74778. ast=self._parse_forClass_(aString,$recv(anObject)._class());
  74779. $3=$recv(ast)._sequenceNode();
  74780. if(($receiver = $3) == null || $receiver.isNil){
  74781. $3;
  74782. } else {
  74783. var sequence;
  74784. sequence=$receiver;
  74785. $recv($recv(sequence)._temps())._do_((function(each){
  74786. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74787. return $core.withContext(function($ctx2) {
  74788. //>>excludeEnd("ctx");
  74789. return $recv(ctx)._defineLocal_(each);
  74790. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74791. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,2)});
  74792. //>>excludeEnd("ctx");
  74793. }));
  74794. };
  74795. $recv(aDictionary)._keysAndValuesDo_((function(key,value){
  74796. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74797. return $core.withContext(function($ctx2) {
  74798. //>>excludeEnd("ctx");
  74799. return $recv(ctx)._localAt_put_(key,value);
  74800. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74801. }, function($ctx2) {$ctx2.fillBlock({key:key,value:value},$ctx1,3)});
  74802. //>>excludeEnd("ctx");
  74803. }));
  74804. $4=$recv(ctx)._interpreter();
  74805. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74806. $ctx1.sendIdx["interpreter"]=1;
  74807. //>>excludeEnd("ctx");
  74808. $recv($4)._context_(ctx);
  74809. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74810. $ctx1.sendIdx["context:"]=1;
  74811. //>>excludeEnd("ctx");
  74812. $recv($recv(ctx)._interpreter())._node_($recv(ast)._nextChild());
  74813. debugger_=$recv($ASTDebugger())._context_(ctx);
  74814. $6=debugger_;
  74815. $recv($6)._proceed();
  74816. $7=$recv($6)._result();
  74817. $5=$7;
  74818. return $5;
  74819. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74820. }, function($ctx1) {$ctx1.fill(self,"interpret:receiver:withArguments:",{aString:aString,anObject:anObject,aDictionary:aDictionary,ctx:ctx,ast:ast,debugger_:debugger_},$globals.ASTDebuggerTest)});
  74821. //>>excludeEnd("ctx");
  74822. },
  74823. //>>excludeStart("ide", pragmas.excludeIdeData);
  74824. args: ["aString", "anObject", "aDictionary"],
  74825. source: "interpret: aString receiver: anObject withArguments: aDictionary\x0a\x09| ctx ast debugger |\x0a\x09\x0a\x09ctx := AIContext new\x0a\x09\x09receiver: anObject;\x0a\x09\x09interpreter: ASTInterpreter new;\x0a\x09\x09yourself.\x0a\x09ast := self parse: aString forClass: anObject class.\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\x09\x0a\x09aDictionary keysAndValuesDo: [ :key :value |\x0a\x09\x09ctx localAt: key put: value ].\x0a\x09ctx interpreter context: ctx.\x0a\x09\x0a\x09ctx interpreter node: ast nextChild.\x0a\x09\x0a\x09debugger := ASTDebugger context: ctx.\x0a\x09\x0a\x09^ debugger \x0a\x09\x09proceed; \x0a\x09\x09result",
  74826. referencedClasses: ["AIContext", "ASTInterpreter", "ASTDebugger"],
  74827. //>>excludeEnd("ide");
  74828. messageSends: ["receiver:", "new", "interpreter:", "yourself", "parse:forClass:", "class", "ifNotNil:", "sequenceNode", "do:", "temps", "defineLocal:", "keysAndValuesDo:", "localAt:put:", "context:", "interpreter", "node:", "nextChild", "proceed", "result"]
  74829. }),
  74830. $globals.ASTDebuggerTest);
  74831. $core.addClass('InliningCodeGeneratorTest', $globals.CodeGeneratorTest, [], 'Compiler-Tests');
  74832. $core.addMethod(
  74833. $core.method({
  74834. selector: "codeGeneratorClass",
  74835. protocol: 'accessing',
  74836. fn: function (){
  74837. var self=this;
  74838. function $InliningCodeGenerator(){return $globals.InliningCodeGenerator||(typeof InliningCodeGenerator=="undefined"?nil:InliningCodeGenerator)}
  74839. return $InliningCodeGenerator();
  74840. },
  74841. //>>excludeStart("ide", pragmas.excludeIdeData);
  74842. args: [],
  74843. source: "codeGeneratorClass\x0a\x09^ InliningCodeGenerator",
  74844. referencedClasses: ["InliningCodeGenerator"],
  74845. //>>excludeEnd("ide");
  74846. messageSends: []
  74847. }),
  74848. $globals.InliningCodeGeneratorTest);
  74849. $core.addClass('ScopeVarTest', $globals.TestCase, [], 'Compiler-Tests');
  74850. $core.addMethod(
  74851. $core.method({
  74852. selector: "testClassRefVar",
  74853. protocol: 'tests',
  74854. fn: function (){
  74855. var self=this;
  74856. var node;
  74857. function $VariableNode(){return $globals.VariableNode||(typeof VariableNode=="undefined"?nil:VariableNode)}
  74858. function $SemanticAnalyzer(){return $globals.SemanticAnalyzer||(typeof SemanticAnalyzer=="undefined"?nil:SemanticAnalyzer)}
  74859. function $MethodLexicalScope(){return $globals.MethodLexicalScope||(typeof MethodLexicalScope=="undefined"?nil:MethodLexicalScope)}
  74860. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74861. return $core.withContext(function($ctx1) {
  74862. //>>excludeEnd("ctx");
  74863. var $1,$2,$3,$4;
  74864. $1=$recv($VariableNode())._new();
  74865. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74866. $ctx1.sendIdx["new"]=1;
  74867. //>>excludeEnd("ctx");
  74868. $recv($1)._value_("Object");
  74869. $2=$recv($1)._yourself();
  74870. node=$2;
  74871. $3=$recv($SemanticAnalyzer())._new();
  74872. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74873. $ctx1.sendIdx["new"]=2;
  74874. //>>excludeEnd("ctx");
  74875. $recv($3)._pushScope_($recv($MethodLexicalScope())._new());
  74876. $4=$recv($3)._visit_(node);
  74877. self._assert_($recv($recv(node)._binding())._isClassRefVar());
  74878. return self;
  74879. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74880. }, function($ctx1) {$ctx1.fill(self,"testClassRefVar",{node:node},$globals.ScopeVarTest)});
  74881. //>>excludeEnd("ctx");
  74882. },
  74883. //>>excludeStart("ide", pragmas.excludeIdeData);
  74884. args: [],
  74885. source: "testClassRefVar\x0a\x09| node |\x0a\x09node := VariableNode new\x0a\x09\x09value: 'Object';\x0a\x09\x09yourself.\x0a\x09SemanticAnalyzer new \x0a\x09\x09pushScope: MethodLexicalScope new;\x0a\x09\x09visit: node.\x0a\x09self assert: node binding isClassRefVar",
  74886. referencedClasses: ["VariableNode", "SemanticAnalyzer", "MethodLexicalScope"],
  74887. //>>excludeEnd("ide");
  74888. messageSends: ["value:", "new", "yourself", "pushScope:", "visit:", "assert:", "isClassRefVar", "binding"]
  74889. }),
  74890. $globals.ScopeVarTest);
  74891. $core.addMethod(
  74892. $core.method({
  74893. selector: "testInstanceVar",
  74894. protocol: 'tests',
  74895. fn: function (){
  74896. var self=this;
  74897. var node,scope;
  74898. function $VariableNode(){return $globals.VariableNode||(typeof VariableNode=="undefined"?nil:VariableNode)}
  74899. function $MethodLexicalScope(){return $globals.MethodLexicalScope||(typeof MethodLexicalScope=="undefined"?nil:MethodLexicalScope)}
  74900. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74901. return $core.withContext(function($ctx1) {
  74902. //>>excludeEnd("ctx");
  74903. var $1,$2;
  74904. $1=$recv($VariableNode())._new();
  74905. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74906. $ctx1.sendIdx["new"]=1;
  74907. //>>excludeEnd("ctx");
  74908. $recv($1)._value_("bzzz");
  74909. $2=$recv($1)._yourself();
  74910. node=$2;
  74911. scope=$recv($MethodLexicalScope())._new();
  74912. $recv(scope)._addIVar_("bzzz");
  74913. self._assert_($recv($recv(scope)._bindingFor_(node))._isInstanceVar());
  74914. return self;
  74915. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74916. }, function($ctx1) {$ctx1.fill(self,"testInstanceVar",{node:node,scope:scope},$globals.ScopeVarTest)});
  74917. //>>excludeEnd("ctx");
  74918. },
  74919. //>>excludeStart("ide", pragmas.excludeIdeData);
  74920. args: [],
  74921. source: "testInstanceVar\x0a\x09| node scope |\x0a\x09node := VariableNode new\x0a\x09\x09value: 'bzzz';\x0a\x09\x09yourself.\x0a\x09scope := MethodLexicalScope new.\x0a\x09scope addIVar: 'bzzz'.\x0a\x09self assert: (scope bindingFor: node) isInstanceVar",
  74922. referencedClasses: ["VariableNode", "MethodLexicalScope"],
  74923. //>>excludeEnd("ide");
  74924. messageSends: ["value:", "new", "yourself", "addIVar:", "assert:", "isInstanceVar", "bindingFor:"]
  74925. }),
  74926. $globals.ScopeVarTest);
  74927. $core.addMethod(
  74928. $core.method({
  74929. selector: "testPseudoVar",
  74930. protocol: 'tests',
  74931. fn: function (){
  74932. var self=this;
  74933. var node,pseudoVars;
  74934. function $VariableNode(){return $globals.VariableNode||(typeof VariableNode=="undefined"?nil:VariableNode)}
  74935. function $MethodLexicalScope(){return $globals.MethodLexicalScope||(typeof MethodLexicalScope=="undefined"?nil:MethodLexicalScope)}
  74936. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74937. return $core.withContext(function($ctx1) {
  74938. //>>excludeEnd("ctx");
  74939. var $1,$2;
  74940. pseudoVars=["self", "super", "true", "false", "nil"];
  74941. $recv(pseudoVars)._do_((function(each){
  74942. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74943. return $core.withContext(function($ctx2) {
  74944. //>>excludeEnd("ctx");
  74945. $1=$recv($VariableNode())._new();
  74946. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74947. $ctx2.sendIdx["new"]=1;
  74948. //>>excludeEnd("ctx");
  74949. $recv($1)._value_(each);
  74950. $2=$recv($1)._yourself();
  74951. node=$2;
  74952. node;
  74953. return self._assert_($recv($recv($recv($MethodLexicalScope())._new())._bindingFor_(node))._isPseudoVar());
  74954. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74955. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  74956. //>>excludeEnd("ctx");
  74957. }));
  74958. return self;
  74959. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74960. }, function($ctx1) {$ctx1.fill(self,"testPseudoVar",{node:node,pseudoVars:pseudoVars},$globals.ScopeVarTest)});
  74961. //>>excludeEnd("ctx");
  74962. },
  74963. //>>excludeStart("ide", pragmas.excludeIdeData);
  74964. args: [],
  74965. source: "testPseudoVar\x0a\x09| node pseudoVars |\x0a\x09pseudoVars := #('self' 'super' 'true' 'false' 'nil').\x0a\x09pseudoVars do: [:each |\x0a\x09\x09node := VariableNode new\x0a\x09\x09value: each;\x0a\x09\x09yourself.\x0a\x09\x09self assert: (MethodLexicalScope new bindingFor: node) isPseudoVar ]",
  74966. referencedClasses: ["VariableNode", "MethodLexicalScope"],
  74967. //>>excludeEnd("ide");
  74968. messageSends: ["do:", "value:", "new", "yourself", "assert:", "isPseudoVar", "bindingFor:"]
  74969. }),
  74970. $globals.ScopeVarTest);
  74971. $core.addMethod(
  74972. $core.method({
  74973. selector: "testTempVar",
  74974. protocol: 'tests',
  74975. fn: function (){
  74976. var self=this;
  74977. var node,scope;
  74978. function $VariableNode(){return $globals.VariableNode||(typeof VariableNode=="undefined"?nil:VariableNode)}
  74979. function $MethodLexicalScope(){return $globals.MethodLexicalScope||(typeof MethodLexicalScope=="undefined"?nil:MethodLexicalScope)}
  74980. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74981. return $core.withContext(function($ctx1) {
  74982. //>>excludeEnd("ctx");
  74983. var $1,$2;
  74984. $1=$recv($VariableNode())._new();
  74985. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74986. $ctx1.sendIdx["new"]=1;
  74987. //>>excludeEnd("ctx");
  74988. $recv($1)._value_("bzzz");
  74989. $2=$recv($1)._yourself();
  74990. node=$2;
  74991. scope=$recv($MethodLexicalScope())._new();
  74992. $recv(scope)._addTemp_("bzzz");
  74993. self._assert_($recv($recv(scope)._bindingFor_(node))._isTempVar());
  74994. return self;
  74995. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  74996. }, function($ctx1) {$ctx1.fill(self,"testTempVar",{node:node,scope:scope},$globals.ScopeVarTest)});
  74997. //>>excludeEnd("ctx");
  74998. },
  74999. //>>excludeStart("ide", pragmas.excludeIdeData);
  75000. args: [],
  75001. source: "testTempVar\x0a\x09| node scope |\x0a\x09node := VariableNode new\x0a\x09\x09value: 'bzzz';\x0a\x09\x09yourself.\x0a\x09scope := MethodLexicalScope new.\x0a\x09scope addTemp: 'bzzz'.\x0a\x09self assert: (scope bindingFor: node) isTempVar",
  75002. referencedClasses: ["VariableNode", "MethodLexicalScope"],
  75003. //>>excludeEnd("ide");
  75004. messageSends: ["value:", "new", "yourself", "addTemp:", "assert:", "isTempVar", "bindingFor:"]
  75005. }),
  75006. $globals.ScopeVarTest);
  75007. $core.addMethod(
  75008. $core.method({
  75009. selector: "testUnknownVar",
  75010. protocol: 'tests',
  75011. fn: function (){
  75012. var self=this;
  75013. var node;
  75014. function $VariableNode(){return $globals.VariableNode||(typeof VariableNode=="undefined"?nil:VariableNode)}
  75015. function $MethodLexicalScope(){return $globals.MethodLexicalScope||(typeof MethodLexicalScope=="undefined"?nil:MethodLexicalScope)}
  75016. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75017. return $core.withContext(function($ctx1) {
  75018. //>>excludeEnd("ctx");
  75019. var $1,$2;
  75020. $1=$recv($VariableNode())._new();
  75021. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75022. $ctx1.sendIdx["new"]=1;
  75023. //>>excludeEnd("ctx");
  75024. $recv($1)._value_("bzzz");
  75025. $2=$recv($1)._yourself();
  75026. node=$2;
  75027. self._assert_($recv($recv($recv($MethodLexicalScope())._new())._bindingFor_(node))._isNil());
  75028. return self;
  75029. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75030. }, function($ctx1) {$ctx1.fill(self,"testUnknownVar",{node:node},$globals.ScopeVarTest)});
  75031. //>>excludeEnd("ctx");
  75032. },
  75033. //>>excludeStart("ide", pragmas.excludeIdeData);
  75034. args: [],
  75035. source: "testUnknownVar\x0a\x09| node |\x0a\x09node := VariableNode new\x0a\x09\x09value: 'bzzz';\x0a\x09\x09yourself.\x0a\x09self assert: (MethodLexicalScope new bindingFor: node) isNil",
  75036. referencedClasses: ["VariableNode", "MethodLexicalScope"],
  75037. //>>excludeEnd("ide");
  75038. messageSends: ["value:", "new", "yourself", "assert:", "isNil", "bindingFor:"]
  75039. }),
  75040. $globals.ScopeVarTest);
  75041. $core.addClass('SemanticAnalyzerTest', $globals.TestCase, ['analyzer'], 'Compiler-Tests');
  75042. $core.addMethod(
  75043. $core.method({
  75044. selector: "setUp",
  75045. protocol: 'running',
  75046. fn: function (){
  75047. var self=this;
  75048. function $SemanticAnalyzer(){return $globals.SemanticAnalyzer||(typeof SemanticAnalyzer=="undefined"?nil:SemanticAnalyzer)}
  75049. function $Object(){return $globals.Object||(typeof Object=="undefined"?nil:Object)}
  75050. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75051. return $core.withContext(function($ctx1) {
  75052. //>>excludeEnd("ctx");
  75053. self["@analyzer"]=$recv($SemanticAnalyzer())._on_($Object());
  75054. return self;
  75055. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75056. }, function($ctx1) {$ctx1.fill(self,"setUp",{},$globals.SemanticAnalyzerTest)});
  75057. //>>excludeEnd("ctx");
  75058. },
  75059. //>>excludeStart("ide", pragmas.excludeIdeData);
  75060. args: [],
  75061. source: "setUp\x0a\x09analyzer := SemanticAnalyzer on: Object",
  75062. referencedClasses: ["SemanticAnalyzer", "Object"],
  75063. //>>excludeEnd("ide");
  75064. messageSends: ["on:"]
  75065. }),
  75066. $globals.SemanticAnalyzerTest);
  75067. $core.addMethod(
  75068. $core.method({
  75069. selector: "testAssignment",
  75070. protocol: 'tests',
  75071. fn: function (){
  75072. var self=this;
  75073. var src,ast;
  75074. function $Smalltalk(){return $globals.Smalltalk||(typeof Smalltalk=="undefined"?nil:Smalltalk)}
  75075. function $InvalidAssignmentError(){return $globals.InvalidAssignmentError||(typeof InvalidAssignmentError=="undefined"?nil:InvalidAssignmentError)}
  75076. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75077. return $core.withContext(function($ctx1) {
  75078. //>>excludeEnd("ctx");
  75079. src="foo self := 1";
  75080. ast=$recv($Smalltalk())._parse_(src);
  75081. self._should_raise_((function(){
  75082. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75083. return $core.withContext(function($ctx2) {
  75084. //>>excludeEnd("ctx");
  75085. return $recv(self["@analyzer"])._visit_(ast);
  75086. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75087. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  75088. //>>excludeEnd("ctx");
  75089. }),$InvalidAssignmentError());
  75090. return self;
  75091. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75092. }, function($ctx1) {$ctx1.fill(self,"testAssignment",{src:src,ast:ast},$globals.SemanticAnalyzerTest)});
  75093. //>>excludeEnd("ctx");
  75094. },
  75095. //>>excludeStart("ide", pragmas.excludeIdeData);
  75096. args: [],
  75097. 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",
  75098. referencedClasses: ["Smalltalk", "InvalidAssignmentError"],
  75099. //>>excludeEnd("ide");
  75100. messageSends: ["parse:", "should:raise:", "visit:"]
  75101. }),
  75102. $globals.SemanticAnalyzerTest);
  75103. $core.addMethod(
  75104. $core.method({
  75105. selector: "testNonLocalReturn",
  75106. protocol: 'tests',
  75107. fn: function (){
  75108. var self=this;
  75109. var src,ast;
  75110. function $Smalltalk(){return $globals.Smalltalk||(typeof Smalltalk=="undefined"?nil:Smalltalk)}
  75111. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75112. return $core.withContext(function($ctx1) {
  75113. //>>excludeEnd("ctx");
  75114. src="foo | a | a + 1. ^ a";
  75115. ast=$recv($Smalltalk())._parse_(src);
  75116. $recv(self["@analyzer"])._visit_(ast);
  75117. self._deny_($recv($recv(ast)._scope())._hasNonLocalReturn());
  75118. return self;
  75119. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75120. }, function($ctx1) {$ctx1.fill(self,"testNonLocalReturn",{src:src,ast:ast},$globals.SemanticAnalyzerTest)});
  75121. //>>excludeEnd("ctx");
  75122. },
  75123. //>>excludeStart("ide", pragmas.excludeIdeData);
  75124. args: [],
  75125. 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",
  75126. referencedClasses: ["Smalltalk"],
  75127. //>>excludeEnd("ide");
  75128. messageSends: ["parse:", "visit:", "deny:", "hasNonLocalReturn", "scope"]
  75129. }),
  75130. $globals.SemanticAnalyzerTest);
  75131. $core.addMethod(
  75132. $core.method({
  75133. selector: "testNonLocalReturn2",
  75134. protocol: 'tests',
  75135. fn: function (){
  75136. var self=this;
  75137. var src,ast;
  75138. function $Smalltalk(){return $globals.Smalltalk||(typeof Smalltalk=="undefined"?nil:Smalltalk)}
  75139. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75140. return $core.withContext(function($ctx1) {
  75141. //>>excludeEnd("ctx");
  75142. src="foo | a | a + 1. [ [ ^ a] ]";
  75143. ast=$recv($Smalltalk())._parse_(src);
  75144. $recv(self["@analyzer"])._visit_(ast);
  75145. self._assert_($recv($recv(ast)._scope())._hasNonLocalReturn());
  75146. return self;
  75147. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75148. }, function($ctx1) {$ctx1.fill(self,"testNonLocalReturn2",{src:src,ast:ast},$globals.SemanticAnalyzerTest)});
  75149. //>>excludeEnd("ctx");
  75150. },
  75151. //>>excludeStart("ide", pragmas.excludeIdeData);
  75152. args: [],
  75153. 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",
  75154. referencedClasses: ["Smalltalk"],
  75155. //>>excludeEnd("ide");
  75156. messageSends: ["parse:", "visit:", "assert:", "hasNonLocalReturn", "scope"]
  75157. }),
  75158. $globals.SemanticAnalyzerTest);
  75159. $core.addMethod(
  75160. $core.method({
  75161. selector: "testScope",
  75162. protocol: 'tests',
  75163. fn: function (){
  75164. var self=this;
  75165. var src,ast;
  75166. function $Smalltalk(){return $globals.Smalltalk||(typeof Smalltalk=="undefined"?nil:Smalltalk)}
  75167. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75168. return $core.withContext(function($ctx1) {
  75169. //>>excludeEnd("ctx");
  75170. var $4,$3,$2,$1;
  75171. src="foo | a | a + 1. [ | b | b := a ]";
  75172. ast=$recv($Smalltalk())._parse_(src);
  75173. $recv(self["@analyzer"])._visit_(ast);
  75174. $4=$recv($recv($recv(ast)._nodes())._first())._nodes();
  75175. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75176. $ctx1.sendIdx["nodes"]=1;
  75177. //>>excludeEnd("ctx");
  75178. $3=$recv($4)._last();
  75179. $2=$recv($3)._scope();
  75180. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75181. $ctx1.sendIdx["scope"]=1;
  75182. //>>excludeEnd("ctx");
  75183. $1=$recv($2).__eq_eq($recv(ast)._scope());
  75184. self._deny_($1);
  75185. return self;
  75186. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75187. }, function($ctx1) {$ctx1.fill(self,"testScope",{src:src,ast:ast},$globals.SemanticAnalyzerTest)});
  75188. //>>excludeEnd("ctx");
  75189. },
  75190. //>>excludeStart("ide", pragmas.excludeIdeData);
  75191. args: [],
  75192. 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 nodes first nodes last scope == ast scope.",
  75193. referencedClasses: ["Smalltalk"],
  75194. //>>excludeEnd("ide");
  75195. messageSends: ["parse:", "visit:", "deny:", "==", "scope", "last", "nodes", "first"]
  75196. }),
  75197. $globals.SemanticAnalyzerTest);
  75198. $core.addMethod(
  75199. $core.method({
  75200. selector: "testScope2",
  75201. protocol: 'tests',
  75202. fn: function (){
  75203. var self=this;
  75204. var src,ast;
  75205. function $Smalltalk(){return $globals.Smalltalk||(typeof Smalltalk=="undefined"?nil:Smalltalk)}
  75206. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75207. return $core.withContext(function($ctx1) {
  75208. //>>excludeEnd("ctx");
  75209. var $8,$7,$6,$5,$4,$3,$2,$1;
  75210. src="foo | a | a + 1. [ [ | b | b := a ] ]";
  75211. ast=$recv($Smalltalk())._parse_(src);
  75212. $recv(self["@analyzer"])._visit_(ast);
  75213. $8=$recv($recv($recv(ast)._nodes())._first())._nodes();
  75214. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75215. $ctx1.sendIdx["nodes"]=3;
  75216. //>>excludeEnd("ctx");
  75217. $7=$recv($8)._last();
  75218. $6=$recv($7)._nodes();
  75219. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75220. $ctx1.sendIdx["nodes"]=2;
  75221. //>>excludeEnd("ctx");
  75222. $5=$recv($6)._first();
  75223. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75224. $ctx1.sendIdx["first"]=2;
  75225. //>>excludeEnd("ctx");
  75226. $4=$recv($5)._nodes();
  75227. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75228. $ctx1.sendIdx["nodes"]=1;
  75229. //>>excludeEnd("ctx");
  75230. $3=$recv($4)._first();
  75231. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75232. $ctx1.sendIdx["first"]=1;
  75233. //>>excludeEnd("ctx");
  75234. $2=$recv($3)._scope();
  75235. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75236. $ctx1.sendIdx["scope"]=1;
  75237. //>>excludeEnd("ctx");
  75238. $1=$recv($2).__eq_eq($recv(ast)._scope());
  75239. self._deny_($1);
  75240. return self;
  75241. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75242. }, function($ctx1) {$ctx1.fill(self,"testScope2",{src:src,ast:ast},$globals.SemanticAnalyzerTest)});
  75243. //>>excludeEnd("ctx");
  75244. },
  75245. //>>excludeStart("ide", pragmas.excludeIdeData);
  75246. args: [],
  75247. 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 nodes first nodes last nodes first nodes first scope == ast scope.",
  75248. referencedClasses: ["Smalltalk"],
  75249. //>>excludeEnd("ide");
  75250. messageSends: ["parse:", "visit:", "deny:", "==", "scope", "first", "nodes", "last"]
  75251. }),
  75252. $globals.SemanticAnalyzerTest);
  75253. $core.addMethod(
  75254. $core.method({
  75255. selector: "testScopeLevel",
  75256. protocol: 'tests',
  75257. fn: function (){
  75258. var self=this;
  75259. var src,ast;
  75260. function $Smalltalk(){return $globals.Smalltalk||(typeof Smalltalk=="undefined"?nil:Smalltalk)}
  75261. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75262. return $core.withContext(function($ctx1) {
  75263. //>>excludeEnd("ctx");
  75264. var $2,$1,$10,$9,$8,$7,$6,$5,$4,$3;
  75265. src="foo | a | a + 1. [ [ | b | b := a ] ]";
  75266. ast=$recv($Smalltalk())._parse_(src);
  75267. $recv(self["@analyzer"])._visit_(ast);
  75268. $2=$recv(ast)._scope();
  75269. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75270. $ctx1.sendIdx["scope"]=1;
  75271. //>>excludeEnd("ctx");
  75272. $1=$recv($2)._scopeLevel();
  75273. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75274. $ctx1.sendIdx["scopeLevel"]=1;
  75275. //>>excludeEnd("ctx");
  75276. self._assert_equals_($1,(1));
  75277. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75278. $ctx1.sendIdx["assert:equals:"]=1;
  75279. //>>excludeEnd("ctx");
  75280. $10=$recv($recv($recv(ast)._nodes())._first())._nodes();
  75281. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75282. $ctx1.sendIdx["nodes"]=3;
  75283. //>>excludeEnd("ctx");
  75284. $9=$recv($10)._last();
  75285. $8=$recv($9)._nodes();
  75286. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75287. $ctx1.sendIdx["nodes"]=2;
  75288. //>>excludeEnd("ctx");
  75289. $7=$recv($8)._first();
  75290. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75291. $ctx1.sendIdx["first"]=2;
  75292. //>>excludeEnd("ctx");
  75293. $6=$recv($7)._nodes();
  75294. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75295. $ctx1.sendIdx["nodes"]=1;
  75296. //>>excludeEnd("ctx");
  75297. $5=$recv($6)._first();
  75298. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75299. $ctx1.sendIdx["first"]=1;
  75300. //>>excludeEnd("ctx");
  75301. $4=$recv($5)._scope();
  75302. $3=$recv($4)._scopeLevel();
  75303. self._assert_equals_($3,(3));
  75304. return self;
  75305. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75306. }, function($ctx1) {$ctx1.fill(self,"testScopeLevel",{src:src,ast:ast},$globals.SemanticAnalyzerTest)});
  75307. //>>excludeEnd("ctx");
  75308. },
  75309. //>>excludeStart("ide", pragmas.excludeIdeData);
  75310. args: [],
  75311. 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 nodes first nodes last nodes first nodes first scope scopeLevel equals: 3",
  75312. referencedClasses: ["Smalltalk"],
  75313. //>>excludeEnd("ide");
  75314. messageSends: ["parse:", "visit:", "assert:equals:", "scopeLevel", "scope", "first", "nodes", "last"]
  75315. }),
  75316. $globals.SemanticAnalyzerTest);
  75317. $core.addMethod(
  75318. $core.method({
  75319. selector: "testUnknownVariables",
  75320. protocol: 'tests',
  75321. fn: function (){
  75322. var self=this;
  75323. var src,ast;
  75324. function $Smalltalk(){return $globals.Smalltalk||(typeof Smalltalk=="undefined"?nil:Smalltalk)}
  75325. function $UnknownVariableError(){return $globals.UnknownVariableError||(typeof UnknownVariableError=="undefined"?nil:UnknownVariableError)}
  75326. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75327. return $core.withContext(function($ctx1) {
  75328. //>>excludeEnd("ctx");
  75329. src="foo | a | b + a";
  75330. ast=$recv($Smalltalk())._parse_(src);
  75331. self._should_raise_((function(){
  75332. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75333. return $core.withContext(function($ctx2) {
  75334. //>>excludeEnd("ctx");
  75335. return $recv(self["@analyzer"])._visit_(ast);
  75336. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75337. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  75338. //>>excludeEnd("ctx");
  75339. }),$UnknownVariableError());
  75340. return self;
  75341. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75342. }, function($ctx1) {$ctx1.fill(self,"testUnknownVariables",{src:src,ast:ast},$globals.SemanticAnalyzerTest)});
  75343. //>>excludeEnd("ctx");
  75344. },
  75345. //>>excludeStart("ide", pragmas.excludeIdeData);
  75346. args: [],
  75347. 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",
  75348. referencedClasses: ["Smalltalk", "UnknownVariableError"],
  75349. //>>excludeEnd("ide");
  75350. messageSends: ["parse:", "should:raise:", "visit:"]
  75351. }),
  75352. $globals.SemanticAnalyzerTest);
  75353. $core.addMethod(
  75354. $core.method({
  75355. selector: "testUnknownVariablesWithScope",
  75356. protocol: 'tests',
  75357. fn: function (){
  75358. var self=this;
  75359. var src,ast;
  75360. function $Smalltalk(){return $globals.Smalltalk||(typeof Smalltalk=="undefined"?nil:Smalltalk)}
  75361. function $UnknownVariableError(){return $globals.UnknownVariableError||(typeof UnknownVariableError=="undefined"?nil:UnknownVariableError)}
  75362. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75363. return $core.withContext(function($ctx1) {
  75364. //>>excludeEnd("ctx");
  75365. src="foo | a b | [ c + 1. [ a + 1. d + 1 ]]";
  75366. ast=$recv($Smalltalk())._parse_(src);
  75367. self._should_raise_((function(){
  75368. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75369. return $core.withContext(function($ctx2) {
  75370. //>>excludeEnd("ctx");
  75371. return $recv(self["@analyzer"])._visit_(ast);
  75372. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75373. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  75374. //>>excludeEnd("ctx");
  75375. }),$UnknownVariableError());
  75376. return self;
  75377. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75378. }, function($ctx1) {$ctx1.fill(self,"testUnknownVariablesWithScope",{src:src,ast:ast},$globals.SemanticAnalyzerTest)});
  75379. //>>excludeEnd("ctx");
  75380. },
  75381. //>>excludeStart("ide", pragmas.excludeIdeData);
  75382. args: [],
  75383. 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",
  75384. referencedClasses: ["Smalltalk", "UnknownVariableError"],
  75385. //>>excludeEnd("ide");
  75386. messageSends: ["parse:", "should:raise:", "visit:"]
  75387. }),
  75388. $globals.SemanticAnalyzerTest);
  75389. $core.addMethod(
  75390. $core.method({
  75391. selector: "testVariableShadowing",
  75392. protocol: 'tests',
  75393. fn: function (){
  75394. var self=this;
  75395. var src,ast;
  75396. function $Smalltalk(){return $globals.Smalltalk||(typeof Smalltalk=="undefined"?nil:Smalltalk)}
  75397. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75398. return $core.withContext(function($ctx1) {
  75399. //>>excludeEnd("ctx");
  75400. src="foo | a | a + 1";
  75401. ast=$recv($Smalltalk())._parse_(src);
  75402. $recv(self["@analyzer"])._visit_(ast);
  75403. return self;
  75404. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75405. }, function($ctx1) {$ctx1.fill(self,"testVariableShadowing",{src:src,ast:ast},$globals.SemanticAnalyzerTest)});
  75406. //>>excludeEnd("ctx");
  75407. },
  75408. //>>excludeStart("ide", pragmas.excludeIdeData);
  75409. args: [],
  75410. source: "testVariableShadowing\x0a\x09| src ast |\x0a\x09src := 'foo | a | a + 1'.\x0a\x09ast := Smalltalk parse: src.\x0a\x09analyzer visit: ast",
  75411. referencedClasses: ["Smalltalk"],
  75412. //>>excludeEnd("ide");
  75413. messageSends: ["parse:", "visit:"]
  75414. }),
  75415. $globals.SemanticAnalyzerTest);
  75416. $core.addMethod(
  75417. $core.method({
  75418. selector: "testVariableShadowing2",
  75419. protocol: 'tests',
  75420. fn: function (){
  75421. var self=this;
  75422. var src,ast;
  75423. function $Smalltalk(){return $globals.Smalltalk||(typeof Smalltalk=="undefined"?nil:Smalltalk)}
  75424. function $ShadowingVariableError(){return $globals.ShadowingVariableError||(typeof ShadowingVariableError=="undefined"?nil:ShadowingVariableError)}
  75425. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75426. return $core.withContext(function($ctx1) {
  75427. //>>excludeEnd("ctx");
  75428. src="foo | a | a + 1. [ | a | a := 2 ]";
  75429. ast=$recv($Smalltalk())._parse_(src);
  75430. self._should_raise_((function(){
  75431. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75432. return $core.withContext(function($ctx2) {
  75433. //>>excludeEnd("ctx");
  75434. return $recv(self["@analyzer"])._visit_(ast);
  75435. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75436. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  75437. //>>excludeEnd("ctx");
  75438. }),$ShadowingVariableError());
  75439. return self;
  75440. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75441. }, function($ctx1) {$ctx1.fill(self,"testVariableShadowing2",{src:src,ast:ast},$globals.SemanticAnalyzerTest)});
  75442. //>>excludeEnd("ctx");
  75443. },
  75444. //>>excludeStart("ide", pragmas.excludeIdeData);
  75445. args: [],
  75446. 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",
  75447. referencedClasses: ["Smalltalk", "ShadowingVariableError"],
  75448. //>>excludeEnd("ide");
  75449. messageSends: ["parse:", "should:raise:", "visit:"]
  75450. }),
  75451. $globals.SemanticAnalyzerTest);
  75452. $core.addMethod(
  75453. $core.method({
  75454. selector: "testVariableShadowing3",
  75455. protocol: 'tests',
  75456. fn: function (){
  75457. var self=this;
  75458. var src,ast;
  75459. function $Smalltalk(){return $globals.Smalltalk||(typeof Smalltalk=="undefined"?nil:Smalltalk)}
  75460. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75461. return $core.withContext(function($ctx1) {
  75462. //>>excludeEnd("ctx");
  75463. src="foo | a | a + 1. [ | b | b := 2 ]";
  75464. ast=$recv($Smalltalk())._parse_(src);
  75465. $recv(self["@analyzer"])._visit_(ast);
  75466. return self;
  75467. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75468. }, function($ctx1) {$ctx1.fill(self,"testVariableShadowing3",{src:src,ast:ast},$globals.SemanticAnalyzerTest)});
  75469. //>>excludeEnd("ctx");
  75470. },
  75471. //>>excludeStart("ide", pragmas.excludeIdeData);
  75472. args: [],
  75473. source: "testVariableShadowing3\x0a\x09| src ast |\x0a\x09src := 'foo | a | a + 1. [ | b | b := 2 ]'.\x0a\x09ast := Smalltalk parse: src.\x0a\x09analyzer visit: ast",
  75474. referencedClasses: ["Smalltalk"],
  75475. //>>excludeEnd("ide");
  75476. messageSends: ["parse:", "visit:"]
  75477. }),
  75478. $globals.SemanticAnalyzerTest);
  75479. $core.addMethod(
  75480. $core.method({
  75481. selector: "testVariableShadowing4",
  75482. protocol: 'tests',
  75483. fn: function (){
  75484. var self=this;
  75485. var src,ast;
  75486. function $Smalltalk(){return $globals.Smalltalk||(typeof Smalltalk=="undefined"?nil:Smalltalk)}
  75487. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75488. return $core.withContext(function($ctx1) {
  75489. //>>excludeEnd("ctx");
  75490. src="foo | a | a + 1. [ [ [ | b | b := 2 ] ] ]";
  75491. ast=$recv($Smalltalk())._parse_(src);
  75492. $recv(self["@analyzer"])._visit_(ast);
  75493. return self;
  75494. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75495. }, function($ctx1) {$ctx1.fill(self,"testVariableShadowing4",{src:src,ast:ast},$globals.SemanticAnalyzerTest)});
  75496. //>>excludeEnd("ctx");
  75497. },
  75498. //>>excludeStart("ide", pragmas.excludeIdeData);
  75499. args: [],
  75500. source: "testVariableShadowing4\x0a\x09| src ast |\x0a\x09src := 'foo | a | a + 1. [ [ [ | b | b := 2 ] ] ]'.\x0a\x09ast := Smalltalk parse: src.\x0a\x09analyzer visit: ast",
  75501. referencedClasses: ["Smalltalk"],
  75502. //>>excludeEnd("ide");
  75503. messageSends: ["parse:", "visit:"]
  75504. }),
  75505. $globals.SemanticAnalyzerTest);
  75506. $core.addMethod(
  75507. $core.method({
  75508. selector: "testVariableShadowing5",
  75509. protocol: 'tests',
  75510. fn: function (){
  75511. var self=this;
  75512. var src,ast;
  75513. function $Smalltalk(){return $globals.Smalltalk||(typeof Smalltalk=="undefined"?nil:Smalltalk)}
  75514. function $ShadowingVariableError(){return $globals.ShadowingVariableError||(typeof ShadowingVariableError=="undefined"?nil:ShadowingVariableError)}
  75515. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75516. return $core.withContext(function($ctx1) {
  75517. //>>excludeEnd("ctx");
  75518. src="foo | a | a + 1. [ [ [ | a | a := 2 ] ] ]";
  75519. ast=$recv($Smalltalk())._parse_(src);
  75520. self._should_raise_((function(){
  75521. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75522. return $core.withContext(function($ctx2) {
  75523. //>>excludeEnd("ctx");
  75524. return $recv(self["@analyzer"])._visit_(ast);
  75525. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75526. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  75527. //>>excludeEnd("ctx");
  75528. }),$ShadowingVariableError());
  75529. return self;
  75530. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75531. }, function($ctx1) {$ctx1.fill(self,"testVariableShadowing5",{src:src,ast:ast},$globals.SemanticAnalyzerTest)});
  75532. //>>excludeEnd("ctx");
  75533. },
  75534. //>>excludeStart("ide", pragmas.excludeIdeData);
  75535. args: [],
  75536. 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",
  75537. referencedClasses: ["Smalltalk", "ShadowingVariableError"],
  75538. //>>excludeEnd("ide");
  75539. messageSends: ["parse:", "should:raise:", "visit:"]
  75540. }),
  75541. $globals.SemanticAnalyzerTest);
  75542. $core.addMethod(
  75543. $core.method({
  75544. selector: "testVariablesLookup",
  75545. protocol: 'tests',
  75546. fn: function (){
  75547. var self=this;
  75548. var src,ast;
  75549. function $Smalltalk(){return $globals.Smalltalk||(typeof Smalltalk=="undefined"?nil:Smalltalk)}
  75550. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75551. return $core.withContext(function($ctx1) {
  75552. //>>excludeEnd("ctx");
  75553. var $7,$6,$5,$4,$3,$2,$1,$15,$14,$13,$12,$11,$10,$9,$16,$8,$27,$26,$25,$24,$23,$22,$21,$20,$19,$18,$17,$39,$38,$37,$36,$35,$34,$33,$32,$31,$30,$29,$42,$41,$40,$28;
  75554. src="foo | a | a + 1. [ | b | b := a ]";
  75555. ast=$recv($Smalltalk())._parse_(src);
  75556. $recv(self["@analyzer"])._visit_(ast);
  75557. $7=$recv(ast)._nodes();
  75558. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75559. $ctx1.sendIdx["nodes"]=2;
  75560. //>>excludeEnd("ctx");
  75561. $6=$recv($7)._first();
  75562. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75563. $ctx1.sendIdx["first"]=2;
  75564. //>>excludeEnd("ctx");
  75565. $5=$recv($6)._nodes();
  75566. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75567. $ctx1.sendIdx["nodes"]=1;
  75568. //>>excludeEnd("ctx");
  75569. $4=$recv($5)._first();
  75570. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75571. $ctx1.sendIdx["first"]=1;
  75572. //>>excludeEnd("ctx");
  75573. $3=$recv($4)._receiver();
  75574. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75575. $ctx1.sendIdx["receiver"]=1;
  75576. //>>excludeEnd("ctx");
  75577. $2=$recv($3)._binding();
  75578. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75579. $ctx1.sendIdx["binding"]=1;
  75580. //>>excludeEnd("ctx");
  75581. $1=$recv($2)._isTempVar();
  75582. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75583. $ctx1.sendIdx["isTempVar"]=1;
  75584. //>>excludeEnd("ctx");
  75585. self._assert_($1);
  75586. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75587. $ctx1.sendIdx["assert:"]=1;
  75588. //>>excludeEnd("ctx");
  75589. $15=$recv(ast)._nodes();
  75590. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75591. $ctx1.sendIdx["nodes"]=4;
  75592. //>>excludeEnd("ctx");
  75593. $14=$recv($15)._first();
  75594. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75595. $ctx1.sendIdx["first"]=4;
  75596. //>>excludeEnd("ctx");
  75597. $13=$recv($14)._nodes();
  75598. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75599. $ctx1.sendIdx["nodes"]=3;
  75600. //>>excludeEnd("ctx");
  75601. $12=$recv($13)._first();
  75602. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75603. $ctx1.sendIdx["first"]=3;
  75604. //>>excludeEnd("ctx");
  75605. $11=$recv($12)._receiver();
  75606. $10=$recv($11)._binding();
  75607. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75608. $ctx1.sendIdx["binding"]=2;
  75609. //>>excludeEnd("ctx");
  75610. $9=$recv($10)._scope();
  75611. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75612. $ctx1.sendIdx["scope"]=1;
  75613. //>>excludeEnd("ctx");
  75614. $16=$recv(ast)._scope();
  75615. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75616. $ctx1.sendIdx["scope"]=2;
  75617. //>>excludeEnd("ctx");
  75618. $8=$recv($9).__eq_eq($16);
  75619. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75620. $ctx1.sendIdx["=="]=1;
  75621. //>>excludeEnd("ctx");
  75622. self._assert_($8);
  75623. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75624. $ctx1.sendIdx["assert:"]=2;
  75625. //>>excludeEnd("ctx");
  75626. $27=$recv(ast)._nodes();
  75627. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75628. $ctx1.sendIdx["nodes"]=8;
  75629. //>>excludeEnd("ctx");
  75630. $26=$recv($27)._first();
  75631. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75632. $ctx1.sendIdx["first"]=7;
  75633. //>>excludeEnd("ctx");
  75634. $25=$recv($26)._nodes();
  75635. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75636. $ctx1.sendIdx["nodes"]=7;
  75637. //>>excludeEnd("ctx");
  75638. $24=$recv($25)._last();
  75639. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75640. $ctx1.sendIdx["last"]=1;
  75641. //>>excludeEnd("ctx");
  75642. $23=$recv($24)._nodes();
  75643. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75644. $ctx1.sendIdx["nodes"]=6;
  75645. //>>excludeEnd("ctx");
  75646. $22=$recv($23)._first();
  75647. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75648. $ctx1.sendIdx["first"]=6;
  75649. //>>excludeEnd("ctx");
  75650. $21=$recv($22)._nodes();
  75651. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75652. $ctx1.sendIdx["nodes"]=5;
  75653. //>>excludeEnd("ctx");
  75654. $20=$recv($21)._first();
  75655. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75656. $ctx1.sendIdx["first"]=5;
  75657. //>>excludeEnd("ctx");
  75658. $19=$recv($20)._left();
  75659. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75660. $ctx1.sendIdx["left"]=1;
  75661. //>>excludeEnd("ctx");
  75662. $18=$recv($19)._binding();
  75663. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75664. $ctx1.sendIdx["binding"]=3;
  75665. //>>excludeEnd("ctx");
  75666. $17=$recv($18)._isTempVar();
  75667. self._assert_($17);
  75668. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75669. $ctx1.sendIdx["assert:"]=3;
  75670. //>>excludeEnd("ctx");
  75671. $39=$recv(ast)._nodes();
  75672. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75673. $ctx1.sendIdx["nodes"]=12;
  75674. //>>excludeEnd("ctx");
  75675. $38=$recv($39)._first();
  75676. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75677. $ctx1.sendIdx["first"]=10;
  75678. //>>excludeEnd("ctx");
  75679. $37=$recv($38)._nodes();
  75680. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75681. $ctx1.sendIdx["nodes"]=11;
  75682. //>>excludeEnd("ctx");
  75683. $36=$recv($37)._last();
  75684. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75685. $ctx1.sendIdx["last"]=2;
  75686. //>>excludeEnd("ctx");
  75687. $35=$recv($36)._nodes();
  75688. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75689. $ctx1.sendIdx["nodes"]=10;
  75690. //>>excludeEnd("ctx");
  75691. $34=$recv($35)._first();
  75692. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75693. $ctx1.sendIdx["first"]=9;
  75694. //>>excludeEnd("ctx");
  75695. $33=$recv($34)._nodes();
  75696. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75697. $ctx1.sendIdx["nodes"]=9;
  75698. //>>excludeEnd("ctx");
  75699. $32=$recv($33)._first();
  75700. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75701. $ctx1.sendIdx["first"]=8;
  75702. //>>excludeEnd("ctx");
  75703. $31=$recv($32)._left();
  75704. $30=$recv($31)._binding();
  75705. $29=$recv($30)._scope();
  75706. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75707. $ctx1.sendIdx["scope"]=3;
  75708. //>>excludeEnd("ctx");
  75709. $42=$recv($recv($recv(ast)._nodes())._first())._nodes();
  75710. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75711. $ctx1.sendIdx["nodes"]=13;
  75712. //>>excludeEnd("ctx");
  75713. $41=$recv($42)._last();
  75714. $40=$recv($41)._scope();
  75715. $28=$recv($29).__eq_eq($40);
  75716. self._assert_($28);
  75717. return self;
  75718. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75719. }, function($ctx1) {$ctx1.fill(self,"testVariablesLookup",{src:src,ast:ast},$globals.SemanticAnalyzerTest)});
  75720. //>>excludeEnd("ctx");
  75721. },
  75722. //>>excludeStart("ide", pragmas.excludeIdeData);
  75723. args: [],
  75724. 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 nodes first nodes first receiver binding isTempVar.\x0a\x09self assert: ast nodes first nodes first receiver binding scope == ast scope.\x0a\x0a\x09\x22Binding for `b`\x22\x0a\x09self assert: ast nodes first nodes last nodes first nodes first left binding isTempVar.\x0a\x09self assert: ast nodes first nodes last nodes first nodes first left binding scope == ast nodes first nodes last scope.",
  75725. referencedClasses: ["Smalltalk"],
  75726. //>>excludeEnd("ide");
  75727. messageSends: ["parse:", "visit:", "assert:", "isTempVar", "binding", "receiver", "first", "nodes", "==", "scope", "left", "last"]
  75728. }),
  75729. $globals.SemanticAnalyzerTest);
  75730. $core.addClass('AISemanticAnalyzerTest', $globals.SemanticAnalyzerTest, [], 'Compiler-Tests');
  75731. $core.addMethod(
  75732. $core.method({
  75733. selector: "setUp",
  75734. protocol: 'running',
  75735. fn: function (){
  75736. var self=this;
  75737. function $AISemanticAnalyzer(){return $globals.AISemanticAnalyzer||(typeof AISemanticAnalyzer=="undefined"?nil:AISemanticAnalyzer)}
  75738. function $Object(){return $globals.Object||(typeof Object=="undefined"?nil:Object)}
  75739. function $AIContext(){return $globals.AIContext||(typeof AIContext=="undefined"?nil:AIContext)}
  75740. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75741. return $core.withContext(function($ctx1) {
  75742. //>>excludeEnd("ctx");
  75743. var $1,$2,$4,$5,$3,$6;
  75744. $1=$recv($AISemanticAnalyzer())._on_($Object());
  75745. $2=$1;
  75746. $4=$recv($AIContext())._new();
  75747. $recv($4)._defineLocal_("local");
  75748. $recv($4)._localAt_put_("local",(3));
  75749. $5=$recv($4)._yourself();
  75750. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75751. $ctx1.sendIdx["yourself"]=1;
  75752. //>>excludeEnd("ctx");
  75753. $3=$5;
  75754. $recv($2)._context_($3);
  75755. $6=$recv($1)._yourself();
  75756. self["@analyzer"]=$6;
  75757. return self;
  75758. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75759. }, function($ctx1) {$ctx1.fill(self,"setUp",{},$globals.AISemanticAnalyzerTest)});
  75760. //>>excludeEnd("ctx");
  75761. },
  75762. //>>excludeStart("ide", pragmas.excludeIdeData);
  75763. args: [],
  75764. 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",
  75765. referencedClasses: ["AISemanticAnalyzer", "Object", "AIContext"],
  75766. //>>excludeEnd("ide");
  75767. messageSends: ["context:", "on:", "defineLocal:", "new", "localAt:put:", "yourself"]
  75768. }),
  75769. $globals.AISemanticAnalyzerTest);
  75770. $core.addMethod(
  75771. $core.method({
  75772. selector: "testContextVariables",
  75773. protocol: 'tests',
  75774. fn: function (){
  75775. var self=this;
  75776. var src,ast;
  75777. function $Smalltalk(){return $globals.Smalltalk||(typeof Smalltalk=="undefined"?nil:Smalltalk)}
  75778. function $UnknownVariableError(){return $globals.UnknownVariableError||(typeof UnknownVariableError=="undefined"?nil:UnknownVariableError)}
  75779. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75780. return $core.withContext(function($ctx1) {
  75781. //>>excludeEnd("ctx");
  75782. src="foo | a | local + a";
  75783. ast=$recv($Smalltalk())._parse_(src);
  75784. self._shouldnt_raise_((function(){
  75785. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75786. return $core.withContext(function($ctx2) {
  75787. //>>excludeEnd("ctx");
  75788. return $recv(self["@analyzer"])._visit_(ast);
  75789. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75790. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  75791. //>>excludeEnd("ctx");
  75792. }),$UnknownVariableError());
  75793. return self;
  75794. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75795. }, function($ctx1) {$ctx1.fill(self,"testContextVariables",{src:src,ast:ast},$globals.AISemanticAnalyzerTest)});
  75796. //>>excludeEnd("ctx");
  75797. },
  75798. //>>excludeStart("ide", pragmas.excludeIdeData);
  75799. args: [],
  75800. 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",
  75801. referencedClasses: ["Smalltalk", "UnknownVariableError"],
  75802. //>>excludeEnd("ide");
  75803. messageSends: ["parse:", "shouldnt:raise:", "visit:"]
  75804. }),
  75805. $globals.AISemanticAnalyzerTest);
  75806. });
  75807. define("amber_core/SUnit-Tests", ["amber/boot", "amber_core/SUnit"], function($boot){
  75808. var $core=$boot.api,nil=$boot.nil,$recv=$boot.asReceiver,$globals=$boot.globals;
  75809. var smalltalk=$core,_st=$recv,globals=$globals;
  75810. $core.addPackage('SUnit-Tests');
  75811. $core.packages["SUnit-Tests"].transport = {"type":"amd","amdNamespace":"amber_core"};
  75812. $core.addClass('ExampleSetTest', $globals.TestCase, ['empty', 'full'], 'SUnit-Tests');
  75813. //>>excludeStart("ide", pragmas.excludeIdeData);
  75814. $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.";
  75815. //>>excludeEnd("ide");
  75816. $core.addMethod(
  75817. $core.method({
  75818. selector: "setUp",
  75819. protocol: 'running',
  75820. fn: function (){
  75821. var self=this;
  75822. function $Set(){return $globals.Set||(typeof Set=="undefined"?nil:Set)}
  75823. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75824. return $core.withContext(function($ctx1) {
  75825. //>>excludeEnd("ctx");
  75826. self["@empty"]=$recv($Set())._new();
  75827. self["@full"]=$recv($Set())._with_with_((5),"abc");
  75828. return self;
  75829. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75830. }, function($ctx1) {$ctx1.fill(self,"setUp",{},$globals.ExampleSetTest)});
  75831. //>>excludeEnd("ctx");
  75832. },
  75833. //>>excludeStart("ide", pragmas.excludeIdeData);
  75834. args: [],
  75835. source: "setUp\x0a\x09empty := Set new.\x0a\x09full := Set with: 5 with: #abc",
  75836. referencedClasses: ["Set"],
  75837. //>>excludeEnd("ide");
  75838. messageSends: ["new", "with:with:"]
  75839. }),
  75840. $globals.ExampleSetTest);
  75841. $core.addMethod(
  75842. $core.method({
  75843. selector: "testAdd",
  75844. protocol: 'tests',
  75845. fn: function (){
  75846. var self=this;
  75847. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75848. return $core.withContext(function($ctx1) {
  75849. //>>excludeEnd("ctx");
  75850. $recv(self["@empty"])._add_((5));
  75851. self._assert_($recv(self["@empty"])._includes_((5)));
  75852. return self;
  75853. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75854. }, function($ctx1) {$ctx1.fill(self,"testAdd",{},$globals.ExampleSetTest)});
  75855. //>>excludeEnd("ctx");
  75856. },
  75857. //>>excludeStart("ide", pragmas.excludeIdeData);
  75858. args: [],
  75859. source: "testAdd\x0a\x09empty add: 5.\x0a\x09self assert: (empty includes: 5)",
  75860. referencedClasses: [],
  75861. //>>excludeEnd("ide");
  75862. messageSends: ["add:", "assert:", "includes:"]
  75863. }),
  75864. $globals.ExampleSetTest);
  75865. $core.addMethod(
  75866. $core.method({
  75867. selector: "testGrow",
  75868. protocol: 'tests',
  75869. fn: function (){
  75870. var self=this;
  75871. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75872. return $core.withContext(function($ctx1) {
  75873. //>>excludeEnd("ctx");
  75874. $recv(self["@empty"])._addAll_((1)._to_((100)));
  75875. self._assert_equals_($recv(self["@empty"])._size(),(100));
  75876. return self;
  75877. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75878. }, function($ctx1) {$ctx1.fill(self,"testGrow",{},$globals.ExampleSetTest)});
  75879. //>>excludeEnd("ctx");
  75880. },
  75881. //>>excludeStart("ide", pragmas.excludeIdeData);
  75882. args: [],
  75883. source: "testGrow\x0a\x09empty addAll: (1 to: 100).\x0a\x09self assert: empty size equals: 100",
  75884. referencedClasses: [],
  75885. //>>excludeEnd("ide");
  75886. messageSends: ["addAll:", "to:", "assert:equals:", "size"]
  75887. }),
  75888. $globals.ExampleSetTest);
  75889. $core.addMethod(
  75890. $core.method({
  75891. selector: "testIllegal",
  75892. protocol: 'tests',
  75893. fn: function (){
  75894. var self=this;
  75895. function $Error(){return $globals.Error||(typeof Error=="undefined"?nil:Error)}
  75896. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75897. return $core.withContext(function($ctx1) {
  75898. //>>excludeEnd("ctx");
  75899. self._should_raise_((function(){
  75900. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75901. return $core.withContext(function($ctx2) {
  75902. //>>excludeEnd("ctx");
  75903. return $recv(self["@empty"])._at_((5));
  75904. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75905. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  75906. //>>excludeEnd("ctx");
  75907. }),$Error());
  75908. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75909. $ctx1.sendIdx["should:raise:"]=1;
  75910. //>>excludeEnd("ctx");
  75911. self._should_raise_((function(){
  75912. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75913. return $core.withContext(function($ctx2) {
  75914. //>>excludeEnd("ctx");
  75915. return $recv(self["@empty"])._at_put_((5),"abc");
  75916. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75917. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
  75918. //>>excludeEnd("ctx");
  75919. }),$Error());
  75920. return self;
  75921. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75922. }, function($ctx1) {$ctx1.fill(self,"testIllegal",{},$globals.ExampleSetTest)});
  75923. //>>excludeEnd("ctx");
  75924. },
  75925. //>>excludeStart("ide", pragmas.excludeIdeData);
  75926. args: [],
  75927. 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",
  75928. referencedClasses: ["Error"],
  75929. //>>excludeEnd("ide");
  75930. messageSends: ["should:raise:", "at:", "at:put:"]
  75931. }),
  75932. $globals.ExampleSetTest);
  75933. $core.addMethod(
  75934. $core.method({
  75935. selector: "testIncludes",
  75936. protocol: 'tests',
  75937. fn: function (){
  75938. var self=this;
  75939. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75940. return $core.withContext(function($ctx1) {
  75941. //>>excludeEnd("ctx");
  75942. var $1;
  75943. $1=$recv(self["@full"])._includes_((5));
  75944. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75945. $ctx1.sendIdx["includes:"]=1;
  75946. //>>excludeEnd("ctx");
  75947. self._assert_($1);
  75948. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75949. $ctx1.sendIdx["assert:"]=1;
  75950. //>>excludeEnd("ctx");
  75951. self._assert_($recv(self["@full"])._includes_("abc"));
  75952. return self;
  75953. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75954. }, function($ctx1) {$ctx1.fill(self,"testIncludes",{},$globals.ExampleSetTest)});
  75955. //>>excludeEnd("ctx");
  75956. },
  75957. //>>excludeStart("ide", pragmas.excludeIdeData);
  75958. args: [],
  75959. source: "testIncludes\x0a\x09self assert: (full includes: 5).\x0a\x09self assert: (full includes: #abc)",
  75960. referencedClasses: [],
  75961. //>>excludeEnd("ide");
  75962. messageSends: ["assert:", "includes:"]
  75963. }),
  75964. $globals.ExampleSetTest);
  75965. $core.addMethod(
  75966. $core.method({
  75967. selector: "testOccurrences",
  75968. protocol: 'tests',
  75969. fn: function (){
  75970. var self=this;
  75971. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75972. return $core.withContext(function($ctx1) {
  75973. //>>excludeEnd("ctx");
  75974. var $1,$2;
  75975. $1=$recv(self["@empty"])._occurrencesOf_((0));
  75976. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75977. $ctx1.sendIdx["occurrencesOf:"]=1;
  75978. //>>excludeEnd("ctx");
  75979. self._assert_equals_($1,(0));
  75980. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75981. $ctx1.sendIdx["assert:equals:"]=1;
  75982. //>>excludeEnd("ctx");
  75983. $2=$recv(self["@full"])._occurrencesOf_((5));
  75984. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75985. $ctx1.sendIdx["occurrencesOf:"]=2;
  75986. //>>excludeEnd("ctx");
  75987. self._assert_equals_($2,(1));
  75988. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75989. $ctx1.sendIdx["assert:equals:"]=2;
  75990. //>>excludeEnd("ctx");
  75991. $recv(self["@full"])._add_((5));
  75992. self._assert_equals_($recv(self["@full"])._occurrencesOf_((5)),(1));
  75993. return self;
  75994. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75995. }, function($ctx1) {$ctx1.fill(self,"testOccurrences",{},$globals.ExampleSetTest)});
  75996. //>>excludeEnd("ctx");
  75997. },
  75998. //>>excludeStart("ide", pragmas.excludeIdeData);
  75999. args: [],
  76000. 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",
  76001. referencedClasses: [],
  76002. //>>excludeEnd("ide");
  76003. messageSends: ["assert:equals:", "occurrencesOf:", "add:"]
  76004. }),
  76005. $globals.ExampleSetTest);
  76006. $core.addMethod(
  76007. $core.method({
  76008. selector: "testRemove",
  76009. protocol: 'tests',
  76010. fn: function (){
  76011. var self=this;
  76012. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76013. return $core.withContext(function($ctx1) {
  76014. //>>excludeEnd("ctx");
  76015. var $1;
  76016. $recv(self["@full"])._remove_((5));
  76017. $1=$recv(self["@full"])._includes_("abc");
  76018. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76019. $ctx1.sendIdx["includes:"]=1;
  76020. //>>excludeEnd("ctx");
  76021. self._assert_($1);
  76022. self._deny_($recv(self["@full"])._includes_((5)));
  76023. return self;
  76024. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76025. }, function($ctx1) {$ctx1.fill(self,"testRemove",{},$globals.ExampleSetTest)});
  76026. //>>excludeEnd("ctx");
  76027. },
  76028. //>>excludeStart("ide", pragmas.excludeIdeData);
  76029. args: [],
  76030. source: "testRemove\x0a\x09full remove: 5.\x0a\x09self assert: (full includes: #abc).\x0a\x09self deny: (full includes: 5)",
  76031. referencedClasses: [],
  76032. //>>excludeEnd("ide");
  76033. messageSends: ["remove:", "assert:", "includes:", "deny:"]
  76034. }),
  76035. $globals.ExampleSetTest);
  76036. $core.addClass('SUnitAsyncTest', $globals.TestCase, ['flag'], 'SUnit-Tests');
  76037. $core.addMethod(
  76038. $core.method({
  76039. selector: "fakeError",
  76040. protocol: 'helpers',
  76041. fn: function (){
  76042. var self=this;
  76043. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76044. return $core.withContext(function($ctx1) {
  76045. //>>excludeEnd("ctx");
  76046. self["@flag"]="bad";
  76047. self._timeout_((30));
  76048. self["@flag"]=$recv(self._async_((function(){
  76049. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76050. return $core.withContext(function($ctx2) {
  76051. //>>excludeEnd("ctx");
  76052. self["@flag"]="ok";
  76053. self["@flag"];
  76054. return self._error_("Intentional");
  76055. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76056. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  76057. //>>excludeEnd("ctx");
  76058. })))._valueWithTimeout_((20));
  76059. return self;
  76060. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76061. }, function($ctx1) {$ctx1.fill(self,"fakeError",{},$globals.SUnitAsyncTest)});
  76062. //>>excludeEnd("ctx");
  76063. },
  76064. //>>excludeStart("ide", pragmas.excludeIdeData);
  76065. args: [],
  76066. source: "fakeError\x0a\x09flag := 'bad'.\x0a\x09self timeout: 30.\x0a\x09flag := (self async: [ flag := 'ok'. self error: 'Intentional' ]) valueWithTimeout: 20",
  76067. referencedClasses: [],
  76068. //>>excludeEnd("ide");
  76069. messageSends: ["timeout:", "valueWithTimeout:", "async:", "error:"]
  76070. }),
  76071. $globals.SUnitAsyncTest);
  76072. $core.addMethod(
  76073. $core.method({
  76074. selector: "fakeErrorFailingInTearDown",
  76075. protocol: 'helpers',
  76076. fn: function (){
  76077. var self=this;
  76078. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76079. return $core.withContext(function($ctx1) {
  76080. //>>excludeEnd("ctx");
  76081. self["@flag"]="bad";
  76082. self._timeout_((30));
  76083. self["@flag"]=$recv(self._async_((function(){
  76084. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76085. return $core.withContext(function($ctx2) {
  76086. //>>excludeEnd("ctx");
  76087. return self._error_("Intentional");
  76088. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76089. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  76090. //>>excludeEnd("ctx");
  76091. })))._valueWithTimeout_((20));
  76092. return self;
  76093. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76094. }, function($ctx1) {$ctx1.fill(self,"fakeErrorFailingInTearDown",{},$globals.SUnitAsyncTest)});
  76095. //>>excludeEnd("ctx");
  76096. },
  76097. //>>excludeStart("ide", pragmas.excludeIdeData);
  76098. args: [],
  76099. source: "fakeErrorFailingInTearDown\x0a\x09flag := 'bad'.\x0a\x09self timeout: 30.\x0a\x09flag := (self async: [ self error: 'Intentional' ]) valueWithTimeout: 20",
  76100. referencedClasses: [],
  76101. //>>excludeEnd("ide");
  76102. messageSends: ["timeout:", "valueWithTimeout:", "async:", "error:"]
  76103. }),
  76104. $globals.SUnitAsyncTest);
  76105. $core.addMethod(
  76106. $core.method({
  76107. selector: "fakeFailure",
  76108. protocol: 'helpers',
  76109. fn: function (){
  76110. var self=this;
  76111. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76112. return $core.withContext(function($ctx1) {
  76113. //>>excludeEnd("ctx");
  76114. self["@flag"]="bad";
  76115. self._timeout_((30));
  76116. self["@flag"]=$recv(self._async_((function(){
  76117. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76118. return $core.withContext(function($ctx2) {
  76119. //>>excludeEnd("ctx");
  76120. self["@flag"]="ok";
  76121. self["@flag"];
  76122. return self._assert_(false);
  76123. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76124. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  76125. //>>excludeEnd("ctx");
  76126. })))._valueWithTimeout_((20));
  76127. return self;
  76128. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76129. }, function($ctx1) {$ctx1.fill(self,"fakeFailure",{},$globals.SUnitAsyncTest)});
  76130. //>>excludeEnd("ctx");
  76131. },
  76132. //>>excludeStart("ide", pragmas.excludeIdeData);
  76133. args: [],
  76134. source: "fakeFailure\x0a\x09flag := 'bad'.\x0a\x09self timeout: 30.\x0a\x09flag := (self async: [ flag := 'ok'. self assert: false ]) valueWithTimeout: 20",
  76135. referencedClasses: [],
  76136. //>>excludeEnd("ide");
  76137. messageSends: ["timeout:", "valueWithTimeout:", "async:", "assert:"]
  76138. }),
  76139. $globals.SUnitAsyncTest);
  76140. $core.addMethod(
  76141. $core.method({
  76142. selector: "fakeMultipleTimeoutFailing",
  76143. protocol: 'helpers',
  76144. fn: function (){
  76145. var self=this;
  76146. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76147. return $core.withContext(function($ctx1) {
  76148. //>>excludeEnd("ctx");
  76149. var $1;
  76150. self._timeout_((100));
  76151. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76152. $ctx1.sendIdx["timeout:"]=1;
  76153. //>>excludeEnd("ctx");
  76154. $1=self._async_((function(){
  76155. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76156. return $core.withContext(function($ctx2) {
  76157. //>>excludeEnd("ctx");
  76158. self._timeout_((20));
  76159. return $recv(self._async_((function(){
  76160. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76161. return $core.withContext(function($ctx3) {
  76162. //>>excludeEnd("ctx");
  76163. return self._finished();
  76164. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76165. }, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)});
  76166. //>>excludeEnd("ctx");
  76167. })))._valueWithTimeout_((30));
  76168. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76169. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  76170. //>>excludeEnd("ctx");
  76171. }));
  76172. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76173. $ctx1.sendIdx["async:"]=1;
  76174. //>>excludeEnd("ctx");
  76175. $recv($1)._valueWithTimeout_((20));
  76176. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76177. $ctx1.sendIdx["valueWithTimeout:"]=1;
  76178. //>>excludeEnd("ctx");
  76179. return self;
  76180. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76181. }, function($ctx1) {$ctx1.fill(self,"fakeMultipleTimeoutFailing",{},$globals.SUnitAsyncTest)});
  76182. //>>excludeEnd("ctx");
  76183. },
  76184. //>>excludeStart("ide", pragmas.excludeIdeData);
  76185. args: [],
  76186. 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",
  76187. referencedClasses: [],
  76188. //>>excludeEnd("ide");
  76189. messageSends: ["timeout:", "valueWithTimeout:", "async:", "finished"]
  76190. }),
  76191. $globals.SUnitAsyncTest);
  76192. $core.addMethod(
  76193. $core.method({
  76194. selector: "fakeMultipleTimeoutPassing",
  76195. protocol: 'helpers',
  76196. fn: function (){
  76197. var self=this;
  76198. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76199. return $core.withContext(function($ctx1) {
  76200. //>>excludeEnd("ctx");
  76201. var $1;
  76202. self._timeout_((20));
  76203. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76204. $ctx1.sendIdx["timeout:"]=1;
  76205. //>>excludeEnd("ctx");
  76206. $1=self._async_((function(){
  76207. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76208. return $core.withContext(function($ctx2) {
  76209. //>>excludeEnd("ctx");
  76210. self._timeout_((40));
  76211. return $recv(self._async_((function(){
  76212. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76213. return $core.withContext(function($ctx3) {
  76214. //>>excludeEnd("ctx");
  76215. return self._finished();
  76216. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76217. }, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)});
  76218. //>>excludeEnd("ctx");
  76219. })))._valueWithTimeout_((20));
  76220. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76221. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  76222. //>>excludeEnd("ctx");
  76223. }));
  76224. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76225. $ctx1.sendIdx["async:"]=1;
  76226. //>>excludeEnd("ctx");
  76227. $recv($1)._valueWithTimeout_((10));
  76228. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76229. $ctx1.sendIdx["valueWithTimeout:"]=1;
  76230. //>>excludeEnd("ctx");
  76231. return self;
  76232. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76233. }, function($ctx1) {$ctx1.fill(self,"fakeMultipleTimeoutPassing",{},$globals.SUnitAsyncTest)});
  76234. //>>excludeEnd("ctx");
  76235. },
  76236. //>>excludeStart("ide", pragmas.excludeIdeData);
  76237. args: [],
  76238. 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",
  76239. referencedClasses: [],
  76240. //>>excludeEnd("ide");
  76241. messageSends: ["timeout:", "valueWithTimeout:", "async:", "finished"]
  76242. }),
  76243. $globals.SUnitAsyncTest);
  76244. $core.addMethod(
  76245. $core.method({
  76246. selector: "fakeTimeout",
  76247. protocol: 'helpers',
  76248. fn: function (){
  76249. var self=this;
  76250. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76251. return $core.withContext(function($ctx1) {
  76252. //>>excludeEnd("ctx");
  76253. self._timeout_((10));
  76254. $recv(self._async_((function(){
  76255. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76256. return $core.withContext(function($ctx2) {
  76257. //>>excludeEnd("ctx");
  76258. return self._finished();
  76259. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76260. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  76261. //>>excludeEnd("ctx");
  76262. })))._valueWithTimeout_((20));
  76263. return self;
  76264. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76265. }, function($ctx1) {$ctx1.fill(self,"fakeTimeout",{},$globals.SUnitAsyncTest)});
  76266. //>>excludeEnd("ctx");
  76267. },
  76268. //>>excludeStart("ide", pragmas.excludeIdeData);
  76269. args: [],
  76270. source: "fakeTimeout\x0a\x09self timeout: 10.\x0a\x09(self async: [ self finished ]) valueWithTimeout: 20",
  76271. referencedClasses: [],
  76272. //>>excludeEnd("ide");
  76273. messageSends: ["timeout:", "valueWithTimeout:", "async:", "finished"]
  76274. }),
  76275. $globals.SUnitAsyncTest);
  76276. $core.addMethod(
  76277. $core.method({
  76278. selector: "selectorSetOf:",
  76279. protocol: 'private',
  76280. fn: function (aCollection){
  76281. var self=this;
  76282. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76283. return $core.withContext(function($ctx1) {
  76284. //>>excludeEnd("ctx");
  76285. var $1;
  76286. $1=$recv($recv(aCollection)._collect_((function(each){
  76287. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76288. return $core.withContext(function($ctx2) {
  76289. //>>excludeEnd("ctx");
  76290. return $recv(each)._selector();
  76291. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76292. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  76293. //>>excludeEnd("ctx");
  76294. })))._asSet();
  76295. return $1;
  76296. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76297. }, function($ctx1) {$ctx1.fill(self,"selectorSetOf:",{aCollection:aCollection},$globals.SUnitAsyncTest)});
  76298. //>>excludeEnd("ctx");
  76299. },
  76300. //>>excludeStart("ide", pragmas.excludeIdeData);
  76301. args: ["aCollection"],
  76302. source: "selectorSetOf: aCollection\x0a\x09^ (aCollection collect: [ :each | each selector ]) asSet",
  76303. referencedClasses: [],
  76304. //>>excludeEnd("ide");
  76305. messageSends: ["asSet", "collect:", "selector"]
  76306. }),
  76307. $globals.SUnitAsyncTest);
  76308. $core.addMethod(
  76309. $core.method({
  76310. selector: "setUp",
  76311. protocol: 'running',
  76312. fn: function (){
  76313. var self=this;
  76314. self["@flag"]="ok";
  76315. return self;
  76316. },
  76317. //>>excludeStart("ide", pragmas.excludeIdeData);
  76318. args: [],
  76319. source: "setUp\x0a\x09flag := 'ok'",
  76320. referencedClasses: [],
  76321. //>>excludeEnd("ide");
  76322. messageSends: []
  76323. }),
  76324. $globals.SUnitAsyncTest);
  76325. $core.addMethod(
  76326. $core.method({
  76327. selector: "tearDown",
  76328. protocol: 'running',
  76329. fn: function (){
  76330. var self=this;
  76331. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76332. return $core.withContext(function($ctx1) {
  76333. //>>excludeEnd("ctx");
  76334. self._assert_equals_("ok",self["@flag"]);
  76335. return self;
  76336. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76337. }, function($ctx1) {$ctx1.fill(self,"tearDown",{},$globals.SUnitAsyncTest)});
  76338. //>>excludeEnd("ctx");
  76339. },
  76340. //>>excludeStart("ide", pragmas.excludeIdeData);
  76341. args: [],
  76342. source: "tearDown\x0a\x09self assert: 'ok' equals: flag",
  76343. referencedClasses: [],
  76344. //>>excludeEnd("ide");
  76345. messageSends: ["assert:equals:"]
  76346. }),
  76347. $globals.SUnitAsyncTest);
  76348. $core.addMethod(
  76349. $core.method({
  76350. selector: "testAsyncErrorsAndFailures",
  76351. protocol: 'tests',
  76352. fn: function (){
  76353. var self=this;
  76354. var suite,runner,result,assertBlock;
  76355. function $TestSuiteRunner(){return $globals.TestSuiteRunner||(typeof TestSuiteRunner=="undefined"?nil:TestSuiteRunner)}
  76356. function $ResultAnnouncement(){return $globals.ResultAnnouncement||(typeof ResultAnnouncement=="undefined"?nil:ResultAnnouncement)}
  76357. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76358. return $core.withContext(function($ctx1) {
  76359. //>>excludeEnd("ctx");
  76360. var $1,$2,$3,$4;
  76361. suite=["fakeError", "fakeErrorFailingInTearDown", "fakeFailure", "testPass"]._collect_((function(each){
  76362. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76363. return $core.withContext(function($ctx2) {
  76364. //>>excludeEnd("ctx");
  76365. return $recv(self._class())._selector_(each);
  76366. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76367. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  76368. //>>excludeEnd("ctx");
  76369. }));
  76370. runner=$recv($TestSuiteRunner())._on_(suite);
  76371. self._timeout_((200));
  76372. result=$recv(runner)._result();
  76373. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76374. $ctx1.sendIdx["result"]=1;
  76375. //>>excludeEnd("ctx");
  76376. assertBlock=self._async_((function(){
  76377. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76378. return $core.withContext(function($ctx2) {
  76379. //>>excludeEnd("ctx");
  76380. $1=self._selectorSetOf_($recv(result)._errors());
  76381. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76382. $ctx2.sendIdx["selectorSetOf:"]=1;
  76383. //>>excludeEnd("ctx");
  76384. $2=["fakeError"]._asSet();
  76385. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76386. $ctx2.sendIdx["asSet"]=1;
  76387. //>>excludeEnd("ctx");
  76388. self._assert_equals_($1,$2);
  76389. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76390. $ctx2.sendIdx["assert:equals:"]=1;
  76391. //>>excludeEnd("ctx");
  76392. self._assert_equals_(self._selectorSetOf_($recv(result)._failures()),["fakeErrorFailingInTearDown", "fakeFailure"]._asSet());
  76393. return self._finished();
  76394. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76395. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
  76396. //>>excludeEnd("ctx");
  76397. }));
  76398. $recv($recv(runner)._announcer())._on_do_($ResultAnnouncement(),(function(ann){
  76399. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76400. return $core.withContext(function($ctx2) {
  76401. //>>excludeEnd("ctx");
  76402. $3=$recv($recv(ann)._result()).__eq_eq(result);
  76403. if($core.assert($3)){
  76404. $4=$recv($recv(result)._runs()).__eq($recv(result)._total());
  76405. return $recv($4)._ifTrue_(assertBlock);
  76406. };
  76407. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76408. }, function($ctx2) {$ctx2.fillBlock({ann:ann},$ctx1,3)});
  76409. //>>excludeEnd("ctx");
  76410. }));
  76411. $recv(runner)._run();
  76412. return self;
  76413. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76414. }, function($ctx1) {$ctx1.fill(self,"testAsyncErrorsAndFailures",{suite:suite,runner:runner,result:result,assertBlock:assertBlock},$globals.SUnitAsyncTest)});
  76415. //>>excludeEnd("ctx");
  76416. },
  76417. //>>excludeStart("ide", pragmas.excludeIdeData);
  76418. args: [],
  76419. 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\x09ann result == result ifTrue: [ result runs = result total ifTrue: assertBlock ] ].\x0a\x09runner run",
  76420. referencedClasses: ["TestSuiteRunner", "ResultAnnouncement"],
  76421. //>>excludeEnd("ide");
  76422. messageSends: ["collect:", "selector:", "class", "on:", "timeout:", "result", "async:", "assert:equals:", "selectorSetOf:", "errors", "asSet", "failures", "finished", "on:do:", "announcer", "ifTrue:", "==", "=", "runs", "total", "run"]
  76423. }),
  76424. $globals.SUnitAsyncTest);
  76425. $core.addMethod(
  76426. $core.method({
  76427. selector: "testAsyncNeedsTimeout",
  76428. protocol: 'tests',
  76429. fn: function (){
  76430. var self=this;
  76431. function $Error(){return $globals.Error||(typeof Error=="undefined"?nil:Error)}
  76432. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76433. return $core.withContext(function($ctx1) {
  76434. //>>excludeEnd("ctx");
  76435. self._should_raise_((function(){
  76436. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76437. return $core.withContext(function($ctx2) {
  76438. //>>excludeEnd("ctx");
  76439. return self._async_((function(){
  76440. }));
  76441. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76442. $ctx2.sendIdx["async:"]=1;
  76443. //>>excludeEnd("ctx");
  76444. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76445. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  76446. //>>excludeEnd("ctx");
  76447. }),$Error());
  76448. self._timeout_((0));
  76449. self._shouldnt_raise_((function(){
  76450. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76451. return $core.withContext(function($ctx2) {
  76452. //>>excludeEnd("ctx");
  76453. return self._async_((function(){
  76454. }));
  76455. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76456. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,3)});
  76457. //>>excludeEnd("ctx");
  76458. }),$Error());
  76459. self._finished();
  76460. return self;
  76461. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76462. }, function($ctx1) {$ctx1.fill(self,"testAsyncNeedsTimeout",{},$globals.SUnitAsyncTest)});
  76463. //>>excludeEnd("ctx");
  76464. },
  76465. //>>excludeStart("ide", pragmas.excludeIdeData);
  76466. args: [],
  76467. source: "testAsyncNeedsTimeout\x0a\x09self should: [ self async: [ ] ] raise: Error.\x0a\x09self timeout: 0.\x0a\x09self shouldnt: [ self async: [ ] ] raise: Error.\x0a\x09self finished",
  76468. referencedClasses: ["Error"],
  76469. //>>excludeEnd("ide");
  76470. messageSends: ["should:raise:", "async:", "timeout:", "shouldnt:raise:", "finished"]
  76471. }),
  76472. $globals.SUnitAsyncTest);
  76473. $core.addMethod(
  76474. $core.method({
  76475. selector: "testFinishedNeedsTimeout",
  76476. protocol: 'tests',
  76477. fn: function (){
  76478. var self=this;
  76479. function $Error(){return $globals.Error||(typeof Error=="undefined"?nil:Error)}
  76480. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76481. return $core.withContext(function($ctx1) {
  76482. //>>excludeEnd("ctx");
  76483. self._should_raise_((function(){
  76484. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76485. return $core.withContext(function($ctx2) {
  76486. //>>excludeEnd("ctx");
  76487. return self._finished();
  76488. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76489. $ctx2.sendIdx["finished"]=1;
  76490. //>>excludeEnd("ctx");
  76491. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76492. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  76493. //>>excludeEnd("ctx");
  76494. }),$Error());
  76495. self._timeout_((0));
  76496. self._shouldnt_raise_((function(){
  76497. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76498. return $core.withContext(function($ctx2) {
  76499. //>>excludeEnd("ctx");
  76500. return self._finished();
  76501. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76502. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
  76503. //>>excludeEnd("ctx");
  76504. }),$Error());
  76505. return self;
  76506. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76507. }, function($ctx1) {$ctx1.fill(self,"testFinishedNeedsTimeout",{},$globals.SUnitAsyncTest)});
  76508. //>>excludeEnd("ctx");
  76509. },
  76510. //>>excludeStart("ide", pragmas.excludeIdeData);
  76511. args: [],
  76512. source: "testFinishedNeedsTimeout\x0a\x09self should: [ self finished ] raise: Error.\x0a\x09self timeout: 0.\x0a\x09self shouldnt: [ self finished ] raise: Error.",
  76513. referencedClasses: ["Error"],
  76514. //>>excludeEnd("ide");
  76515. messageSends: ["should:raise:", "finished", "timeout:", "shouldnt:raise:"]
  76516. }),
  76517. $globals.SUnitAsyncTest);
  76518. $core.addMethod(
  76519. $core.method({
  76520. selector: "testIsAsyncReturnsCorrectValues",
  76521. protocol: 'tests',
  76522. fn: function (){
  76523. var self=this;
  76524. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76525. return $core.withContext(function($ctx1) {
  76526. //>>excludeEnd("ctx");
  76527. var $1,$2;
  76528. $1=self._isAsync();
  76529. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76530. $ctx1.sendIdx["isAsync"]=1;
  76531. //>>excludeEnd("ctx");
  76532. self._deny_($1);
  76533. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76534. $ctx1.sendIdx["deny:"]=1;
  76535. //>>excludeEnd("ctx");
  76536. self._timeout_((0));
  76537. $2=self._isAsync();
  76538. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76539. $ctx1.sendIdx["isAsync"]=2;
  76540. //>>excludeEnd("ctx");
  76541. self._assert_($2);
  76542. self._finished();
  76543. self._deny_(self._isAsync());
  76544. return self;
  76545. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76546. }, function($ctx1) {$ctx1.fill(self,"testIsAsyncReturnsCorrectValues",{},$globals.SUnitAsyncTest)});
  76547. //>>excludeEnd("ctx");
  76548. },
  76549. //>>excludeStart("ide", pragmas.excludeIdeData);
  76550. args: [],
  76551. source: "testIsAsyncReturnsCorrectValues\x0a\x09self deny: self isAsync.\x0a\x09self timeout: 0.\x0a\x09self assert: self isAsync.\x0a\x09self finished.\x0a\x09self deny: self isAsync",
  76552. referencedClasses: [],
  76553. //>>excludeEnd("ide");
  76554. messageSends: ["deny:", "isAsync", "timeout:", "assert:", "finished"]
  76555. }),
  76556. $globals.SUnitAsyncTest);
  76557. $core.addMethod(
  76558. $core.method({
  76559. selector: "testPass",
  76560. protocol: 'tests',
  76561. fn: function (){
  76562. var self=this;
  76563. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76564. return $core.withContext(function($ctx1) {
  76565. //>>excludeEnd("ctx");
  76566. self["@flag"]="bad";
  76567. self._timeout_((10));
  76568. self["@flag"]=$recv(self._async_((function(){
  76569. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76570. return $core.withContext(function($ctx2) {
  76571. //>>excludeEnd("ctx");
  76572. self._assert_(true);
  76573. self._finished();
  76574. self["@flag"]="ok";
  76575. return self["@flag"];
  76576. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76577. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  76578. //>>excludeEnd("ctx");
  76579. })))._valueWithTimeout_((5));
  76580. return self;
  76581. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76582. }, function($ctx1) {$ctx1.fill(self,"testPass",{},$globals.SUnitAsyncTest)});
  76583. //>>excludeEnd("ctx");
  76584. },
  76585. //>>excludeStart("ide", pragmas.excludeIdeData);
  76586. args: [],
  76587. source: "testPass\x0a\x09flag := 'bad'.\x0a\x09self timeout: 10.\x0a\x09flag := (self async: [ self assert: true. self finished. flag := 'ok' ]) valueWithTimeout: 5",
  76588. referencedClasses: [],
  76589. //>>excludeEnd("ide");
  76590. messageSends: ["timeout:", "valueWithTimeout:", "async:", "assert:", "finished"]
  76591. }),
  76592. $globals.SUnitAsyncTest);
  76593. $core.addMethod(
  76594. $core.method({
  76595. selector: "testTimeouts",
  76596. protocol: 'tests',
  76597. fn: function (){
  76598. var self=this;
  76599. var suite,runner,result,assertBlock;
  76600. function $TestSuiteRunner(){return $globals.TestSuiteRunner||(typeof TestSuiteRunner=="undefined"?nil:TestSuiteRunner)}
  76601. function $Set(){return $globals.Set||(typeof Set=="undefined"?nil:Set)}
  76602. function $ResultAnnouncement(){return $globals.ResultAnnouncement||(typeof ResultAnnouncement=="undefined"?nil:ResultAnnouncement)}
  76603. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76604. return $core.withContext(function($ctx1) {
  76605. //>>excludeEnd("ctx");
  76606. var $1,$2,$3;
  76607. suite=["fakeTimeout", "fakeMultipleTimeoutFailing", "fakeMultipleTimeoutPassing", "testPass"]._collect_((function(each){
  76608. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76609. return $core.withContext(function($ctx2) {
  76610. //>>excludeEnd("ctx");
  76611. return $recv(self._class())._selector_(each);
  76612. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76613. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  76614. //>>excludeEnd("ctx");
  76615. }));
  76616. runner=$recv($TestSuiteRunner())._on_(suite);
  76617. self._timeout_((200));
  76618. result=$recv(runner)._result();
  76619. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76620. $ctx1.sendIdx["result"]=1;
  76621. //>>excludeEnd("ctx");
  76622. assertBlock=self._async_((function(){
  76623. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76624. return $core.withContext(function($ctx2) {
  76625. //>>excludeEnd("ctx");
  76626. $1=self._selectorSetOf_($recv(result)._errors());
  76627. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76628. $ctx2.sendIdx["selectorSetOf:"]=1;
  76629. //>>excludeEnd("ctx");
  76630. self._assert_equals_($1,$recv($Set())._new());
  76631. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76632. $ctx2.sendIdx["assert:equals:"]=1;
  76633. //>>excludeEnd("ctx");
  76634. self._assert_equals_(self._selectorSetOf_($recv(result)._failures()),["fakeMultipleTimeoutFailing", "fakeTimeout"]._asSet());
  76635. return self._finished();
  76636. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76637. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
  76638. //>>excludeEnd("ctx");
  76639. }));
  76640. $recv($recv(runner)._announcer())._on_do_($ResultAnnouncement(),(function(ann){
  76641. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76642. return $core.withContext(function($ctx2) {
  76643. //>>excludeEnd("ctx");
  76644. $2=$recv($recv(ann)._result()).__eq_eq(result);
  76645. if($core.assert($2)){
  76646. $3=$recv($recv(result)._runs()).__eq($recv(result)._total());
  76647. return $recv($3)._ifTrue_(assertBlock);
  76648. };
  76649. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76650. }, function($ctx2) {$ctx2.fillBlock({ann:ann},$ctx1,3)});
  76651. //>>excludeEnd("ctx");
  76652. }));
  76653. $recv(runner)._run();
  76654. return self;
  76655. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76656. }, function($ctx1) {$ctx1.fill(self,"testTimeouts",{suite:suite,runner:runner,result:result,assertBlock:assertBlock},$globals.SUnitAsyncTest)});
  76657. //>>excludeEnd("ctx");
  76658. },
  76659. //>>excludeStart("ide", pragmas.excludeIdeData);
  76660. args: [],
  76661. 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\x09ann result == result ifTrue: [ result runs = result total ifTrue: assertBlock ] ].\x0a\x09runner run",
  76662. referencedClasses: ["TestSuiteRunner", "Set", "ResultAnnouncement"],
  76663. //>>excludeEnd("ide");
  76664. messageSends: ["collect:", "selector:", "class", "on:", "timeout:", "result", "async:", "assert:equals:", "selectorSetOf:", "errors", "new", "failures", "asSet", "finished", "on:do:", "announcer", "ifTrue:", "==", "=", "runs", "total", "run"]
  76665. }),
  76666. $globals.SUnitAsyncTest);
  76667. $core.addMethod(
  76668. $core.method({
  76669. selector: "testTwoAsyncPassesWithFinishedOnlyOneIsRun",
  76670. protocol: 'tests',
  76671. fn: function (){
  76672. var self=this;
  76673. var x;
  76674. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76675. return $core.withContext(function($ctx1) {
  76676. //>>excludeEnd("ctx");
  76677. var $1;
  76678. self["@flag"]="bad";
  76679. self._timeout_((10));
  76680. x=(0);
  76681. $1=self._async_((function(){
  76682. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76683. return $core.withContext(function($ctx2) {
  76684. //>>excludeEnd("ctx");
  76685. self._finished();
  76686. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76687. $ctx2.sendIdx["finished"]=1;
  76688. //>>excludeEnd("ctx");
  76689. self["@flag"]="ok";
  76690. self["@flag"];
  76691. x=$recv(x).__plus((1));
  76692. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76693. $ctx2.sendIdx["+"]=1;
  76694. //>>excludeEnd("ctx");
  76695. x;
  76696. return self._assert_equals_(x,(1));
  76697. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76698. $ctx2.sendIdx["assert:equals:"]=1;
  76699. //>>excludeEnd("ctx");
  76700. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76701. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  76702. //>>excludeEnd("ctx");
  76703. }));
  76704. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76705. $ctx1.sendIdx["async:"]=1;
  76706. //>>excludeEnd("ctx");
  76707. self["@flag"]=$recv($1)._valueWithTimeout_((0));
  76708. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76709. $ctx1.sendIdx["valueWithTimeout:"]=1;
  76710. //>>excludeEnd("ctx");
  76711. self["@flag"]=$recv(self._async_((function(){
  76712. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76713. return $core.withContext(function($ctx2) {
  76714. //>>excludeEnd("ctx");
  76715. self._finished();
  76716. self["@flag"]="ok";
  76717. self["@flag"];
  76718. x=$recv(x).__plus((1));
  76719. x;
  76720. return self._assert_equals_(x,(1));
  76721. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76722. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
  76723. //>>excludeEnd("ctx");
  76724. })))._valueWithTimeout_((0));
  76725. return self;
  76726. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76727. }, function($ctx1) {$ctx1.fill(self,"testTwoAsyncPassesWithFinishedOnlyOneIsRun",{x:x},$globals.SUnitAsyncTest)});
  76728. //>>excludeEnd("ctx");
  76729. },
  76730. //>>excludeStart("ide", pragmas.excludeIdeData);
  76731. args: [],
  76732. 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.",
  76733. referencedClasses: [],
  76734. //>>excludeEnd("ide");
  76735. messageSends: ["timeout:", "valueWithTimeout:", "async:", "finished", "+", "assert:equals:"]
  76736. }),
  76737. $globals.SUnitAsyncTest);
  76738. });
  76739. define("amber_cli/AmberCli", ["amber/boot", "amber_core/Kernel-Objects"], function($boot){
  76740. var $core=$boot.api,nil=$boot.nil,$recv=$boot.asReceiver,$globals=$boot.globals;
  76741. var smalltalk=$core,_st=$recv,globals=$globals;
  76742. $core.addPackage('AmberCli');
  76743. $core.packages["AmberCli"].transport = {"type":"amd","amdNamespace":"amber_cli"};
  76744. $core.addClass('AmberCli', $globals.Object, [], 'AmberCli');
  76745. //>>excludeStart("ide", pragmas.excludeIdeData);
  76746. $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.";
  76747. //>>excludeEnd("ide");
  76748. $core.addMethod(
  76749. $core.method({
  76750. selector: "commandLineSwitches",
  76751. protocol: 'commandline',
  76752. fn: function (){
  76753. var self=this;
  76754. var switches;
  76755. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76756. return $core.withContext(function($ctx1) {
  76757. //>>excludeEnd("ctx");
  76758. var $1;
  76759. switches=$recv($recv(self._class())._methodsInProtocol_("commands"))._collect_((function(each){
  76760. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76761. return $core.withContext(function($ctx2) {
  76762. //>>excludeEnd("ctx");
  76763. return $recv(each)._selector();
  76764. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76765. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  76766. //>>excludeEnd("ctx");
  76767. }));
  76768. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76769. $ctx1.sendIdx["collect:"]=1;
  76770. //>>excludeEnd("ctx");
  76771. switches=$recv(switches)._select_((function(each){
  76772. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76773. return $core.withContext(function($ctx2) {
  76774. //>>excludeEnd("ctx");
  76775. return $recv(each)._match_("^[^:]*:$");
  76776. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76777. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,2)});
  76778. //>>excludeEnd("ctx");
  76779. }));
  76780. switches=$recv(switches)._collect_((function(each){
  76781. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76782. return $core.withContext(function($ctx2) {
  76783. //>>excludeEnd("ctx");
  76784. return $recv($recv($recv(each)._allButLast())._replace_with_("([A-Z])","-$1"))._asLowercase();
  76785. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76786. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,3)});
  76787. //>>excludeEnd("ctx");
  76788. }));
  76789. $1=switches;
  76790. return $1;
  76791. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76792. }, function($ctx1) {$ctx1.fill(self,"commandLineSwitches",{switches:switches},$globals.AmberCli.klass)});
  76793. //>>excludeEnd("ctx");
  76794. },
  76795. //>>excludeStart("ide", pragmas.excludeIdeData);
  76796. args: [],
  76797. 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",
  76798. referencedClasses: [],
  76799. //>>excludeEnd("ide");
  76800. messageSends: ["collect:", "methodsInProtocol:", "class", "selector", "select:", "match:", "asLowercase", "replace:with:", "allButLast"]
  76801. }),
  76802. $globals.AmberCli.klass);
  76803. $core.addMethod(
  76804. $core.method({
  76805. selector: "config:",
  76806. protocol: 'commands',
  76807. fn: function (args){
  76808. var self=this;
  76809. function $Configurator(){return $globals.Configurator||(typeof Configurator=="undefined"?nil:Configurator)}
  76810. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76811. return $core.withContext(function($ctx1) {
  76812. //>>excludeEnd("ctx");
  76813. $recv($recv($Configurator())._new())._start();
  76814. return self;
  76815. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76816. }, function($ctx1) {$ctx1.fill(self,"config:",{args:args},$globals.AmberCli.klass)});
  76817. //>>excludeEnd("ctx");
  76818. },
  76819. //>>excludeStart("ide", pragmas.excludeIdeData);
  76820. args: ["args"],
  76821. source: "config: args\x0a\x09Configurator new start",
  76822. referencedClasses: ["Configurator"],
  76823. //>>excludeEnd("ide");
  76824. messageSends: ["start", "new"]
  76825. }),
  76826. $globals.AmberCli.klass);
  76827. $core.addMethod(
  76828. $core.method({
  76829. selector: "handleArguments:",
  76830. protocol: 'commandline',
  76831. fn: function (args){
  76832. var self=this;
  76833. var selector;
  76834. function $Array(){return $globals.Array||(typeof Array=="undefined"?nil:Array)}
  76835. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76836. return $core.withContext(function($ctx1) {
  76837. //>>excludeEnd("ctx");
  76838. var $1;
  76839. $1=$recv(args)._first();
  76840. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76841. $ctx1.sendIdx["first"]=1;
  76842. //>>excludeEnd("ctx");
  76843. selector=self._selectorForCommandLineSwitch_($1);
  76844. $recv(args)._remove_($recv(args)._first());
  76845. self._perform_withArguments_(selector,$recv($Array())._with_(args));
  76846. return self;
  76847. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76848. }, function($ctx1) {$ctx1.fill(self,"handleArguments:",{args:args,selector:selector},$globals.AmberCli.klass)});
  76849. //>>excludeEnd("ctx");
  76850. },
  76851. //>>excludeStart("ide", pragmas.excludeIdeData);
  76852. args: ["args"],
  76853. source: "handleArguments: args\x0a\x09| selector |\x0a\x0a\x09selector := self selectorForCommandLineSwitch: (args first).\x0a\x09args remove: args first.\x0a\x09self perform: selector withArguments: (Array with: args)",
  76854. referencedClasses: ["Array"],
  76855. //>>excludeEnd("ide");
  76856. messageSends: ["selectorForCommandLineSwitch:", "first", "remove:", "perform:withArguments:", "with:"]
  76857. }),
  76858. $globals.AmberCli.klass);
  76859. $core.addMethod(
  76860. $core.method({
  76861. selector: "help:",
  76862. protocol: 'commands',
  76863. fn: function (args){
  76864. var self=this;
  76865. function $Transcript(){return $globals.Transcript||(typeof Transcript=="undefined"?nil:Transcript)}
  76866. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76867. return $core.withContext(function($ctx1) {
  76868. //>>excludeEnd("ctx");
  76869. $recv($Transcript())._show_("Available commands");
  76870. $recv(self._commandLineSwitches())._do_((function(each){
  76871. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76872. return $core.withContext(function($ctx2) {
  76873. //>>excludeEnd("ctx");
  76874. return $recv(console)._log_(each);
  76875. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76876. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  76877. //>>excludeEnd("ctx");
  76878. }));
  76879. return self;
  76880. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76881. }, function($ctx1) {$ctx1.fill(self,"help:",{args:args},$globals.AmberCli.klass)});
  76882. //>>excludeEnd("ctx");
  76883. },
  76884. //>>excludeStart("ide", pragmas.excludeIdeData);
  76885. args: ["args"],
  76886. source: "help: args\x0a\x09Transcript show: 'Available commands'.\x0a\x09self commandLineSwitches do: [ :each | console log: each ]",
  76887. referencedClasses: ["Transcript"],
  76888. //>>excludeEnd("ide");
  76889. messageSends: ["show:", "do:", "commandLineSwitches", "log:"]
  76890. }),
  76891. $globals.AmberCli.klass);
  76892. $core.addMethod(
  76893. $core.method({
  76894. selector: "init:",
  76895. protocol: 'commands',
  76896. fn: function (args){
  76897. var self=this;
  76898. function $Initer(){return $globals.Initer||(typeof Initer=="undefined"?nil:Initer)}
  76899. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76900. return $core.withContext(function($ctx1) {
  76901. //>>excludeEnd("ctx");
  76902. $recv($recv($Initer())._new())._start();
  76903. return self;
  76904. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76905. }, function($ctx1) {$ctx1.fill(self,"init:",{args:args},$globals.AmberCli.klass)});
  76906. //>>excludeEnd("ctx");
  76907. },
  76908. //>>excludeStart("ide", pragmas.excludeIdeData);
  76909. args: ["args"],
  76910. source: "init: args\x0a\x09Initer new start",
  76911. referencedClasses: ["Initer"],
  76912. //>>excludeEnd("ide");
  76913. messageSends: ["start", "new"]
  76914. }),
  76915. $globals.AmberCli.klass);
  76916. $core.addMethod(
  76917. $core.method({
  76918. selector: "main",
  76919. protocol: 'startup',
  76920. fn: function (){
  76921. var self=this;
  76922. var args,nodeMinorVersion;
  76923. function $Transcript(){return $globals.Transcript||(typeof Transcript=="undefined"?nil:Transcript)}
  76924. function $Smalltalk(){return $globals.Smalltalk||(typeof Smalltalk=="undefined"?nil:Smalltalk)}
  76925. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76926. return $core.withContext(function($ctx1) {
  76927. //>>excludeEnd("ctx");
  76928. var $5,$4,$3,$2,$1,$8,$7,$6,$9,$10,$11;
  76929. $5=$recv($Smalltalk())._version();
  76930. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76931. $ctx1.sendIdx["version"]=1;
  76932. //>>excludeEnd("ctx");
  76933. $4="Welcome to Amber version ".__comma($5);
  76934. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76935. $ctx1.sendIdx[","]=4;
  76936. //>>excludeEnd("ctx");
  76937. $3=$recv($4).__comma(" (NodeJS ");
  76938. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76939. $ctx1.sendIdx[","]=3;
  76940. //>>excludeEnd("ctx");
  76941. $2=$recv($3).__comma($recv($recv(process)._versions())._node());
  76942. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76943. $ctx1.sendIdx[","]=2;
  76944. //>>excludeEnd("ctx");
  76945. $1=$recv($2).__comma(").");
  76946. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76947. $ctx1.sendIdx[","]=1;
  76948. //>>excludeEnd("ctx");
  76949. $recv($Transcript())._show_($1);
  76950. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76951. $ctx1.sendIdx["show:"]=1;
  76952. //>>excludeEnd("ctx");
  76953. $8=$recv(process)._version();
  76954. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76955. $ctx1.sendIdx["version"]=2;
  76956. //>>excludeEnd("ctx");
  76957. $7=$recv($8)._tokenize_(".");
  76958. $6=$recv($7)._second();
  76959. nodeMinorVersion=$recv($6)._asNumber();
  76960. $9=$recv(nodeMinorVersion).__lt((8));
  76961. if($core.assert($9)){
  76962. $recv($Transcript())._show_("You are currently using Node.js ".__comma($recv(process)._version()));
  76963. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76964. $ctx1.sendIdx["show:"]=2;
  76965. //>>excludeEnd("ctx");
  76966. $recv($Transcript())._show_("Required is at least Node.js v0.8.x or greater.");
  76967. return (-1);
  76968. };
  76969. args=$recv(process)._argv();
  76970. $recv(args)._removeFrom_to_((1),(2));
  76971. $10=$recv(args)._isEmpty();
  76972. if($core.assert($10)){
  76973. self._help_(nil);
  76974. } else {
  76975. $11=self._handleArguments_(args);
  76976. return $11;
  76977. };
  76978. return self;
  76979. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76980. }, function($ctx1) {$ctx1.fill(self,"main",{args:args,nodeMinorVersion:nodeMinorVersion},$globals.AmberCli.klass)});
  76981. //>>excludeEnd("ctx");
  76982. },
  76983. //>>excludeStart("ide", pragmas.excludeIdeData);
  76984. args: [],
  76985. source: "main\x0a\x09\x22Main entry point for Amber applications.\x0a\x09Parses commandline arguments and starts the according subprogram.\x22\x0a\x09| args nodeMinorVersion |\x0a\x09\x0a\x09Transcript show: 'Welcome to Amber version ', Smalltalk version, ' (NodeJS ', process versions node, ').'.\x0a\x0a\x09nodeMinorVersion := ((process version) tokenize: '.') second asNumber.\x0a\x09nodeMinorVersion < 8 ifTrue: [\x0a\x09\x09Transcript show: 'You are currently using Node.js ', (process version).\x0a\x09\x09Transcript show: 'Required is at least Node.js v0.8.x or greater.'.\x0a\x09\x09^ -1.\x0a\x09].\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\x09(args isEmpty)\x0a\x09\x09ifTrue: [self help: nil]\x0a\x09\x09ifFalse: [^self handleArguments: args]",
  76986. referencedClasses: ["Transcript", "Smalltalk"],
  76987. //>>excludeEnd("ide");
  76988. messageSends: ["show:", ",", "version", "node", "versions", "asNumber", "second", "tokenize:", "ifTrue:", "<", "argv", "removeFrom:to:", "ifTrue:ifFalse:", "isEmpty", "help:", "handleArguments:"]
  76989. }),
  76990. $globals.AmberCli.klass);
  76991. $core.addMethod(
  76992. $core.method({
  76993. selector: "repl:",
  76994. protocol: 'commands',
  76995. fn: function (args){
  76996. var self=this;
  76997. function $Repl(){return $globals.Repl||(typeof Repl=="undefined"?nil:Repl)}
  76998. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  76999. return $core.withContext(function($ctx1) {
  77000. //>>excludeEnd("ctx");
  77001. var $1;
  77002. $1=$recv($recv($Repl())._new())._createInterface();
  77003. return $1;
  77004. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77005. }, function($ctx1) {$ctx1.fill(self,"repl:",{args:args},$globals.AmberCli.klass)});
  77006. //>>excludeEnd("ctx");
  77007. },
  77008. //>>excludeStart("ide", pragmas.excludeIdeData);
  77009. args: ["args"],
  77010. source: "repl: args\x0a\x09^ Repl new createInterface",
  77011. referencedClasses: ["Repl"],
  77012. //>>excludeEnd("ide");
  77013. messageSends: ["createInterface", "new"]
  77014. }),
  77015. $globals.AmberCli.klass);
  77016. $core.addMethod(
  77017. $core.method({
  77018. selector: "selectorForCommandLineSwitch:",
  77019. protocol: 'commandline',
  77020. fn: function (aSwitch){
  77021. var self=this;
  77022. var command,selector;
  77023. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77024. return $core.withContext(function($ctx1) {
  77025. //>>excludeEnd("ctx");
  77026. var $1,$2;
  77027. $1=$recv(self._commandLineSwitches())._includes_(aSwitch);
  77028. if($core.assert($1)){
  77029. selector=$recv($recv(aSwitch)._replace_with_("-[a-z]",(function(each){
  77030. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77031. return $core.withContext(function($ctx2) {
  77032. //>>excludeEnd("ctx");
  77033. return $recv($recv(each)._second())._asUppercase();
  77034. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77035. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,2)});
  77036. //>>excludeEnd("ctx");
  77037. }))).__comma(":");
  77038. selector;
  77039. } else {
  77040. selector="help:";
  77041. selector;
  77042. };
  77043. $2=selector;
  77044. return $2;
  77045. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77046. }, function($ctx1) {$ctx1.fill(self,"selectorForCommandLineSwitch:",{aSwitch:aSwitch,command:command,selector:selector},$globals.AmberCli.klass)});
  77047. //>>excludeEnd("ctx");
  77048. },
  77049. //>>excludeStart("ide", pragmas.excludeIdeData);
  77050. args: ["aSwitch"],
  77051. 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",
  77052. referencedClasses: [],
  77053. //>>excludeEnd("ide");
  77054. messageSends: ["ifTrue:ifFalse:", "includes:", "commandLineSwitches", ",", "replace:with:", "asUppercase", "second"]
  77055. }),
  77056. $globals.AmberCli.klass);
  77057. $core.addMethod(
  77058. $core.method({
  77059. selector: "serve:",
  77060. protocol: 'commands',
  77061. fn: function (args){
  77062. var self=this;
  77063. function $FileServer(){return $globals.FileServer||(typeof FileServer=="undefined"?nil:FileServer)}
  77064. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77065. return $core.withContext(function($ctx1) {
  77066. //>>excludeEnd("ctx");
  77067. var $1;
  77068. $1=$recv($recv($FileServer())._createServerWithArguments_(args))._start();
  77069. return $1;
  77070. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77071. }, function($ctx1) {$ctx1.fill(self,"serve:",{args:args},$globals.AmberCli.klass)});
  77072. //>>excludeEnd("ctx");
  77073. },
  77074. //>>excludeStart("ide", pragmas.excludeIdeData);
  77075. args: ["args"],
  77076. source: "serve: args\x0a\x09^ (FileServer createServerWithArguments: args) start",
  77077. referencedClasses: ["FileServer"],
  77078. //>>excludeEnd("ide");
  77079. messageSends: ["start", "createServerWithArguments:"]
  77080. }),
  77081. $globals.AmberCli.klass);
  77082. $core.addMethod(
  77083. $core.method({
  77084. selector: "version:",
  77085. protocol: 'commands',
  77086. fn: function (arguments){
  77087. var self=this;
  77088. return self;
  77089. },
  77090. //>>excludeStart("ide", pragmas.excludeIdeData);
  77091. args: ["arguments"],
  77092. source: "version: arguments",
  77093. referencedClasses: [],
  77094. //>>excludeEnd("ide");
  77095. messageSends: []
  77096. }),
  77097. $globals.AmberCli.klass);
  77098. $core.addClass('BaseFileManipulator', $globals.Object, ['path', 'fs'], 'AmberCli');
  77099. $core.addMethod(
  77100. $core.method({
  77101. selector: "dirname",
  77102. protocol: 'private',
  77103. fn: function (){
  77104. var self=this;
  77105. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77106. return $core.withContext(function($ctx1) {
  77107. //>>excludeEnd("ctx");
  77108. return __dirname;
  77109. return self;
  77110. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77111. }, function($ctx1) {$ctx1.fill(self,"dirname",{},$globals.BaseFileManipulator)});
  77112. //>>excludeEnd("ctx");
  77113. },
  77114. //>>excludeStart("ide", pragmas.excludeIdeData);
  77115. args: [],
  77116. source: "dirname\x0a\x09<return __dirname>",
  77117. referencedClasses: [],
  77118. //>>excludeEnd("ide");
  77119. messageSends: []
  77120. }),
  77121. $globals.BaseFileManipulator);
  77122. $core.addMethod(
  77123. $core.method({
  77124. selector: "initialize",
  77125. protocol: 'initialization',
  77126. fn: function (){
  77127. var self=this;
  77128. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77129. return $core.withContext(function($ctx1) {
  77130. //>>excludeEnd("ctx");
  77131. (
  77132. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77133. $ctx1.supercall = true,
  77134. //>>excludeEnd("ctx");
  77135. $globals.BaseFileManipulator.superclass.fn.prototype._initialize.apply($recv(self), []));
  77136. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77137. $ctx1.supercall = false;
  77138. //>>excludeEnd("ctx");;
  77139. self["@path"]=$recv(require)._value_("path");
  77140. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77141. $ctx1.sendIdx["value:"]=1;
  77142. //>>excludeEnd("ctx");
  77143. self["@fs"]=$recv(require)._value_("fs");
  77144. return self;
  77145. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77146. }, function($ctx1) {$ctx1.fill(self,"initialize",{},$globals.BaseFileManipulator)});
  77147. //>>excludeEnd("ctx");
  77148. },
  77149. //>>excludeStart("ide", pragmas.excludeIdeData);
  77150. args: [],
  77151. source: "initialize\x0a\x09super initialize.\x0a\x09path := require value: 'path'.\x0a\x09fs := require value: 'fs'",
  77152. referencedClasses: [],
  77153. //>>excludeEnd("ide");
  77154. messageSends: ["initialize", "value:"]
  77155. }),
  77156. $globals.BaseFileManipulator);
  77157. $core.addMethod(
  77158. $core.method({
  77159. selector: "rootDirname",
  77160. protocol: 'private',
  77161. fn: function (){
  77162. var self=this;
  77163. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77164. return $core.withContext(function($ctx1) {
  77165. //>>excludeEnd("ctx");
  77166. var $1;
  77167. $1=$recv(self["@path"])._join_with_(self._dirname(),"..");
  77168. return $1;
  77169. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77170. }, function($ctx1) {$ctx1.fill(self,"rootDirname",{},$globals.BaseFileManipulator)});
  77171. //>>excludeEnd("ctx");
  77172. },
  77173. //>>excludeStart("ide", pragmas.excludeIdeData);
  77174. args: [],
  77175. source: "rootDirname\x0a\x09^ path join: self dirname with: '..'",
  77176. referencedClasses: [],
  77177. //>>excludeEnd("ide");
  77178. messageSends: ["join:with:", "dirname"]
  77179. }),
  77180. $globals.BaseFileManipulator);
  77181. $core.addClass('Configurator', $globals.BaseFileManipulator, [], 'AmberCli');
  77182. $core.addMethod(
  77183. $core.method({
  77184. selector: "initialize",
  77185. protocol: 'initialization',
  77186. fn: function (){
  77187. var self=this;
  77188. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77189. return $core.withContext(function($ctx1) {
  77190. //>>excludeEnd("ctx");
  77191. (
  77192. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77193. $ctx1.supercall = true,
  77194. //>>excludeEnd("ctx");
  77195. $globals.Configurator.superclass.fn.prototype._initialize.apply($recv(self), []));
  77196. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77197. $ctx1.supercall = false;
  77198. //>>excludeEnd("ctx");;
  77199. return self;
  77200. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77201. }, function($ctx1) {$ctx1.fill(self,"initialize",{},$globals.Configurator)});
  77202. //>>excludeEnd("ctx");
  77203. },
  77204. //>>excludeStart("ide", pragmas.excludeIdeData);
  77205. args: [],
  77206. source: "initialize\x0a\x09super initialize",
  77207. referencedClasses: [],
  77208. //>>excludeEnd("ide");
  77209. messageSends: ["initialize"]
  77210. }),
  77211. $globals.Configurator);
  77212. $core.addMethod(
  77213. $core.method({
  77214. selector: "start",
  77215. protocol: 'action',
  77216. fn: function (){
  77217. var self=this;
  77218. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77219. return $core.withContext(function($ctx1) {
  77220. //>>excludeEnd("ctx");
  77221. var $receiver;
  77222. self._writeConfigThenDo_((function(err){
  77223. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77224. return $core.withContext(function($ctx2) {
  77225. //>>excludeEnd("ctx");
  77226. if(($receiver = err) == null || $receiver.isNil){
  77227. return $recv(process)._exit();
  77228. } else {
  77229. return $recv(process)._exit_((111));
  77230. };
  77231. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77232. }, function($ctx2) {$ctx2.fillBlock({err:err},$ctx1,1)});
  77233. //>>excludeEnd("ctx");
  77234. }));
  77235. return self;
  77236. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77237. }, function($ctx1) {$ctx1.fill(self,"start",{},$globals.Configurator)});
  77238. //>>excludeEnd("ctx");
  77239. },
  77240. //>>excludeStart("ide", pragmas.excludeIdeData);
  77241. args: [],
  77242. source: "start\x0a\x09self writeConfigThenDo: [ :err | err\x0a\x09\x09ifNotNil: [ process exit: 111 ]\x0a\x09\x09ifNil: [ process exit ]]",
  77243. referencedClasses: [],
  77244. //>>excludeEnd("ide");
  77245. messageSends: ["writeConfigThenDo:", "ifNotNil:ifNil:", "exit:", "exit"]
  77246. }),
  77247. $globals.Configurator);
  77248. $core.addMethod(
  77249. $core.method({
  77250. selector: "writeConfigThenDo:",
  77251. protocol: 'action',
  77252. fn: function (aBlock){
  77253. var self=this;
  77254. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77255. return $core.withContext(function($ctx1) {
  77256. //>>excludeEnd("ctx");
  77257. $recv($recv(require)._value_("amber-dev/lib/config"))._writeConfig_toFile_thenDo_($recv(process)._cwd(),"config.js",aBlock);
  77258. return self;
  77259. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77260. }, function($ctx1) {$ctx1.fill(self,"writeConfigThenDo:",{aBlock:aBlock},$globals.Configurator)});
  77261. //>>excludeEnd("ctx");
  77262. },
  77263. //>>excludeStart("ide", pragmas.excludeIdeData);
  77264. args: ["aBlock"],
  77265. source: "writeConfigThenDo: aBlock\x0a\x09(require value: 'amber-dev/lib/config')\x0a\x09\x09writeConfig: process cwd\x0a\x09\x09toFile: 'config.js'\x0a\x09\x09thenDo: aBlock",
  77266. referencedClasses: [],
  77267. //>>excludeEnd("ide");
  77268. messageSends: ["writeConfig:toFile:thenDo:", "value:", "cwd"]
  77269. }),
  77270. $globals.Configurator);
  77271. $core.addClass('FileServer', $globals.BaseFileManipulator, ['http', 'url', 'host', 'port', 'basePath', 'util', 'username', 'password', 'fallbackPage'], 'AmberCli');
  77272. //>>excludeStart("ide", pragmas.excludeIdeData);
  77273. $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.";
  77274. //>>excludeEnd("ide");
  77275. $core.addMethod(
  77276. $core.method({
  77277. selector: "base64Decode:",
  77278. protocol: 'private',
  77279. fn: function (aString){
  77280. var self=this;
  77281. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77282. return $core.withContext(function($ctx1) {
  77283. //>>excludeEnd("ctx");
  77284. return (new Buffer(aString, 'base64').toString());
  77285. return self;
  77286. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77287. }, function($ctx1) {$ctx1.fill(self,"base64Decode:",{aString:aString},$globals.FileServer)});
  77288. //>>excludeEnd("ctx");
  77289. },
  77290. //>>excludeStart("ide", pragmas.excludeIdeData);
  77291. args: ["aString"],
  77292. source: "base64Decode: aString\x0a\x09<return (new Buffer(aString, 'base64').toString())>",
  77293. referencedClasses: [],
  77294. //>>excludeEnd("ide");
  77295. messageSends: []
  77296. }),
  77297. $globals.FileServer);
  77298. $core.addMethod(
  77299. $core.method({
  77300. selector: "basePath",
  77301. protocol: 'accessing',
  77302. fn: function (){
  77303. var self=this;
  77304. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77305. return $core.withContext(function($ctx1) {
  77306. //>>excludeEnd("ctx");
  77307. var $2,$1,$receiver;
  77308. $2=self["@basePath"];
  77309. if(($receiver = $2) == null || $receiver.isNil){
  77310. $1=$recv(self._class())._defaultBasePath();
  77311. } else {
  77312. $1=$2;
  77313. };
  77314. return $1;
  77315. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77316. }, function($ctx1) {$ctx1.fill(self,"basePath",{},$globals.FileServer)});
  77317. //>>excludeEnd("ctx");
  77318. },
  77319. //>>excludeStart("ide", pragmas.excludeIdeData);
  77320. args: [],
  77321. source: "basePath\x0a\x09^ basePath ifNil: [self class defaultBasePath]",
  77322. referencedClasses: [],
  77323. //>>excludeEnd("ide");
  77324. messageSends: ["ifNil:", "defaultBasePath", "class"]
  77325. }),
  77326. $globals.FileServer);
  77327. $core.addMethod(
  77328. $core.method({
  77329. selector: "basePath:",
  77330. protocol: 'accessing',
  77331. fn: function (aString){
  77332. var self=this;
  77333. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77334. return $core.withContext(function($ctx1) {
  77335. //>>excludeEnd("ctx");
  77336. self["@basePath"]=aString;
  77337. self._validateBasePath();
  77338. return self;
  77339. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77340. }, function($ctx1) {$ctx1.fill(self,"basePath:",{aString:aString},$globals.FileServer)});
  77341. //>>excludeEnd("ctx");
  77342. },
  77343. //>>excludeStart("ide", pragmas.excludeIdeData);
  77344. args: ["aString"],
  77345. source: "basePath: aString\x0a\x09basePath := aString.\x0a\x09self validateBasePath.",
  77346. referencedClasses: [],
  77347. //>>excludeEnd("ide");
  77348. messageSends: ["validateBasePath"]
  77349. }),
  77350. $globals.FileServer);
  77351. $core.addMethod(
  77352. $core.method({
  77353. selector: "checkDirectoryLayout",
  77354. protocol: 'initialization',
  77355. fn: function (){
  77356. var self=this;
  77357. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77358. return $core.withContext(function($ctx1) {
  77359. //>>excludeEnd("ctx");
  77360. var $1;
  77361. $1=$recv(self["@fs"])._existsSync_(self._withBasePath_("index.html"));
  77362. if(!$core.assert($1)){
  77363. $recv(console)._warn_("Warning: project directory does not contain index.html.");
  77364. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77365. $ctx1.sendIdx["warn:"]=1;
  77366. //>>excludeEnd("ctx");
  77367. $recv(console)._warn_(" You can specify the directory containing index.html with --base-path.");
  77368. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77369. $ctx1.sendIdx["warn:"]=2;
  77370. //>>excludeEnd("ctx");
  77371. $recv(console)._warn_(" You can also specify a page to be served by default,");
  77372. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77373. $ctx1.sendIdx["warn:"]=3;
  77374. //>>excludeEnd("ctx");
  77375. $recv(console)._warn_(" for all paths that do not map to a file, with --fallback-page.");
  77376. };
  77377. return self;
  77378. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77379. }, function($ctx1) {$ctx1.fill(self,"checkDirectoryLayout",{},$globals.FileServer)});
  77380. //>>excludeEnd("ctx");
  77381. },
  77382. //>>excludeStart("ide", pragmas.excludeIdeData);
  77383. args: [],
  77384. 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.'].",
  77385. referencedClasses: [],
  77386. //>>excludeEnd("ide");
  77387. messageSends: ["ifFalse:", "existsSync:", "withBasePath:", "warn:"]
  77388. }),
  77389. $globals.FileServer);
  77390. $core.addMethod(
  77391. $core.method({
  77392. selector: "fallbackPage",
  77393. protocol: 'accessing',
  77394. fn: function (){
  77395. var self=this;
  77396. var $1;
  77397. $1=self["@fallbackPage"];
  77398. return $1;
  77399. },
  77400. //>>excludeStart("ide", pragmas.excludeIdeData);
  77401. args: [],
  77402. source: "fallbackPage\x0a\x09^ fallbackPage",
  77403. referencedClasses: [],
  77404. //>>excludeEnd("ide");
  77405. messageSends: []
  77406. }),
  77407. $globals.FileServer);
  77408. $core.addMethod(
  77409. $core.method({
  77410. selector: "fallbackPage:",
  77411. protocol: 'accessing',
  77412. fn: function (aString){
  77413. var self=this;
  77414. self["@fallbackPage"]=aString;
  77415. return self;
  77416. },
  77417. //>>excludeStart("ide", pragmas.excludeIdeData);
  77418. args: ["aString"],
  77419. source: "fallbackPage: aString\x0a\x09fallbackPage := aString",
  77420. referencedClasses: [],
  77421. //>>excludeEnd("ide");
  77422. messageSends: []
  77423. }),
  77424. $globals.FileServer);
  77425. $core.addMethod(
  77426. $core.method({
  77427. selector: "handleGETRequest:respondTo:",
  77428. protocol: 'request handling',
  77429. fn: function (aRequest,aResponse){
  77430. var self=this;
  77431. var uri,filename;
  77432. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77433. return $core.withContext(function($ctx1) {
  77434. //>>excludeEnd("ctx");
  77435. var $1;
  77436. uri=$recv(self["@url"])._parse_($recv(aRequest)._url());
  77437. filename=$recv(self["@path"])._join_with_(self._basePath(),$recv(uri)._pathname());
  77438. $recv(self["@fs"])._exists_do_(filename,(function(aBoolean){
  77439. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77440. return $core.withContext(function($ctx2) {
  77441. //>>excludeEnd("ctx");
  77442. if($core.assert(aBoolean)){
  77443. $1=$recv($recv(self["@fs"])._statSync_(filename))._isDirectory();
  77444. if($core.assert($1)){
  77445. return self._respondDirectoryNamed_from_to_(filename,uri,aResponse);
  77446. } else {
  77447. return self._respondFileNamed_to_(filename,aResponse);
  77448. };
  77449. } else {
  77450. return self._respondNotFoundTo_(aResponse);
  77451. };
  77452. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77453. }, function($ctx2) {$ctx2.fillBlock({aBoolean:aBoolean},$ctx1,1)});
  77454. //>>excludeEnd("ctx");
  77455. }));
  77456. return self;
  77457. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77458. }, function($ctx1) {$ctx1.fill(self,"handleGETRequest:respondTo:",{aRequest:aRequest,aResponse:aResponse,uri:uri,filename:filename},$globals.FileServer)});
  77459. //>>excludeEnd("ctx");
  77460. },
  77461. //>>excludeStart("ide", pragmas.excludeIdeData);
  77462. args: ["aRequest", "aResponse"],
  77463. source: "handleGETRequest: aRequest respondTo: aResponse\x0a\x09| uri filename |\x0a\x09uri := url parse: aRequest url.\x0a\x09filename := path join: self basePath with: uri pathname.\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]]]",
  77464. referencedClasses: [],
  77465. //>>excludeEnd("ide");
  77466. messageSends: ["parse:", "url", "join:with:", "basePath", "pathname", "exists:do:", "ifFalse:ifTrue:", "respondNotFoundTo:", "ifTrue:ifFalse:", "isDirectory", "statSync:", "respondDirectoryNamed:from:to:", "respondFileNamed:to:"]
  77467. }),
  77468. $globals.FileServer);
  77469. $core.addMethod(
  77470. $core.method({
  77471. selector: "handleOPTIONSRequest:respondTo:",
  77472. protocol: 'request handling',
  77473. fn: function (aRequest,aResponse){
  77474. var self=this;
  77475. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77476. return $core.withContext(function($ctx1) {
  77477. //>>excludeEnd("ctx");
  77478. $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)]));
  77479. $recv(aResponse)._end();
  77480. return self;
  77481. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77482. }, function($ctx1) {$ctx1.fill(self,"handleOPTIONSRequest:respondTo:",{aRequest:aRequest,aResponse:aResponse},$globals.FileServer)});
  77483. //>>excludeEnd("ctx");
  77484. },
  77485. //>>excludeStart("ide", pragmas.excludeIdeData);
  77486. args: ["aRequest", "aResponse"],
  77487. 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",
  77488. referencedClasses: [],
  77489. //>>excludeEnd("ide");
  77490. messageSends: ["writeHead:options:", "end"]
  77491. }),
  77492. $globals.FileServer);
  77493. $core.addMethod(
  77494. $core.method({
  77495. selector: "handlePUTRequest:respondTo:",
  77496. protocol: 'request handling',
  77497. fn: function (aRequest,aResponse){
  77498. var self=this;
  77499. var file,stream;
  77500. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77501. return $core.withContext(function($ctx1) {
  77502. //>>excludeEnd("ctx");
  77503. var $1,$2,$3,$4;
  77504. $1=self._isAuthenticated_(aRequest);
  77505. if(!$core.assert($1)){
  77506. self._respondAuthenticationRequiredTo_(aResponse);
  77507. return nil;
  77508. };
  77509. file=".".__comma($recv(aRequest)._url());
  77510. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77511. $ctx1.sendIdx[","]=1;
  77512. //>>excludeEnd("ctx");
  77513. stream=$recv(self["@fs"])._createWriteStream_(file);
  77514. $recv(stream)._on_do_("error",(function(error){
  77515. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77516. return $core.withContext(function($ctx2) {
  77517. //>>excludeEnd("ctx");
  77518. $2=console;
  77519. $3="Error creating WriteStream for file ".__comma(file);
  77520. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77521. $ctx2.sendIdx[","]=2;
  77522. //>>excludeEnd("ctx");
  77523. $recv($2)._warn_($3);
  77524. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77525. $ctx2.sendIdx["warn:"]=1;
  77526. //>>excludeEnd("ctx");
  77527. $recv(console)._warn_(" Did you forget to create the necessary directory in your project (often /src)?");
  77528. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77529. $ctx2.sendIdx["warn:"]=2;
  77530. //>>excludeEnd("ctx");
  77531. $recv(console)._warn_(" The exact error is: ".__comma(error));
  77532. return self._respondNotCreatedTo_(aResponse);
  77533. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77534. }, function($ctx2) {$ctx2.fillBlock({error:error},$ctx1,2)});
  77535. //>>excludeEnd("ctx");
  77536. }));
  77537. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77538. $ctx1.sendIdx["on:do:"]=1;
  77539. //>>excludeEnd("ctx");
  77540. $recv(stream)._on_do_("close",(function(){
  77541. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77542. return $core.withContext(function($ctx2) {
  77543. //>>excludeEnd("ctx");
  77544. return self._respondCreatedTo_(aResponse);
  77545. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77546. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,3)});
  77547. //>>excludeEnd("ctx");
  77548. }));
  77549. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77550. $ctx1.sendIdx["on:do:"]=2;
  77551. //>>excludeEnd("ctx");
  77552. $recv(aRequest)._setEncoding_("utf8");
  77553. $recv(aRequest)._on_do_("data",(function(data){
  77554. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77555. return $core.withContext(function($ctx2) {
  77556. //>>excludeEnd("ctx");
  77557. return $recv(stream)._write_(data);
  77558. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77559. }, function($ctx2) {$ctx2.fillBlock({data:data},$ctx1,4)});
  77560. //>>excludeEnd("ctx");
  77561. }));
  77562. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77563. $ctx1.sendIdx["on:do:"]=3;
  77564. //>>excludeEnd("ctx");
  77565. $recv(aRequest)._on_do_("end",(function(){
  77566. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77567. return $core.withContext(function($ctx2) {
  77568. //>>excludeEnd("ctx");
  77569. $4=$recv(stream)._writable();
  77570. if($core.assert($4)){
  77571. return $recv(stream)._end();
  77572. };
  77573. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77574. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,5)});
  77575. //>>excludeEnd("ctx");
  77576. }));
  77577. return self;
  77578. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77579. }, function($ctx1) {$ctx1.fill(self,"handlePUTRequest:respondTo:",{aRequest:aRequest,aResponse:aResponse,file:file,stream:stream},$globals.FileServer)});
  77580. //>>excludeEnd("ctx");
  77581. },
  77582. //>>excludeStart("ide", pragmas.excludeIdeData);
  77583. args: ["aRequest", "aResponse"],
  77584. 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.\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.\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]]",
  77585. referencedClasses: [],
  77586. //>>excludeEnd("ide");
  77587. messageSends: ["ifFalse:", "isAuthenticated:", "respondAuthenticationRequiredTo:", ",", "url", "createWriteStream:", "on:do:", "warn:", "respondNotCreatedTo:", "respondCreatedTo:", "setEncoding:", "write:", "ifTrue:", "writable", "end"]
  77588. }),
  77589. $globals.FileServer);
  77590. $core.addMethod(
  77591. $core.method({
  77592. selector: "handleRequest:respondTo:",
  77593. protocol: 'request handling',
  77594. fn: function (aRequest,aResponse){
  77595. var self=this;
  77596. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77597. return $core.withContext(function($ctx1) {
  77598. //>>excludeEnd("ctx");
  77599. var $2,$1,$4,$3,$5;
  77600. $2=$recv(aRequest)._method();
  77601. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77602. $ctx1.sendIdx["method"]=1;
  77603. //>>excludeEnd("ctx");
  77604. $1=$recv($2).__eq("PUT");
  77605. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77606. $ctx1.sendIdx["="]=1;
  77607. //>>excludeEnd("ctx");
  77608. if($core.assert($1)){
  77609. self._handlePUTRequest_respondTo_(aRequest,aResponse);
  77610. };
  77611. $4=$recv(aRequest)._method();
  77612. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77613. $ctx1.sendIdx["method"]=2;
  77614. //>>excludeEnd("ctx");
  77615. $3=$recv($4).__eq("GET");
  77616. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77617. $ctx1.sendIdx["="]=2;
  77618. //>>excludeEnd("ctx");
  77619. if($core.assert($3)){
  77620. self._handleGETRequest_respondTo_(aRequest,aResponse);
  77621. };
  77622. $5=$recv($recv(aRequest)._method()).__eq("OPTIONS");
  77623. if($core.assert($5)){
  77624. self._handleOPTIONSRequest_respondTo_(aRequest,aResponse);
  77625. };
  77626. return self;
  77627. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77628. }, function($ctx1) {$ctx1.fill(self,"handleRequest:respondTo:",{aRequest:aRequest,aResponse:aResponse},$globals.FileServer)});
  77629. //>>excludeEnd("ctx");
  77630. },
  77631. //>>excludeStart("ide", pragmas.excludeIdeData);
  77632. args: ["aRequest", "aResponse"],
  77633. 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]",
  77634. referencedClasses: [],
  77635. //>>excludeEnd("ide");
  77636. messageSends: ["ifTrue:", "=", "method", "handlePUTRequest:respondTo:", "handleGETRequest:respondTo:", "handleOPTIONSRequest:respondTo:"]
  77637. }),
  77638. $globals.FileServer);
  77639. $core.addMethod(
  77640. $core.method({
  77641. selector: "host",
  77642. protocol: 'accessing',
  77643. fn: function (){
  77644. var self=this;
  77645. var $1;
  77646. $1=self["@host"];
  77647. return $1;
  77648. },
  77649. //>>excludeStart("ide", pragmas.excludeIdeData);
  77650. args: [],
  77651. source: "host\x0a\x09^ host",
  77652. referencedClasses: [],
  77653. //>>excludeEnd("ide");
  77654. messageSends: []
  77655. }),
  77656. $globals.FileServer);
  77657. $core.addMethod(
  77658. $core.method({
  77659. selector: "host:",
  77660. protocol: 'accessing',
  77661. fn: function (hostname){
  77662. var self=this;
  77663. self["@host"]=hostname;
  77664. return self;
  77665. },
  77666. //>>excludeStart("ide", pragmas.excludeIdeData);
  77667. args: ["hostname"],
  77668. source: "host: hostname\x0a\x09host := hostname",
  77669. referencedClasses: [],
  77670. //>>excludeEnd("ide");
  77671. messageSends: []
  77672. }),
  77673. $globals.FileServer);
  77674. $core.addMethod(
  77675. $core.method({
  77676. selector: "initialize",
  77677. protocol: 'initialization',
  77678. fn: function (){
  77679. var self=this;
  77680. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77681. return $core.withContext(function($ctx1) {
  77682. //>>excludeEnd("ctx");
  77683. var $1;
  77684. (
  77685. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77686. $ctx1.supercall = true,
  77687. //>>excludeEnd("ctx");
  77688. $globals.FileServer.superclass.fn.prototype._initialize.apply($recv(self), []));
  77689. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77690. $ctx1.supercall = false;
  77691. //>>excludeEnd("ctx");;
  77692. self["@http"]=self._require_("http");
  77693. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77694. $ctx1.sendIdx["require:"]=1;
  77695. //>>excludeEnd("ctx");
  77696. self["@util"]=self._require_("util");
  77697. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77698. $ctx1.sendIdx["require:"]=2;
  77699. //>>excludeEnd("ctx");
  77700. self["@url"]=self._require_("url");
  77701. $1=self._class();
  77702. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77703. $ctx1.sendIdx["class"]=1;
  77704. //>>excludeEnd("ctx");
  77705. self["@host"]=$recv($1)._defaultHost();
  77706. self["@port"]=$recv(self._class())._defaultPort();
  77707. self["@username"]=nil;
  77708. self["@password"]=nil;
  77709. self["@fallbackPage"]=nil;
  77710. return self;
  77711. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77712. }, function($ctx1) {$ctx1.fill(self,"initialize",{},$globals.FileServer)});
  77713. //>>excludeEnd("ctx");
  77714. },
  77715. //>>excludeStart("ide", pragmas.excludeIdeData);
  77716. args: [],
  77717. 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.",
  77718. referencedClasses: [],
  77719. //>>excludeEnd("ide");
  77720. messageSends: ["initialize", "require:", "defaultHost", "class", "defaultPort"]
  77721. }),
  77722. $globals.FileServer);
  77723. $core.addMethod(
  77724. $core.method({
  77725. selector: "isAuthenticated:",
  77726. protocol: 'private',
  77727. fn: function (aRequest){
  77728. var self=this;
  77729. var header,token,auth,parts;
  77730. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77731. return $core.withContext(function($ctx1) {
  77732. //>>excludeEnd("ctx");
  77733. var $2,$1,$3,$4,$5,$6,$9,$10,$8,$7,$receiver;
  77734. $2=$recv(self["@username"])._isNil();
  77735. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77736. $ctx1.sendIdx["isNil"]=1;
  77737. //>>excludeEnd("ctx");
  77738. $1=$recv($2)._and_((function(){
  77739. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77740. return $core.withContext(function($ctx2) {
  77741. //>>excludeEnd("ctx");
  77742. return $recv(self["@password"])._isNil();
  77743. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77744. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  77745. //>>excludeEnd("ctx");
  77746. }));
  77747. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77748. $ctx1.sendIdx["and:"]=1;
  77749. //>>excludeEnd("ctx");
  77750. if($core.assert($1)){
  77751. return true;
  77752. };
  77753. $3=$recv($recv(aRequest)._headers())._at_("authorization");
  77754. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77755. $ctx1.sendIdx["at:"]=1;
  77756. //>>excludeEnd("ctx");
  77757. if(($receiver = $3) == null || $receiver.isNil){
  77758. header="";
  77759. } else {
  77760. header=$3;
  77761. };
  77762. $4=$recv(header)._isEmpty();
  77763. if($core.assert($4)){
  77764. return false;
  77765. } else {
  77766. $5=$recv(header)._tokenize_(" ");
  77767. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77768. $ctx1.sendIdx["tokenize:"]=1;
  77769. //>>excludeEnd("ctx");
  77770. if(($receiver = $5) == null || $receiver.isNil){
  77771. token="";
  77772. } else {
  77773. token=$5;
  77774. };
  77775. token;
  77776. $6=$recv(token)._at_((2));
  77777. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77778. $ctx1.sendIdx["at:"]=2;
  77779. //>>excludeEnd("ctx");
  77780. auth=self._base64Decode_($6);
  77781. auth;
  77782. parts=$recv(auth)._tokenize_(":");
  77783. parts;
  77784. $9=self["@username"];
  77785. $10=$recv(parts)._at_((1));
  77786. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77787. $ctx1.sendIdx["at:"]=3;
  77788. //>>excludeEnd("ctx");
  77789. $8=$recv($9).__eq($10);
  77790. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77791. $ctx1.sendIdx["="]=1;
  77792. //>>excludeEnd("ctx");
  77793. $7=$recv($8)._and_((function(){
  77794. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77795. return $core.withContext(function($ctx2) {
  77796. //>>excludeEnd("ctx");
  77797. return $recv(self["@password"]).__eq($recv(parts)._at_((2)));
  77798. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77799. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,7)});
  77800. //>>excludeEnd("ctx");
  77801. }));
  77802. if($core.assert($7)){
  77803. return true;
  77804. } else {
  77805. return false;
  77806. };
  77807. };
  77808. return self;
  77809. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77810. }, function($ctx1) {$ctx1.fill(self,"isAuthenticated:",{aRequest:aRequest,header:header,token:token,auth:auth,parts:parts},$globals.FileServer)});
  77811. //>>excludeEnd("ctx");
  77812. },
  77813. //>>excludeStart("ide", pragmas.excludeIdeData);
  77814. args: ["aRequest"],
  77815. 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\x09(header isEmpty)\x0a\x09ifTrue: [^ false]\x0a\x09ifFalse: [\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].",
  77816. referencedClasses: [],
  77817. //>>excludeEnd("ide");
  77818. messageSends: ["ifTrue:", "and:", "isNil", "ifNil:", "at:", "headers", "ifTrue:ifFalse:", "isEmpty", "tokenize:", "base64Decode:", "="]
  77819. }),
  77820. $globals.FileServer);
  77821. $core.addMethod(
  77822. $core.method({
  77823. selector: "password:",
  77824. protocol: 'accessing',
  77825. fn: function (aPassword){
  77826. var self=this;
  77827. self["@password"]=aPassword;
  77828. return self;
  77829. },
  77830. //>>excludeStart("ide", pragmas.excludeIdeData);
  77831. args: ["aPassword"],
  77832. source: "password: aPassword\x0a\x09password := aPassword.",
  77833. referencedClasses: [],
  77834. //>>excludeEnd("ide");
  77835. messageSends: []
  77836. }),
  77837. $globals.FileServer);
  77838. $core.addMethod(
  77839. $core.method({
  77840. selector: "port",
  77841. protocol: 'accessing',
  77842. fn: function (){
  77843. var self=this;
  77844. var $1;
  77845. $1=self["@port"];
  77846. return $1;
  77847. },
  77848. //>>excludeStart("ide", pragmas.excludeIdeData);
  77849. args: [],
  77850. source: "port\x0a\x09^ port",
  77851. referencedClasses: [],
  77852. //>>excludeEnd("ide");
  77853. messageSends: []
  77854. }),
  77855. $globals.FileServer);
  77856. $core.addMethod(
  77857. $core.method({
  77858. selector: "port:",
  77859. protocol: 'accessing',
  77860. fn: function (aNumber){
  77861. var self=this;
  77862. self["@port"]=aNumber;
  77863. return self;
  77864. },
  77865. //>>excludeStart("ide", pragmas.excludeIdeData);
  77866. args: ["aNumber"],
  77867. source: "port: aNumber\x0a\x09port := aNumber",
  77868. referencedClasses: [],
  77869. //>>excludeEnd("ide");
  77870. messageSends: []
  77871. }),
  77872. $globals.FileServer);
  77873. $core.addMethod(
  77874. $core.method({
  77875. selector: "require:",
  77876. protocol: 'private',
  77877. fn: function (aModuleString){
  77878. var self=this;
  77879. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77880. return $core.withContext(function($ctx1) {
  77881. //>>excludeEnd("ctx");
  77882. var $1;
  77883. $1=$recv(require)._value_(aModuleString);
  77884. return $1;
  77885. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77886. }, function($ctx1) {$ctx1.fill(self,"require:",{aModuleString:aModuleString},$globals.FileServer)});
  77887. //>>excludeEnd("ctx");
  77888. },
  77889. //>>excludeStart("ide", pragmas.excludeIdeData);
  77890. args: ["aModuleString"],
  77891. source: "require: aModuleString\x0a\x09\x22call to the require function\x22\x0a\x09^require value: aModuleString",
  77892. referencedClasses: [],
  77893. //>>excludeEnd("ide");
  77894. messageSends: ["value:"]
  77895. }),
  77896. $globals.FileServer);
  77897. $core.addMethod(
  77898. $core.method({
  77899. selector: "respondAuthenticationRequiredTo:",
  77900. protocol: 'request handling',
  77901. fn: function (aResponse){
  77902. var self=this;
  77903. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77904. return $core.withContext(function($ctx1) {
  77905. //>>excludeEnd("ctx");
  77906. var $1;
  77907. $recv(aResponse)._writeHead_options_((401),$globals.HashedCollection._newFromPairs_(["WWW-Authenticate","Basic realm=\x22Secured Developer Area\x22"]));
  77908. $recv(aResponse)._write_("<html><body>Authentication needed</body></html>");
  77909. $1=$recv(aResponse)._end();
  77910. return self;
  77911. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77912. }, function($ctx1) {$ctx1.fill(self,"respondAuthenticationRequiredTo:",{aResponse:aResponse},$globals.FileServer)});
  77913. //>>excludeEnd("ctx");
  77914. },
  77915. //>>excludeStart("ide", pragmas.excludeIdeData);
  77916. args: ["aResponse"],
  77917. 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.",
  77918. referencedClasses: [],
  77919. //>>excludeEnd("ide");
  77920. messageSends: ["writeHead:options:", "write:", "end"]
  77921. }),
  77922. $globals.FileServer);
  77923. $core.addMethod(
  77924. $core.method({
  77925. selector: "respondCreatedTo:",
  77926. protocol: 'request handling',
  77927. fn: function (aResponse){
  77928. var self=this;
  77929. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77930. return $core.withContext(function($ctx1) {
  77931. //>>excludeEnd("ctx");
  77932. var $1;
  77933. $recv(aResponse)._writeHead_options_((201),$globals.HashedCollection._newFromPairs_(["Content-Type","text/plain","Access-Control-Allow-Origin","*"]));
  77934. $1=$recv(aResponse)._end();
  77935. return self;
  77936. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77937. }, function($ctx1) {$ctx1.fill(self,"respondCreatedTo:",{aResponse:aResponse},$globals.FileServer)});
  77938. //>>excludeEnd("ctx");
  77939. },
  77940. //>>excludeStart("ide", pragmas.excludeIdeData);
  77941. args: ["aResponse"],
  77942. source: "respondCreatedTo: aResponse\x0a\x09aResponse\x0a\x09\x09writeHead: 201 options: #{'Content-Type' -> 'text/plain'. 'Access-Control-Allow-Origin' -> '*'};\x0a\x09\x09end.",
  77943. referencedClasses: [],
  77944. //>>excludeEnd("ide");
  77945. messageSends: ["writeHead:options:", "end"]
  77946. }),
  77947. $globals.FileServer);
  77948. $core.addMethod(
  77949. $core.method({
  77950. selector: "respondDirectoryNamed:from:to:",
  77951. protocol: 'request handling',
  77952. fn: function (aDirname,aUrl,aResponse){
  77953. var self=this;
  77954. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77955. return $core.withContext(function($ctx1) {
  77956. //>>excludeEnd("ctx");
  77957. var $2,$1,$3,$5,$7,$6,$4,$receiver;
  77958. $2=$recv(aUrl)._pathname();
  77959. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77960. $ctx1.sendIdx["pathname"]=1;
  77961. //>>excludeEnd("ctx");
  77962. $1=$recv($2)._endsWith_("/");
  77963. if($core.assert($1)){
  77964. $3=$recv(aDirname).__comma("index.html");
  77965. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77966. $ctx1.sendIdx[","]=1;
  77967. //>>excludeEnd("ctx");
  77968. self._respondFileNamed_to_($3,aResponse);
  77969. } else {
  77970. $5=$recv($recv(aUrl)._pathname()).__comma("/");
  77971. $7=$recv(aUrl)._search();
  77972. if(($receiver = $7) == null || $receiver.isNil){
  77973. $6="";
  77974. } else {
  77975. $6=$7;
  77976. };
  77977. $4=$recv($5).__comma($6);
  77978. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77979. $ctx1.sendIdx[","]=2;
  77980. //>>excludeEnd("ctx");
  77981. self._respondRedirect_to_($4,aResponse);
  77982. };
  77983. return self;
  77984. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  77985. }, function($ctx1) {$ctx1.fill(self,"respondDirectoryNamed:from:to:",{aDirname:aDirname,aUrl:aUrl,aResponse:aResponse},$globals.FileServer)});
  77986. //>>excludeEnd("ctx");
  77987. },
  77988. //>>excludeStart("ide", pragmas.excludeIdeData);
  77989. args: ["aDirname", "aUrl", "aResponse"],
  77990. 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]",
  77991. referencedClasses: [],
  77992. //>>excludeEnd("ide");
  77993. messageSends: ["ifTrue:ifFalse:", "endsWith:", "pathname", "respondFileNamed:to:", ",", "respondRedirect:to:", "ifNil:", "search"]
  77994. }),
  77995. $globals.FileServer);
  77996. $core.addMethod(
  77997. $core.method({
  77998. selector: "respondFileNamed:to:",
  77999. protocol: 'request handling',
  78000. fn: function (aFilename,aResponse){
  78001. var self=this;
  78002. var type,filename;
  78003. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78004. return $core.withContext(function($ctx1) {
  78005. //>>excludeEnd("ctx");
  78006. var $1,$2,$3,$4,$5;
  78007. filename=aFilename;
  78008. $recv(self["@fs"])._readFile_do_(filename,(function(ex,file){
  78009. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78010. return $core.withContext(function($ctx2) {
  78011. //>>excludeEnd("ctx");
  78012. $1=$recv(ex)._notNil();
  78013. if($core.assert($1)){
  78014. $2=console;
  78015. $3=$recv(filename).__comma(" does not exist");
  78016. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78017. $ctx2.sendIdx[","]=1;
  78018. //>>excludeEnd("ctx");
  78019. $recv($2)._log_($3);
  78020. return self._respondNotFoundTo_(aResponse);
  78021. } else {
  78022. type=$recv(self._class())._mimeTypeFor_(filename);
  78023. type;
  78024. $4=$recv(type).__eq("application/javascript");
  78025. if($core.assert($4)){
  78026. type=$recv(type).__comma(";charset=utf-8");
  78027. type;
  78028. };
  78029. $recv(aResponse)._writeHead_options_((200),$globals.HashedCollection._newFromPairs_(["Content-Type",type]));
  78030. $recv(aResponse)._write_encoding_(file,"binary");
  78031. $5=$recv(aResponse)._end();
  78032. return $5;
  78033. };
  78034. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78035. }, function($ctx2) {$ctx2.fillBlock({ex:ex,file:file},$ctx1,1)});
  78036. //>>excludeEnd("ctx");
  78037. }));
  78038. return self;
  78039. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78040. }, function($ctx1) {$ctx1.fill(self,"respondFileNamed:to:",{aFilename:aFilename,aResponse:aResponse,type:type,filename:filename},$globals.FileServer)});
  78041. //>>excludeEnd("ctx");
  78042. },
  78043. //>>excludeStart("ide", pragmas.excludeIdeData);
  78044. args: ["aFilename", "aResponse"],
  78045. 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]]",
  78046. referencedClasses: [],
  78047. //>>excludeEnd("ide");
  78048. messageSends: ["readFile:do:", "ifTrue:ifFalse:", "notNil", "log:", ",", "respondNotFoundTo:", "mimeTypeFor:", "class", "ifTrue:", "=", "writeHead:options:", "write:encoding:", "end"]
  78049. }),
  78050. $globals.FileServer);
  78051. $core.addMethod(
  78052. $core.method({
  78053. selector: "respondInternalErrorTo:",
  78054. protocol: 'request handling',
  78055. fn: function (aResponse){
  78056. var self=this;
  78057. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78058. return $core.withContext(function($ctx1) {
  78059. //>>excludeEnd("ctx");
  78060. var $1;
  78061. $recv(aResponse)._writeHead_options_((500),$globals.HashedCollection._newFromPairs_(["Content-Type","text/plain"]));
  78062. $recv(aResponse)._write_("500 Internal server error");
  78063. $1=$recv(aResponse)._end();
  78064. return self;
  78065. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78066. }, function($ctx1) {$ctx1.fill(self,"respondInternalErrorTo:",{aResponse:aResponse},$globals.FileServer)});
  78067. //>>excludeEnd("ctx");
  78068. },
  78069. //>>excludeStart("ide", pragmas.excludeIdeData);
  78070. args: ["aResponse"],
  78071. source: "respondInternalErrorTo: aResponse\x0a\x09aResponse \x0a\x09\x09writeHead: 500 options: #{'Content-Type' -> 'text/plain'};\x0a\x09\x09write: '500 Internal server error';\x0a\x09\x09end",
  78072. referencedClasses: [],
  78073. //>>excludeEnd("ide");
  78074. messageSends: ["writeHead:options:", "write:", "end"]
  78075. }),
  78076. $globals.FileServer);
  78077. $core.addMethod(
  78078. $core.method({
  78079. selector: "respondNotCreatedTo:",
  78080. protocol: 'request handling',
  78081. fn: function (aResponse){
  78082. var self=this;
  78083. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78084. return $core.withContext(function($ctx1) {
  78085. //>>excludeEnd("ctx");
  78086. var $1;
  78087. $recv(aResponse)._writeHead_options_((400),$globals.HashedCollection._newFromPairs_(["Content-Type","text/plain"]));
  78088. $recv(aResponse)._write_("File could not be created. Did you forget to create the src directory on the server?");
  78089. $1=$recv(aResponse)._end();
  78090. return self;
  78091. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78092. }, function($ctx1) {$ctx1.fill(self,"respondNotCreatedTo:",{aResponse:aResponse},$globals.FileServer)});
  78093. //>>excludeEnd("ctx");
  78094. },
  78095. //>>excludeStart("ide", pragmas.excludeIdeData);
  78096. args: ["aResponse"],
  78097. 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.",
  78098. referencedClasses: [],
  78099. //>>excludeEnd("ide");
  78100. messageSends: ["writeHead:options:", "write:", "end"]
  78101. }),
  78102. $globals.FileServer);
  78103. $core.addMethod(
  78104. $core.method({
  78105. selector: "respondNotFoundTo:",
  78106. protocol: 'request handling',
  78107. fn: function (aResponse){
  78108. var self=this;
  78109. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78110. return $core.withContext(function($ctx1) {
  78111. //>>excludeEnd("ctx");
  78112. var $2,$1,$3,$4;
  78113. $2=self._fallbackPage();
  78114. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78115. $ctx1.sendIdx["fallbackPage"]=1;
  78116. //>>excludeEnd("ctx");
  78117. $1=$recv($2)._isNil();
  78118. if(!$core.assert($1)){
  78119. $3=self._respondFileNamed_to_(self._fallbackPage(),aResponse);
  78120. return $3;
  78121. };
  78122. $recv(aResponse)._writeHead_options_((404),$globals.HashedCollection._newFromPairs_(["Content-Type","text/html"]));
  78123. $recv(aResponse)._write_("<html><body><p>404 Not found</p>");
  78124. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78125. $ctx1.sendIdx["write:"]=1;
  78126. //>>excludeEnd("ctx");
  78127. $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>");
  78128. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78129. $ctx1.sendIdx["write:"]=2;
  78130. //>>excludeEnd("ctx");
  78131. $recv(aResponse)._write_("<li>create an index.html in the served directory.</li>");
  78132. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78133. $ctx1.sendIdx["write:"]=3;
  78134. //>>excludeEnd("ctx");
  78135. $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>");
  78136. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78137. $ctx1.sendIdx["write:"]=4;
  78138. //>>excludeEnd("ctx");
  78139. $recv(aResponse)._write_("<li>change the directory to be served with the \x22--base-path\x22 option.</li>");
  78140. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78141. $ctx1.sendIdx["write:"]=5;
  78142. //>>excludeEnd("ctx");
  78143. $recv(aResponse)._write_("</ul></p></body></html>");
  78144. $4=$recv(aResponse)._end();
  78145. return self;
  78146. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78147. }, function($ctx1) {$ctx1.fill(self,"respondNotFoundTo:",{aResponse:aResponse},$globals.FileServer)});
  78148. //>>excludeEnd("ctx");
  78149. },
  78150. //>>excludeStart("ide", pragmas.excludeIdeData);
  78151. args: ["aResponse"],
  78152. 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",
  78153. referencedClasses: [],
  78154. //>>excludeEnd("ide");
  78155. messageSends: ["ifFalse:", "isNil", "fallbackPage", "respondFileNamed:to:", "writeHead:options:", "write:", "end"]
  78156. }),
  78157. $globals.FileServer);
  78158. $core.addMethod(
  78159. $core.method({
  78160. selector: "respondOKTo:",
  78161. protocol: 'request handling',
  78162. fn: function (aResponse){
  78163. var self=this;
  78164. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78165. return $core.withContext(function($ctx1) {
  78166. //>>excludeEnd("ctx");
  78167. var $1;
  78168. $recv(aResponse)._writeHead_options_((200),$globals.HashedCollection._newFromPairs_(["Content-Type","text/plain","Access-Control-Allow-Origin","*"]));
  78169. $1=$recv(aResponse)._end();
  78170. return self;
  78171. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78172. }, function($ctx1) {$ctx1.fill(self,"respondOKTo:",{aResponse:aResponse},$globals.FileServer)});
  78173. //>>excludeEnd("ctx");
  78174. },
  78175. //>>excludeStart("ide", pragmas.excludeIdeData);
  78176. args: ["aResponse"],
  78177. source: "respondOKTo: aResponse\x0a\x09aResponse\x0a\x09\x09writeHead: 200 options: #{'Content-Type' -> 'text/plain'. 'Access-Control-Allow-Origin' -> '*'};\x0a\x09\x09end.",
  78178. referencedClasses: [],
  78179. //>>excludeEnd("ide");
  78180. messageSends: ["writeHead:options:", "end"]
  78181. }),
  78182. $globals.FileServer);
  78183. $core.addMethod(
  78184. $core.method({
  78185. selector: "respondRedirect:to:",
  78186. protocol: 'request handling',
  78187. fn: function (aString,aResponse){
  78188. var self=this;
  78189. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78190. return $core.withContext(function($ctx1) {
  78191. //>>excludeEnd("ctx");
  78192. var $1;
  78193. $recv(aResponse)._writeHead_options_((303),$globals.HashedCollection._newFromPairs_(["Location",aString]));
  78194. $1=$recv(aResponse)._end();
  78195. return self;
  78196. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78197. }, function($ctx1) {$ctx1.fill(self,"respondRedirect:to:",{aString:aString,aResponse:aResponse},$globals.FileServer)});
  78198. //>>excludeEnd("ctx");
  78199. },
  78200. //>>excludeStart("ide", pragmas.excludeIdeData);
  78201. args: ["aString", "aResponse"],
  78202. source: "respondRedirect: aString to: aResponse\x0a\x09aResponse\x0a\x09\x09writeHead: 303 options: #{'Location' -> aString};\x0a\x09\x09end.",
  78203. referencedClasses: [],
  78204. //>>excludeEnd("ide");
  78205. messageSends: ["writeHead:options:", "end"]
  78206. }),
  78207. $globals.FileServer);
  78208. $core.addMethod(
  78209. $core.method({
  78210. selector: "start",
  78211. protocol: 'starting',
  78212. fn: function (){
  78213. var self=this;
  78214. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78215. return $core.withContext(function($ctx1) {
  78216. //>>excludeEnd("ctx");
  78217. var $1,$2,$3,$4,$8,$7,$6,$10,$9,$5,$11;
  78218. self._checkDirectoryLayout();
  78219. $1=$recv(self["@http"])._createServer_((function(request,response){
  78220. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78221. return $core.withContext(function($ctx2) {
  78222. //>>excludeEnd("ctx");
  78223. return self._handleRequest_respondTo_(request,response);
  78224. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78225. }, function($ctx2) {$ctx2.fillBlock({request:request,response:response},$ctx1,1)});
  78226. //>>excludeEnd("ctx");
  78227. }));
  78228. $recv($1)._on_do_("error",(function(error){
  78229. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78230. return $core.withContext(function($ctx2) {
  78231. //>>excludeEnd("ctx");
  78232. $2=console;
  78233. $3="Error starting server: ".__comma(error);
  78234. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78235. $ctx2.sendIdx[","]=1;
  78236. //>>excludeEnd("ctx");
  78237. return $recv($2)._log_($3);
  78238. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78239. $ctx2.sendIdx["log:"]=1;
  78240. //>>excludeEnd("ctx");
  78241. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78242. }, function($ctx2) {$ctx2.fillBlock({error:error},$ctx1,2)});
  78243. //>>excludeEnd("ctx");
  78244. }));
  78245. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78246. $ctx1.sendIdx["on:do:"]=1;
  78247. //>>excludeEnd("ctx");
  78248. $recv($1)._on_do_("listening",(function(){
  78249. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78250. return $core.withContext(function($ctx2) {
  78251. //>>excludeEnd("ctx");
  78252. $4=console;
  78253. $8=self._host();
  78254. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78255. $ctx2.sendIdx["host"]=1;
  78256. //>>excludeEnd("ctx");
  78257. $7="Starting file server on http://".__comma($8);
  78258. $6=$recv($7).__comma(":");
  78259. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78260. $ctx2.sendIdx[","]=3;
  78261. //>>excludeEnd("ctx");
  78262. $10=self._port();
  78263. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78264. $ctx2.sendIdx["port"]=1;
  78265. //>>excludeEnd("ctx");
  78266. $9=$recv($10)._asString();
  78267. $5=$recv($6).__comma($9);
  78268. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78269. $ctx2.sendIdx[","]=2;
  78270. //>>excludeEnd("ctx");
  78271. return $recv($4)._log_($5);
  78272. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78273. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,3)});
  78274. //>>excludeEnd("ctx");
  78275. }));
  78276. $11=$recv($1)._listen_host_(self._port(),self._host());
  78277. return self;
  78278. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78279. }, function($ctx1) {$ctx1.fill(self,"start",{},$globals.FileServer)});
  78280. //>>excludeEnd("ctx");
  78281. },
  78282. //>>excludeStart("ide", pragmas.excludeIdeData);
  78283. args: [],
  78284. 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];\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.",
  78285. referencedClasses: [],
  78286. //>>excludeEnd("ide");
  78287. messageSends: ["checkDirectoryLayout", "on:do:", "createServer:", "handleRequest:respondTo:", "log:", ",", "host", "asString", "port", "listen:host:"]
  78288. }),
  78289. $globals.FileServer);
  78290. $core.addMethod(
  78291. $core.method({
  78292. selector: "startOn:",
  78293. protocol: 'starting',
  78294. fn: function (aPort){
  78295. var self=this;
  78296. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78297. return $core.withContext(function($ctx1) {
  78298. //>>excludeEnd("ctx");
  78299. self._port_(aPort);
  78300. self._start();
  78301. return self;
  78302. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78303. }, function($ctx1) {$ctx1.fill(self,"startOn:",{aPort:aPort},$globals.FileServer)});
  78304. //>>excludeEnd("ctx");
  78305. },
  78306. //>>excludeStart("ide", pragmas.excludeIdeData);
  78307. args: ["aPort"],
  78308. source: "startOn: aPort\x0a\x09self port: aPort.\x0a\x09self start",
  78309. referencedClasses: [],
  78310. //>>excludeEnd("ide");
  78311. messageSends: ["port:", "start"]
  78312. }),
  78313. $globals.FileServer);
  78314. $core.addMethod(
  78315. $core.method({
  78316. selector: "username:",
  78317. protocol: 'accessing',
  78318. fn: function (aUsername){
  78319. var self=this;
  78320. self["@username"]=aUsername;
  78321. return self;
  78322. },
  78323. //>>excludeStart("ide", pragmas.excludeIdeData);
  78324. args: ["aUsername"],
  78325. source: "username: aUsername\x0a\x09username := aUsername.",
  78326. referencedClasses: [],
  78327. //>>excludeEnd("ide");
  78328. messageSends: []
  78329. }),
  78330. $globals.FileServer);
  78331. $core.addMethod(
  78332. $core.method({
  78333. selector: "validateBasePath",
  78334. protocol: 'private',
  78335. fn: function (){
  78336. var self=this;
  78337. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78338. return $core.withContext(function($ctx1) {
  78339. //>>excludeEnd("ctx");
  78340. var $1,$2,$3,$4,$7,$6,$5,$8,$9,$receiver;
  78341. $1=self["@fs"];
  78342. $2=self._basePath();
  78343. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78344. $ctx1.sendIdx["basePath"]=1;
  78345. //>>excludeEnd("ctx");
  78346. $recv($1)._stat_then_($2,(function(err,stat){
  78347. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78348. return $core.withContext(function($ctx2) {
  78349. //>>excludeEnd("ctx");
  78350. if(($receiver = err) == null || $receiver.isNil){
  78351. $3=$recv(stat)._isDirectory();
  78352. if(!$core.assert($3)){
  78353. $4=console;
  78354. $7=self._basePath();
  78355. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78356. $ctx2.sendIdx["basePath"]=2;
  78357. //>>excludeEnd("ctx");
  78358. $6="Warning: --base-path parameter ".__comma($7);
  78359. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78360. $ctx2.sendIdx[","]=2;
  78361. //>>excludeEnd("ctx");
  78362. $5=$recv($6).__comma(" is not a directory.");
  78363. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78364. $ctx2.sendIdx[","]=1;
  78365. //>>excludeEnd("ctx");
  78366. return $recv($4)._warn_($5);
  78367. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78368. $ctx2.sendIdx["warn:"]=1;
  78369. //>>excludeEnd("ctx");
  78370. };
  78371. } else {
  78372. $8=console;
  78373. $9=$recv("Warning: path at --base-path parameter ".__comma(self._basePath())).__comma(" does not exist.");
  78374. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78375. $ctx2.sendIdx[","]=3;
  78376. //>>excludeEnd("ctx");
  78377. return $recv($8)._warn_($9);
  78378. };
  78379. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78380. }, function($ctx2) {$ctx2.fillBlock({err:err,stat:stat},$ctx1,1)});
  78381. //>>excludeEnd("ctx");
  78382. }));
  78383. return self;
  78384. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78385. }, function($ctx1) {$ctx1.fill(self,"validateBasePath",{},$globals.FileServer)});
  78386. //>>excludeEnd("ctx");
  78387. },
  78388. //>>excludeStart("ide", pragmas.excludeIdeData);
  78389. args: [],
  78390. 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.' ]].",
  78391. referencedClasses: [],
  78392. //>>excludeEnd("ide");
  78393. messageSends: ["stat:then:", "basePath", "ifNil:ifNotNil:", "ifFalse:", "isDirectory", "warn:", ","]
  78394. }),
  78395. $globals.FileServer);
  78396. $core.addMethod(
  78397. $core.method({
  78398. selector: "withBasePath:",
  78399. protocol: 'private',
  78400. fn: function (aBaseRelativePath){
  78401. var self=this;
  78402. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78403. return $core.withContext(function($ctx1) {
  78404. //>>excludeEnd("ctx");
  78405. var $1;
  78406. $1=$recv(self["@path"])._join_with_(self._basePath(),aBaseRelativePath);
  78407. return $1;
  78408. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78409. }, function($ctx1) {$ctx1.fill(self,"withBasePath:",{aBaseRelativePath:aBaseRelativePath},$globals.FileServer)});
  78410. //>>excludeEnd("ctx");
  78411. },
  78412. //>>excludeStart("ide", pragmas.excludeIdeData);
  78413. args: ["aBaseRelativePath"],
  78414. source: "withBasePath: aBaseRelativePath\x0a\x09\x22return a file path which is relative to the basePath.\x22\x0a\x09^ path join: self basePath with: aBaseRelativePath",
  78415. referencedClasses: [],
  78416. //>>excludeEnd("ide");
  78417. messageSends: ["join:with:", "basePath"]
  78418. }),
  78419. $globals.FileServer);
  78420. $core.addMethod(
  78421. $core.method({
  78422. selector: "writeData:toFileNamed:",
  78423. protocol: 'private',
  78424. fn: function (data,aFilename){
  78425. var self=this;
  78426. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78427. return $core.withContext(function($ctx1) {
  78428. //>>excludeEnd("ctx");
  78429. $recv(console)._log_(aFilename);
  78430. return self;
  78431. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78432. }, function($ctx1) {$ctx1.fill(self,"writeData:toFileNamed:",{data:data,aFilename:aFilename},$globals.FileServer)});
  78433. //>>excludeEnd("ctx");
  78434. },
  78435. //>>excludeStart("ide", pragmas.excludeIdeData);
  78436. args: ["data", "aFilename"],
  78437. source: "writeData: data toFileNamed: aFilename\x0a\x09console log: aFilename",
  78438. referencedClasses: [],
  78439. //>>excludeEnd("ide");
  78440. messageSends: ["log:"]
  78441. }),
  78442. $globals.FileServer);
  78443. $globals.FileServer.klass.iVarNames = ['mimeTypes'];
  78444. $core.addMethod(
  78445. $core.method({
  78446. selector: "commandLineSwitches",
  78447. protocol: 'accessing',
  78448. fn: function (){
  78449. var self=this;
  78450. var switches;
  78451. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78452. return $core.withContext(function($ctx1) {
  78453. //>>excludeEnd("ctx");
  78454. var $1;
  78455. switches=$recv(self._methodsInProtocol_("accessing"))._collect_((function(each){
  78456. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78457. return $core.withContext(function($ctx2) {
  78458. //>>excludeEnd("ctx");
  78459. return $recv(each)._selector();
  78460. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78461. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  78462. //>>excludeEnd("ctx");
  78463. }));
  78464. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78465. $ctx1.sendIdx["collect:"]=1;
  78466. //>>excludeEnd("ctx");
  78467. switches=$recv(switches)._select_((function(each){
  78468. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78469. return $core.withContext(function($ctx2) {
  78470. //>>excludeEnd("ctx");
  78471. return $recv(each)._match_("^[^:]*:$");
  78472. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78473. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,2)});
  78474. //>>excludeEnd("ctx");
  78475. }));
  78476. switches=$recv(switches)._collect_((function(each){
  78477. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78478. return $core.withContext(function($ctx2) {
  78479. //>>excludeEnd("ctx");
  78480. return $recv($recv($recv($recv(each)._allButLast())._replace_with_("([A-Z])","-$1"))._asLowercase())._replace_with_("^([a-z])","--$1");
  78481. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78482. $ctx2.sendIdx["replace:with:"]=1;
  78483. //>>excludeEnd("ctx");
  78484. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78485. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,3)});
  78486. //>>excludeEnd("ctx");
  78487. }));
  78488. $1=switches;
  78489. return $1;
  78490. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78491. }, function($ctx1) {$ctx1.fill(self,"commandLineSwitches",{switches:switches},$globals.FileServer.klass)});
  78492. //>>excludeEnd("ctx");
  78493. },
  78494. //>>excludeStart("ide", pragmas.excludeIdeData);
  78495. args: [],
  78496. 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",
  78497. referencedClasses: [],
  78498. //>>excludeEnd("ide");
  78499. messageSends: ["collect:", "methodsInProtocol:", "selector", "select:", "match:", "replace:with:", "asLowercase", "allButLast"]
  78500. }),
  78501. $globals.FileServer.klass);
  78502. $core.addMethod(
  78503. $core.method({
  78504. selector: "createServerWithArguments:",
  78505. protocol: 'initialization',
  78506. fn: function (options){
  78507. var self=this;
  78508. var server,popFront,front,optionName,optionValue,switches;
  78509. function $Array(){return $globals.Array||(typeof Array=="undefined"?nil:Array)}
  78510. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78511. return $core.withContext(function($ctx1) {
  78512. //>>excludeEnd("ctx");
  78513. var $1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11;
  78514. var $early={};
  78515. try {
  78516. switches=self._commandLineSwitches();
  78517. server=self._new();
  78518. $recv(options)._ifEmpty_((function(){
  78519. $1=server;
  78520. throw $early=[$1];
  78521. }));
  78522. $2=$recv($recv(options)._size())._even();
  78523. if(!$core.assert($2)){
  78524. $recv(console)._log_("Using default parameters.");
  78525. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78526. $ctx1.sendIdx["log:"]=1;
  78527. //>>excludeEnd("ctx");
  78528. $3=console;
  78529. $4="Wrong commandline options or not enough arguments for: ".__comma(options);
  78530. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78531. $ctx1.sendIdx[","]=1;
  78532. //>>excludeEnd("ctx");
  78533. $recv($3)._log_($4);
  78534. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78535. $ctx1.sendIdx["log:"]=2;
  78536. //>>excludeEnd("ctx");
  78537. $5=console;
  78538. $6="Use any of the following ones: ".__comma(switches);
  78539. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78540. $ctx1.sendIdx[","]=2;
  78541. //>>excludeEnd("ctx");
  78542. $recv($5)._log_($6);
  78543. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78544. $ctx1.sendIdx["log:"]=3;
  78545. //>>excludeEnd("ctx");
  78546. $7=server;
  78547. return $7;
  78548. };
  78549. popFront=(function(args){
  78550. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78551. return $core.withContext(function($ctx2) {
  78552. //>>excludeEnd("ctx");
  78553. front=$recv(args)._first();
  78554. front;
  78555. $recv(args)._remove_(front);
  78556. return front;
  78557. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78558. }, function($ctx2) {$ctx2.fillBlock({args:args},$ctx1,3)});
  78559. //>>excludeEnd("ctx");
  78560. });
  78561. $recv((function(){
  78562. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78563. return $core.withContext(function($ctx2) {
  78564. //>>excludeEnd("ctx");
  78565. return $recv(options)._notEmpty();
  78566. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78567. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,4)});
  78568. //>>excludeEnd("ctx");
  78569. }))._whileTrue_((function(){
  78570. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78571. return $core.withContext(function($ctx2) {
  78572. //>>excludeEnd("ctx");
  78573. optionName=$recv(popFront)._value_(options);
  78574. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78575. $ctx2.sendIdx["value:"]=1;
  78576. //>>excludeEnd("ctx");
  78577. optionName;
  78578. optionValue=$recv(popFront)._value_(options);
  78579. optionValue;
  78580. $8=$recv(switches)._includes_(optionName);
  78581. if($core.assert($8)){
  78582. optionName=self._selectorForCommandLineSwitch_(optionName);
  78583. optionName;
  78584. return $recv(server)._perform_withArguments_(optionName,$recv($Array())._with_(optionValue));
  78585. } else {
  78586. $9=console;
  78587. $10=$recv(optionName).__comma(" is not a valid commandline option");
  78588. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78589. $ctx2.sendIdx[","]=3;
  78590. //>>excludeEnd("ctx");
  78591. $recv($9)._log_($10);
  78592. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78593. $ctx2.sendIdx["log:"]=4;
  78594. //>>excludeEnd("ctx");
  78595. return $recv(console)._log_("Use any of the following ones: ".__comma(switches));
  78596. };
  78597. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78598. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,5)});
  78599. //>>excludeEnd("ctx");
  78600. }));
  78601. $11=server;
  78602. return $11;
  78603. }
  78604. catch(e) {if(e===$early)return e[0]; throw e}
  78605. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78606. }, function($ctx1) {$ctx1.fill(self,"createServerWithArguments:",{options:options,server:server,popFront:popFront,front:front,optionName:optionName,optionValue:optionValue,switches:switches},$globals.FileServer.klass)});
  78607. //>>excludeEnd("ctx");
  78608. },
  78609. //>>excludeStart("ide", pragmas.excludeIdeData);
  78610. args: ["options"],
  78611. 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: ' , options.\x0a\x09\x09console log: 'Use any of the following ones: ', 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: (Array with: 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: ', switches ]].\x0a\x09^ server.",
  78612. referencedClasses: ["Array"],
  78613. //>>excludeEnd("ide");
  78614. messageSends: ["commandLineSwitches", "new", "ifEmpty:", "ifFalse:", "even", "size", "log:", ",", "first", "remove:", "whileTrue:", "notEmpty", "value:", "ifTrue:ifFalse:", "includes:", "selectorForCommandLineSwitch:", "perform:withArguments:", "with:"]
  78615. }),
  78616. $globals.FileServer.klass);
  78617. $core.addMethod(
  78618. $core.method({
  78619. selector: "defaultBasePath",
  78620. protocol: 'accessing',
  78621. fn: function (){
  78622. var self=this;
  78623. return "./";
  78624. },
  78625. //>>excludeStart("ide", pragmas.excludeIdeData);
  78626. args: [],
  78627. source: "defaultBasePath\x0a\x09^ './'",
  78628. referencedClasses: [],
  78629. //>>excludeEnd("ide");
  78630. messageSends: []
  78631. }),
  78632. $globals.FileServer.klass);
  78633. $core.addMethod(
  78634. $core.method({
  78635. selector: "defaultHost",
  78636. protocol: 'accessing',
  78637. fn: function (){
  78638. var self=this;
  78639. return "127.0.0.1";
  78640. },
  78641. //>>excludeStart("ide", pragmas.excludeIdeData);
  78642. args: [],
  78643. source: "defaultHost\x0a\x09^ '127.0.0.1'",
  78644. referencedClasses: [],
  78645. //>>excludeEnd("ide");
  78646. messageSends: []
  78647. }),
  78648. $globals.FileServer.klass);
  78649. $core.addMethod(
  78650. $core.method({
  78651. selector: "defaultMimeTypes",
  78652. protocol: 'accessing',
  78653. fn: function (){
  78654. var self=this;
  78655. var $1;
  78656. $1=$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"]);
  78657. return $1;
  78658. },
  78659. //>>excludeStart("ide", pragmas.excludeIdeData);
  78660. args: [],
  78661. 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}",
  78662. referencedClasses: [],
  78663. //>>excludeEnd("ide");
  78664. messageSends: []
  78665. }),
  78666. $globals.FileServer.klass);
  78667. $core.addMethod(
  78668. $core.method({
  78669. selector: "defaultPort",
  78670. protocol: 'accessing',
  78671. fn: function (){
  78672. var self=this;
  78673. return (4000);
  78674. },
  78675. //>>excludeStart("ide", pragmas.excludeIdeData);
  78676. args: [],
  78677. source: "defaultPort\x0a\x09^ 4000",
  78678. referencedClasses: [],
  78679. //>>excludeEnd("ide");
  78680. messageSends: []
  78681. }),
  78682. $globals.FileServer.klass);
  78683. $core.addMethod(
  78684. $core.method({
  78685. selector: "main",
  78686. protocol: 'initialization',
  78687. fn: function (){
  78688. var self=this;
  78689. var fileServer,args;
  78690. function $FileServer(){return $globals.FileServer||(typeof FileServer=="undefined"?nil:FileServer)}
  78691. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78692. return $core.withContext(function($ctx1) {
  78693. //>>excludeEnd("ctx");
  78694. var $1,$2;
  78695. var $early={};
  78696. try {
  78697. args=$recv(process)._argv();
  78698. $recv(args)._removeFrom_to_((1),(3));
  78699. $recv(args)._detect_ifNone_((function(each){
  78700. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78701. return $core.withContext(function($ctx2) {
  78702. //>>excludeEnd("ctx");
  78703. $1=$recv(each).__eq("--help");
  78704. if($core.assert($1)){
  78705. return $recv($FileServer())._printHelp();
  78706. };
  78707. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78708. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  78709. //>>excludeEnd("ctx");
  78710. }),(function(){
  78711. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78712. return $core.withContext(function($ctx2) {
  78713. //>>excludeEnd("ctx");
  78714. fileServer=$recv($FileServer())._createServerWithArguments_(args);
  78715. fileServer;
  78716. $2=$recv(fileServer)._start();
  78717. throw $early=[$2];
  78718. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78719. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,3)});
  78720. //>>excludeEnd("ctx");
  78721. }));
  78722. return self;
  78723. }
  78724. catch(e) {if(e===$early)return e[0]; throw e}
  78725. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78726. }, function($ctx1) {$ctx1.fill(self,"main",{fileServer:fileServer,args:args},$globals.FileServer.klass)});
  78727. //>>excludeEnd("ctx");
  78728. },
  78729. //>>excludeStart("ide", pragmas.excludeIdeData);
  78730. args: [],
  78731. 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]",
  78732. referencedClasses: ["FileServer"],
  78733. //>>excludeEnd("ide");
  78734. messageSends: ["argv", "removeFrom:to:", "detect:ifNone:", "ifTrue:", "=", "printHelp", "createServerWithArguments:", "start"]
  78735. }),
  78736. $globals.FileServer.klass);
  78737. $core.addMethod(
  78738. $core.method({
  78739. selector: "mimeTypeFor:",
  78740. protocol: 'accessing',
  78741. fn: function (aString){
  78742. var self=this;
  78743. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78744. return $core.withContext(function($ctx1) {
  78745. //>>excludeEnd("ctx");
  78746. var $1;
  78747. $1=$recv(self._mimeTypes())._at_ifAbsent_($recv(aString)._replace_with_(".*[\x5c.]",""),(function(){
  78748. return "text/plain";
  78749. }));
  78750. return $1;
  78751. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78752. }, function($ctx1) {$ctx1.fill(self,"mimeTypeFor:",{aString:aString},$globals.FileServer.klass)});
  78753. //>>excludeEnd("ctx");
  78754. },
  78755. //>>excludeStart("ide", pragmas.excludeIdeData);
  78756. args: ["aString"],
  78757. source: "mimeTypeFor: aString\x0a\x09^ self mimeTypes at: (aString replace: '.*[\x5c.]' with: '') ifAbsent: ['text/plain']",
  78758. referencedClasses: [],
  78759. //>>excludeEnd("ide");
  78760. messageSends: ["at:ifAbsent:", "mimeTypes", "replace:with:"]
  78761. }),
  78762. $globals.FileServer.klass);
  78763. $core.addMethod(
  78764. $core.method({
  78765. selector: "mimeTypes",
  78766. protocol: 'accessing',
  78767. fn: function (){
  78768. var self=this;
  78769. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78770. return $core.withContext(function($ctx1) {
  78771. //>>excludeEnd("ctx");
  78772. var $2,$1,$receiver;
  78773. $2=self["@mimeTypes"];
  78774. if(($receiver = $2) == null || $receiver.isNil){
  78775. self["@mimeTypes"]=self._defaultMimeTypes();
  78776. $1=self["@mimeTypes"];
  78777. } else {
  78778. $1=$2;
  78779. };
  78780. return $1;
  78781. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78782. }, function($ctx1) {$ctx1.fill(self,"mimeTypes",{},$globals.FileServer.klass)});
  78783. //>>excludeEnd("ctx");
  78784. },
  78785. //>>excludeStart("ide", pragmas.excludeIdeData);
  78786. args: [],
  78787. source: "mimeTypes\x0a\x09^ mimeTypes ifNil: [mimeTypes := self defaultMimeTypes]",
  78788. referencedClasses: [],
  78789. //>>excludeEnd("ide");
  78790. messageSends: ["ifNil:", "defaultMimeTypes"]
  78791. }),
  78792. $globals.FileServer.klass);
  78793. $core.addMethod(
  78794. $core.method({
  78795. selector: "printHelp",
  78796. protocol: 'accessing',
  78797. fn: function (){
  78798. var self=this;
  78799. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78800. return $core.withContext(function($ctx1) {
  78801. //>>excludeEnd("ctx");
  78802. $recv(console)._log_("Available commandline options are:");
  78803. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78804. $ctx1.sendIdx["log:"]=1;
  78805. //>>excludeEnd("ctx");
  78806. $recv(console)._log_("--help");
  78807. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78808. $ctx1.sendIdx["log:"]=2;
  78809. //>>excludeEnd("ctx");
  78810. $recv(self._commandLineSwitches())._do_((function(each){
  78811. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78812. return $core.withContext(function($ctx2) {
  78813. //>>excludeEnd("ctx");
  78814. return $recv(console)._log_($recv(each).__comma(" <parameter>"));
  78815. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78816. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  78817. //>>excludeEnd("ctx");
  78818. }));
  78819. return self;
  78820. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78821. }, function($ctx1) {$ctx1.fill(self,"printHelp",{},$globals.FileServer.klass)});
  78822. //>>excludeEnd("ctx");
  78823. },
  78824. //>>excludeStart("ide", pragmas.excludeIdeData);
  78825. args: [],
  78826. source: "printHelp\x0a\x09console log: 'Available commandline options are:'.\x0a\x09console log: '--help'.\x0a\x09self commandLineSwitches do: [ :each |\x0a\x09\x09console log: each, ' <parameter>']",
  78827. referencedClasses: [],
  78828. //>>excludeEnd("ide");
  78829. messageSends: ["log:", "do:", "commandLineSwitches", ","]
  78830. }),
  78831. $globals.FileServer.klass);
  78832. $core.addMethod(
  78833. $core.method({
  78834. selector: "selectorForCommandLineSwitch:",
  78835. protocol: 'accessing',
  78836. fn: function (aSwitch){
  78837. var self=this;
  78838. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78839. return $core.withContext(function($ctx1) {
  78840. //>>excludeEnd("ctx");
  78841. var $2,$1;
  78842. $2=$recv($recv(aSwitch)._replace_with_("^--",""))._replace_with_("-[a-z]",(function(each){
  78843. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78844. return $core.withContext(function($ctx2) {
  78845. //>>excludeEnd("ctx");
  78846. return $recv($recv(each)._second())._asUppercase();
  78847. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78848. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  78849. //>>excludeEnd("ctx");
  78850. }));
  78851. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78852. $ctx1.sendIdx["replace:with:"]=1;
  78853. //>>excludeEnd("ctx");
  78854. $1=$recv($2).__comma(":");
  78855. return $1;
  78856. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78857. }, function($ctx1) {$ctx1.fill(self,"selectorForCommandLineSwitch:",{aSwitch:aSwitch},$globals.FileServer.klass)});
  78858. //>>excludeEnd("ctx");
  78859. },
  78860. //>>excludeStart("ide", pragmas.excludeIdeData);
  78861. args: ["aSwitch"],
  78862. 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 ]), ':'",
  78863. referencedClasses: [],
  78864. //>>excludeEnd("ide");
  78865. messageSends: [",", "replace:with:", "asUppercase", "second"]
  78866. }),
  78867. $globals.FileServer.klass);
  78868. $core.addClass('Initer', $globals.BaseFileManipulator, ['childProcess', 'nmPath'], 'AmberCli');
  78869. $core.addMethod(
  78870. $core.method({
  78871. selector: "bowerInstallThenDo:",
  78872. protocol: 'action',
  78873. fn: function (aBlock){
  78874. var self=this;
  78875. var child;
  78876. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78877. return $core.withContext(function($ctx1) {
  78878. //>>excludeEnd("ctx");
  78879. var $1,$4,$3,$2;
  78880. child=$recv(self["@childProcess"])._fork_args_(self._npmScriptForModule_named_("bower","bower"),["install"]);
  78881. $1=child;
  78882. $recv($1)._on_do_("error",aBlock);
  78883. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78884. $ctx1.sendIdx["on:do:"]=1;
  78885. //>>excludeEnd("ctx");
  78886. $2=$recv($1)._on_do_("close",(function(code){
  78887. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78888. return $core.withContext(function($ctx2) {
  78889. //>>excludeEnd("ctx");
  78890. $4=$recv(code).__eq((0));
  78891. if($core.assert($4)){
  78892. $3=nil;
  78893. } else {
  78894. $3=code;
  78895. };
  78896. return $recv(aBlock)._value_($3);
  78897. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78898. }, function($ctx2) {$ctx2.fillBlock({code:code},$ctx1,1)});
  78899. //>>excludeEnd("ctx");
  78900. }));
  78901. return self;
  78902. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78903. }, function($ctx1) {$ctx1.fill(self,"bowerInstallThenDo:",{aBlock:aBlock,child:child},$globals.Initer)});
  78904. //>>excludeEnd("ctx");
  78905. },
  78906. //>>excludeStart("ide", pragmas.excludeIdeData);
  78907. args: ["aBlock"],
  78908. source: "bowerInstallThenDo: aBlock\x0a\x09| child |\x0a\x09child := childProcess\x0a\x09\x09fork: (self npmScriptForModule: 'bower' named: 'bower')\x0a\x09\x09args: #('install').\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 ]) ]",
  78909. referencedClasses: [],
  78910. //>>excludeEnd("ide");
  78911. messageSends: ["fork:args:", "npmScriptForModule:named:", "on:do:", "value:", "ifTrue:ifFalse:", "="]
  78912. }),
  78913. $globals.Initer);
  78914. $core.addMethod(
  78915. $core.method({
  78916. selector: "finishMessage",
  78917. protocol: 'action',
  78918. fn: function (){
  78919. var self=this;
  78920. function $String(){return $globals.String||(typeof String=="undefined"?nil:String)}
  78921. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78922. return $core.withContext(function($ctx1) {
  78923. //>>excludeEnd("ctx");
  78924. $recv(console)._log_([" ", "The project should now be set up.", " ", " ", "To manage project from cli (run tests, recompile),", "the `grunt` command-line tool needs to be installed.", "If not present, it can be installed with:", " (sudo) npm install -g grunt-cli", " ", "To manage project dependencies,", "the `bower` command-line tool needs to be installed.", "If not present, it can be installed with:", " (sudo) npm install -g bower", " "]._join_($recv($String())._lf()));
  78925. $recv((function(){
  78926. }))._valueWithTimeout_((600));
  78927. return self;
  78928. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78929. }, function($ctx1) {$ctx1.fill(self,"finishMessage",{},$globals.Initer)});
  78930. //>>excludeEnd("ctx");
  78931. },
  78932. //>>excludeStart("ide", pragmas.excludeIdeData);
  78933. args: [],
  78934. 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\x09'To manage project from cli (run tests, recompile),'\x0a\x09\x09'the `grunt` command-line tool needs to be installed.'\x0a\x09\x09'If not present, it can be installed with:'\x0a\x09\x09' (sudo) npm install -g grunt-cli'\x0a\x09\x09' '\x0a\x09\x09'To manage project dependencies,'\x0a\x09\x09'the `bower` command-line tool needs to be installed.'\x0a\x09\x09'If not present, it can be installed with:'\x0a\x09\x09' (sudo) npm install -g bower'\x0a\x09\x09' '\x0a\x09) join: String lf).\x0a\x09[] valueWithTimeout: 600",
  78935. referencedClasses: ["String"],
  78936. //>>excludeEnd("ide");
  78937. messageSends: ["log:", "join:", "lf", "valueWithTimeout:"]
  78938. }),
  78939. $globals.Initer);
  78940. $core.addMethod(
  78941. $core.method({
  78942. selector: "gruntInitThenDo:",
  78943. protocol: 'action',
  78944. fn: function (aBlock){
  78945. var self=this;
  78946. var child,sanitizedTemplatePath;
  78947. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78948. return $core.withContext(function($ctx1) {
  78949. //>>excludeEnd("ctx");
  78950. var $1,$4,$3,$2;
  78951. sanitizedTemplatePath=$recv($recv($recv(self["@path"])._join_with_(self["@nmPath"],"grunt-init-amber"))._replace_with_("\x5c\x5c","\x5c\x5c"))._replace_with_(":","\x5c:");
  78952. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78953. $ctx1.sendIdx["replace:with:"]=1;
  78954. //>>excludeEnd("ctx");
  78955. child=$recv(self["@childProcess"])._fork_args_(self._npmScriptForModule_named_("grunt-init","grunt-init"),[sanitizedTemplatePath]);
  78956. $1=child;
  78957. $recv($1)._on_do_("error",aBlock);
  78958. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78959. $ctx1.sendIdx["on:do:"]=1;
  78960. //>>excludeEnd("ctx");
  78961. $2=$recv($1)._on_do_("close",(function(code){
  78962. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78963. return $core.withContext(function($ctx2) {
  78964. //>>excludeEnd("ctx");
  78965. $4=$recv(code).__eq((0));
  78966. if($core.assert($4)){
  78967. $3=nil;
  78968. } else {
  78969. $3=code;
  78970. };
  78971. return $recv(aBlock)._value_($3);
  78972. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78973. }, function($ctx2) {$ctx2.fillBlock({code:code},$ctx1,1)});
  78974. //>>excludeEnd("ctx");
  78975. }));
  78976. return self;
  78977. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78978. }, function($ctx1) {$ctx1.fill(self,"gruntInitThenDo:",{aBlock:aBlock,child:child,sanitizedTemplatePath:sanitizedTemplatePath},$globals.Initer)});
  78979. //>>excludeEnd("ctx");
  78980. },
  78981. //>>excludeStart("ide", pragmas.excludeIdeData);
  78982. args: ["aBlock"],
  78983. source: "gruntInitThenDo: aBlock\x0a\x09| child sanitizedTemplatePath |\x0a\x09sanitizedTemplatePath := ((path join: nmPath with: 'grunt-init-amber')\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 ]) ]",
  78984. referencedClasses: [],
  78985. //>>excludeEnd("ide");
  78986. messageSends: ["replace:with:", "join:with:", "fork:args:", "npmScriptForModule:named:", "on:do:", "value:", "ifTrue:ifFalse:", "="]
  78987. }),
  78988. $globals.Initer);
  78989. $core.addMethod(
  78990. $core.method({
  78991. selector: "gruntThenDo:",
  78992. protocol: 'action',
  78993. fn: function (aBlock){
  78994. var self=this;
  78995. var child;
  78996. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  78997. return $core.withContext(function($ctx1) {
  78998. //>>excludeEnd("ctx");
  78999. var $1,$4,$3,$2;
  79000. child=$recv(self["@childProcess"])._fork_args_(self._npmScriptForModule_named_("grunt-cli","grunt"),["default", "devel"]);
  79001. $1=child;
  79002. $recv($1)._on_do_("error",aBlock);
  79003. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79004. $ctx1.sendIdx["on:do:"]=1;
  79005. //>>excludeEnd("ctx");
  79006. $2=$recv($1)._on_do_("close",(function(code){
  79007. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79008. return $core.withContext(function($ctx2) {
  79009. //>>excludeEnd("ctx");
  79010. $4=$recv(code).__eq((0));
  79011. if($core.assert($4)){
  79012. $3=nil;
  79013. } else {
  79014. $3=code;
  79015. };
  79016. return $recv(aBlock)._value_($3);
  79017. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79018. }, function($ctx2) {$ctx2.fillBlock({code:code},$ctx1,1)});
  79019. //>>excludeEnd("ctx");
  79020. }));
  79021. return self;
  79022. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79023. }, function($ctx1) {$ctx1.fill(self,"gruntThenDo:",{aBlock:aBlock,child:child},$globals.Initer)});
  79024. //>>excludeEnd("ctx");
  79025. },
  79026. //>>excludeStart("ide", pragmas.excludeIdeData);
  79027. args: ["aBlock"],
  79028. source: "gruntThenDo: aBlock\x0a\x09| child |\x0a\x09child := childProcess\x0a\x09\x09fork: (self npmScriptForModule: 'grunt-cli' named: 'grunt')\x0a\x09\x09args: #('default' 'devel').\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 ]) ]",
  79029. referencedClasses: [],
  79030. //>>excludeEnd("ide");
  79031. messageSends: ["fork:args:", "npmScriptForModule:named:", "on:do:", "value:", "ifTrue:ifFalse:", "="]
  79032. }),
  79033. $globals.Initer);
  79034. $core.addMethod(
  79035. $core.method({
  79036. selector: "initialize",
  79037. protocol: 'initialization',
  79038. fn: function (){
  79039. var self=this;
  79040. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79041. return $core.withContext(function($ctx1) {
  79042. //>>excludeEnd("ctx");
  79043. (
  79044. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79045. $ctx1.supercall = true,
  79046. //>>excludeEnd("ctx");
  79047. $globals.Initer.superclass.fn.prototype._initialize.apply($recv(self), []));
  79048. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79049. $ctx1.supercall = false;
  79050. //>>excludeEnd("ctx");;
  79051. self["@childProcess"]=$recv(require)._value_("child_process");
  79052. self["@nmPath"]=$recv(self["@path"])._join_with_(self._rootDirname(),"node_modules");
  79053. return self;
  79054. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79055. }, function($ctx1) {$ctx1.fill(self,"initialize",{},$globals.Initer)});
  79056. //>>excludeEnd("ctx");
  79057. },
  79058. //>>excludeStart("ide", pragmas.excludeIdeData);
  79059. args: [],
  79060. source: "initialize\x0a\x09super initialize.\x0a\x09childProcess := require value: 'child_process'.\x0a\x09nmPath := path join: self rootDirname with: 'node_modules'",
  79061. referencedClasses: [],
  79062. //>>excludeEnd("ide");
  79063. messageSends: ["initialize", "value:", "join:with:", "rootDirname"]
  79064. }),
  79065. $globals.Initer);
  79066. $core.addMethod(
  79067. $core.method({
  79068. selector: "npmInstallThenDo:",
  79069. protocol: 'action',
  79070. fn: function (aBlock){
  79071. var self=this;
  79072. var child;
  79073. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79074. return $core.withContext(function($ctx1) {
  79075. //>>excludeEnd("ctx");
  79076. var $1;
  79077. child=$recv(self["@childProcess"])._exec_thenDo_("npm install",aBlock);
  79078. $1=$recv(child)._stdout();
  79079. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79080. $ctx1.sendIdx["stdout"]=1;
  79081. //>>excludeEnd("ctx");
  79082. $recv($1)._pipe_options_($recv(process)._stdout(),$globals.HashedCollection._newFromPairs_(["end",false]));
  79083. return self;
  79084. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79085. }, function($ctx1) {$ctx1.fill(self,"npmInstallThenDo:",{aBlock:aBlock,child:child},$globals.Initer)});
  79086. //>>excludeEnd("ctx");
  79087. },
  79088. //>>excludeStart("ide", pragmas.excludeIdeData);
  79089. args: ["aBlock"],
  79090. source: "npmInstallThenDo: aBlock\x0a\x09| child |\x0a\x09child := childProcess\x0a\x09\x09exec: 'npm install'\x0a\x09\x09thenDo: aBlock.\x0a\x09child stdout pipe: process stdout options: #{ 'end' -> false }",
  79091. referencedClasses: [],
  79092. //>>excludeEnd("ide");
  79093. messageSends: ["exec:thenDo:", "pipe:options:", "stdout"]
  79094. }),
  79095. $globals.Initer);
  79096. $core.addMethod(
  79097. $core.method({
  79098. selector: "npmScriptForModule:named:",
  79099. protocol: 'npm',
  79100. fn: function (aString,anotherString){
  79101. var self=this;
  79102. var modulePath,packageJson,binSection,scriptPath;
  79103. function $JSObjectProxy(){return $globals.JSObjectProxy||(typeof JSObjectProxy=="undefined"?nil:JSObjectProxy)}
  79104. function $Smalltalk(){return $globals.Smalltalk||(typeof Smalltalk=="undefined"?nil:Smalltalk)}
  79105. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79106. return $core.withContext(function($ctx1) {
  79107. //>>excludeEnd("ctx");
  79108. var $1,$3,$4,$2,$5,$6;
  79109. $1=self["@path"];
  79110. $3=$recv($JSObjectProxy())._on_(require);
  79111. $4=$recv(aString).__comma("/package.json");
  79112. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79113. $ctx1.sendIdx[","]=1;
  79114. //>>excludeEnd("ctx");
  79115. $2=$recv($3)._resolve_($4);
  79116. modulePath=$recv($1)._dirname_($2);
  79117. packageJson=$recv($Smalltalk())._readJSObject_($recv(require)._value_($recv(aString).__comma("/package.json")));
  79118. binSection=$recv(packageJson)._at_("bin");
  79119. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79120. $ctx1.sendIdx["at:"]=1;
  79121. //>>excludeEnd("ctx");
  79122. $5=$recv(binSection)._isString();
  79123. if($core.assert($5)){
  79124. scriptPath=binSection;
  79125. } else {
  79126. scriptPath=$recv(binSection)._at_(anotherString);
  79127. };
  79128. $6=$recv(self["@path"])._join_with_(modulePath,scriptPath);
  79129. return $6;
  79130. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79131. }, function($ctx1) {$ctx1.fill(self,"npmScriptForModule:named:",{aString:aString,anotherString:anotherString,modulePath:modulePath,packageJson:packageJson,binSection:binSection,scriptPath:scriptPath},$globals.Initer)});
  79132. //>>excludeEnd("ctx");
  79133. },
  79134. //>>excludeStart("ide", pragmas.excludeIdeData);
  79135. args: ["aString", "anotherString"],
  79136. source: "npmScriptForModule: aString named: anotherString\x0a\x09| modulePath packageJson binSection scriptPath |\x0a\x09modulePath := path dirname: (\x0a\x09\x09(JSObjectProxy on: require)\x0a\x09\x09\x09resolve: 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",
  79137. referencedClasses: ["JSObjectProxy", "Smalltalk"],
  79138. //>>excludeEnd("ide");
  79139. messageSends: ["dirname:", "resolve:", "on:", ",", "readJSObject:", "value:", "at:", "ifTrue:ifFalse:", "isString", "join:with:"]
  79140. }),
  79141. $globals.Initer);
  79142. $core.addMethod(
  79143. $core.method({
  79144. selector: "start",
  79145. protocol: 'action',
  79146. fn: function (){
  79147. var self=this;
  79148. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79149. return $core.withContext(function($ctx1) {
  79150. //>>excludeEnd("ctx");
  79151. var $1,$2,$3,$4,$5,$6,$7,$8,$receiver;
  79152. self._gruntInitThenDo_((function(error){
  79153. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79154. return $core.withContext(function($ctx2) {
  79155. //>>excludeEnd("ctx");
  79156. if(($receiver = error) == null || $receiver.isNil){
  79157. return self._bowerInstallThenDo_((function(error2){
  79158. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79159. return $core.withContext(function($ctx3) {
  79160. //>>excludeEnd("ctx");
  79161. if(($receiver = error2) == null || $receiver.isNil){
  79162. return self._npmInstallThenDo_((function(error3){
  79163. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79164. return $core.withContext(function($ctx4) {
  79165. //>>excludeEnd("ctx");
  79166. if(($receiver = error3) == null || $receiver.isNil){
  79167. return self._gruntThenDo_((function(error4){
  79168. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79169. return $core.withContext(function($ctx5) {
  79170. //>>excludeEnd("ctx");
  79171. if(($receiver = error4) == null || $receiver.isNil){
  79172. self._finishMessage();
  79173. return $recv(process)._exit();
  79174. } else {
  79175. $7=console;
  79176. $recv($7)._log_("grunt exec error:");
  79177. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79178. $ctx5.sendIdx["log:"]=7;
  79179. //>>excludeEnd("ctx");
  79180. $8=$recv($7)._log_(error4);
  79181. $8;
  79182. return $recv(process)._exit_((104));
  79183. };
  79184. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79185. }, function($ctx5) {$ctx5.fillBlock({error4:error4},$ctx4,10)});
  79186. //>>excludeEnd("ctx");
  79187. }));
  79188. } else {
  79189. $5=console;
  79190. $recv($5)._log_("npm install exec error:");
  79191. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79192. $ctx4.sendIdx["log:"]=5;
  79193. //>>excludeEnd("ctx");
  79194. $6=$recv($5)._log_(error3);
  79195. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79196. $ctx4.sendIdx["log:"]=6;
  79197. //>>excludeEnd("ctx");
  79198. $6;
  79199. return $recv(process)._exit_((103));
  79200. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79201. $ctx4.sendIdx["exit:"]=3;
  79202. //>>excludeEnd("ctx");
  79203. };
  79204. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79205. }, function($ctx4) {$ctx4.fillBlock({error3:error3},$ctx3,7)});
  79206. //>>excludeEnd("ctx");
  79207. }));
  79208. } else {
  79209. $3=console;
  79210. $recv($3)._log_("bower install exec error:");
  79211. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79212. $ctx3.sendIdx["log:"]=3;
  79213. //>>excludeEnd("ctx");
  79214. $4=$recv($3)._log_(error2);
  79215. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79216. $ctx3.sendIdx["log:"]=4;
  79217. //>>excludeEnd("ctx");
  79218. $4;
  79219. return $recv(process)._exit_((102));
  79220. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79221. $ctx3.sendIdx["exit:"]=2;
  79222. //>>excludeEnd("ctx");
  79223. };
  79224. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79225. }, function($ctx3) {$ctx3.fillBlock({error2:error2},$ctx2,4)});
  79226. //>>excludeEnd("ctx");
  79227. }));
  79228. } else {
  79229. $1=console;
  79230. $recv($1)._log_("grunt-init exec error:");
  79231. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79232. $ctx2.sendIdx["log:"]=1;
  79233. //>>excludeEnd("ctx");
  79234. $2=$recv($1)._log_(error);
  79235. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79236. $ctx2.sendIdx["log:"]=2;
  79237. //>>excludeEnd("ctx");
  79238. $2;
  79239. return $recv(process)._exit_((101));
  79240. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79241. $ctx2.sendIdx["exit:"]=1;
  79242. //>>excludeEnd("ctx");
  79243. };
  79244. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79245. }, function($ctx2) {$ctx2.fillBlock({error:error},$ctx1,1)});
  79246. //>>excludeEnd("ctx");
  79247. }));
  79248. return self;
  79249. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79250. }, function($ctx1) {$ctx1.fill(self,"start",{},$globals.Initer)});
  79251. //>>excludeEnd("ctx");
  79252. },
  79253. //>>excludeStart("ide", pragmas.excludeIdeData);
  79254. args: [],
  79255. 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 bowerInstallThenDo: [ :error2 | error2\x0a\x09ifNotNil: [\x0a\x09\x09console log: 'bower install exec error:'; log: error2.\x0a\x09\x09process exit: 102 ]\x0a\x09ifNil: [\x0a\x0a\x09self npmInstallThenDo: [ :error3 | error3\x0a\x09ifNotNil: [\x0a\x09\x09console log: 'npm install exec error:'; log: error3.\x0a\x09\x09process exit: 103 ]\x0a\x09ifNil: [\x0a\x0a\x09self gruntThenDo: [ :error4 | error4\x0a\x09ifNotNil: [\x0a\x09\x09console log: 'grunt exec error:'; log: error4.\x0a\x09\x09process exit: 104 ]\x0a\x09ifNil: [\x0a\x0a\x09self finishMessage.\x0a\x09process exit ]]]]]]]]",
  79256. referencedClasses: [],
  79257. //>>excludeEnd("ide");
  79258. messageSends: ["gruntInitThenDo:", "ifNotNil:ifNil:", "log:", "exit:", "bowerInstallThenDo:", "npmInstallThenDo:", "gruntThenDo:", "finishMessage", "exit"]
  79259. }),
  79260. $globals.Initer);
  79261. $core.addClass('Repl', $globals.Object, ['readline', 'interface', 'util', 'session', 'resultCount', 'commands'], 'AmberCli');
  79262. //>>excludeStart("ide", pragmas.excludeIdeData);
  79263. $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.";
  79264. //>>excludeEnd("ide");
  79265. $core.addMethod(
  79266. $core.method({
  79267. selector: "addVariableNamed:to:",
  79268. protocol: 'private',
  79269. fn: function (aString,anObject){
  79270. var self=this;
  79271. var newClass,newObject;
  79272. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79273. return $core.withContext(function($ctx1) {
  79274. //>>excludeEnd("ctx");
  79275. var $1;
  79276. newClass=self._subclass_withVariable_($recv(anObject)._class(),aString);
  79277. self._encapsulateVariable_withValue_in_(aString,anObject,newClass);
  79278. newObject=$recv(newClass)._new();
  79279. self._setPreviousVariablesFor_from_(newObject,anObject);
  79280. $1=newObject;
  79281. return $1;
  79282. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79283. }, function($ctx1) {$ctx1.fill(self,"addVariableNamed:to:",{aString:aString,anObject:anObject,newClass:newClass,newObject:newObject},$globals.Repl)});
  79284. //>>excludeEnd("ctx");
  79285. },
  79286. //>>excludeStart("ide", pragmas.excludeIdeData);
  79287. args: ["aString", "anObject"],
  79288. 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",
  79289. referencedClasses: [],
  79290. //>>excludeEnd("ide");
  79291. messageSends: ["subclass:withVariable:", "class", "encapsulateVariable:withValue:in:", "new", "setPreviousVariablesFor:from:"]
  79292. }),
  79293. $globals.Repl);
  79294. $core.addMethod(
  79295. $core.method({
  79296. selector: "assignNewVariable:do:",
  79297. protocol: 'private',
  79298. fn: function (buffer,aBlock){
  79299. var self=this;
  79300. function $Error(){return $globals.Error||(typeof Error=="undefined"?nil:Error)}
  79301. function $ConsoleErrorHandler(){return $globals.ConsoleErrorHandler||(typeof ConsoleErrorHandler=="undefined"?nil:ConsoleErrorHandler)}
  79302. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79303. return $core.withContext(function($ctx1) {
  79304. //>>excludeEnd("ctx");
  79305. var $3,$4,$2,$1,$receiver;
  79306. $1=self._parseAssignment_do_(buffer,(function(name,expr){
  79307. var varName,value;
  79308. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79309. return $core.withContext(function($ctx2) {
  79310. //>>excludeEnd("ctx");
  79311. if(($receiver = name) == null || $receiver.isNil){
  79312. varName=self._nextResultName();
  79313. } else {
  79314. varName=name;
  79315. };
  79316. varName;
  79317. self["@session"]=self._addVariableNamed_to_(varName,self["@session"]);
  79318. self["@session"];
  79319. $recv((function(){
  79320. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79321. return $core.withContext(function($ctx3) {
  79322. //>>excludeEnd("ctx");
  79323. $3=$recv(varName).__comma(" := ");
  79324. if(($receiver = expr) == null || $receiver.isNil){
  79325. $4=buffer;
  79326. } else {
  79327. $4=expr;
  79328. };
  79329. $2=$recv($3).__comma($4);
  79330. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79331. $ctx3.sendIdx[","]=1;
  79332. //>>excludeEnd("ctx");
  79333. value=self._eval_on_($2,self["@session"]);
  79334. return value;
  79335. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79336. }, function($ctx3) {$ctx3.fillBlock({},$ctx2,3)});
  79337. //>>excludeEnd("ctx");
  79338. }))._on_do_($Error(),(function(e){
  79339. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79340. return $core.withContext(function($ctx3) {
  79341. //>>excludeEnd("ctx");
  79342. $recv($recv($ConsoleErrorHandler())._new())._logError_(e);
  79343. value=nil;
  79344. return value;
  79345. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79346. }, function($ctx3) {$ctx3.fillBlock({e:e},$ctx2,5)});
  79347. //>>excludeEnd("ctx");
  79348. }));
  79349. return $recv(aBlock)._value_value_(varName,value);
  79350. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79351. }, function($ctx2) {$ctx2.fillBlock({name:name,expr:expr,varName:varName,value:value},$ctx1,1)});
  79352. //>>excludeEnd("ctx");
  79353. }));
  79354. return $1;
  79355. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79356. }, function($ctx1) {$ctx1.fill(self,"assignNewVariable:do:",{buffer:buffer,aBlock:aBlock},$globals.Repl)});
  79357. //>>excludeEnd("ctx");
  79358. },
  79359. //>>excludeStart("ide", pragmas.excludeIdeData);
  79360. args: ["buffer", "aBlock"],
  79361. 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]",
  79362. referencedClasses: ["Error", "ConsoleErrorHandler"],
  79363. //>>excludeEnd("ide");
  79364. messageSends: ["parseAssignment:do:", "ifNil:", "nextResultName", "addVariableNamed:to:", "on:do:", "eval:on:", ",", "logError:", "new", "value:value:"]
  79365. }),
  79366. $globals.Repl);
  79367. $core.addMethod(
  79368. $core.method({
  79369. selector: "clearScreen",
  79370. protocol: 'actions',
  79371. fn: function (){
  79372. var self=this;
  79373. var esc,cls;
  79374. function $String(){return $globals.String||(typeof String=="undefined"?nil:String)}
  79375. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79376. return $core.withContext(function($ctx1) {
  79377. //>>excludeEnd("ctx");
  79378. var $1;
  79379. esc=$recv($String())._fromCharCode_((27));
  79380. $1=$recv($recv(esc).__comma("[2J")).__comma(esc);
  79381. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79382. $ctx1.sendIdx[","]=2;
  79383. //>>excludeEnd("ctx");
  79384. cls=$recv($1).__comma("[0;0f");
  79385. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79386. $ctx1.sendIdx[","]=1;
  79387. //>>excludeEnd("ctx");
  79388. $recv($recv(process)._stdout())._write_(cls);
  79389. $recv(self["@interface"])._prompt();
  79390. return self;
  79391. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79392. }, function($ctx1) {$ctx1.fill(self,"clearScreen",{esc:esc,cls:cls},$globals.Repl)});
  79393. //>>excludeEnd("ctx");
  79394. },
  79395. //>>excludeStart("ide", pragmas.excludeIdeData);
  79396. args: [],
  79397. 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",
  79398. referencedClasses: ["String"],
  79399. //>>excludeEnd("ide");
  79400. messageSends: ["fromCharCode:", ",", "write:", "stdout", "prompt"]
  79401. }),
  79402. $globals.Repl);
  79403. $core.addMethod(
  79404. $core.method({
  79405. selector: "close",
  79406. protocol: 'actions',
  79407. fn: function (){
  79408. var self=this;
  79409. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79410. return $core.withContext(function($ctx1) {
  79411. //>>excludeEnd("ctx");
  79412. $recv($recv(process)._stdin())._destroy();
  79413. return self;
  79414. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79415. }, function($ctx1) {$ctx1.fill(self,"close",{},$globals.Repl)});
  79416. //>>excludeEnd("ctx");
  79417. },
  79418. //>>excludeStart("ide", pragmas.excludeIdeData);
  79419. args: [],
  79420. source: "close\x0a\x09process stdin destroy",
  79421. referencedClasses: [],
  79422. //>>excludeEnd("ide");
  79423. messageSends: ["destroy", "stdin"]
  79424. }),
  79425. $globals.Repl);
  79426. $core.addMethod(
  79427. $core.method({
  79428. selector: "commands",
  79429. protocol: 'accessing',
  79430. fn: function (){
  79431. var self=this;
  79432. var $1;
  79433. $1=self["@commands"];
  79434. return $1;
  79435. },
  79436. //>>excludeStart("ide", pragmas.excludeIdeData);
  79437. args: [],
  79438. source: "commands\x0a\x09^ commands",
  79439. referencedClasses: [],
  79440. //>>excludeEnd("ide");
  79441. messageSends: []
  79442. }),
  79443. $globals.Repl);
  79444. $core.addMethod(
  79445. $core.method({
  79446. selector: "createInterface",
  79447. protocol: 'actions',
  79448. fn: function (){
  79449. var self=this;
  79450. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79451. return $core.withContext(function($ctx1) {
  79452. //>>excludeEnd("ctx");
  79453. var $1;
  79454. self["@interface"]=$recv(self["@readline"])._createInterface_stdout_($recv(process)._stdin(),$recv(process)._stdout());
  79455. $recv(self["@interface"])._on_do_("line",(function(buffer){
  79456. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79457. return $core.withContext(function($ctx2) {
  79458. //>>excludeEnd("ctx");
  79459. return self._processLine_(buffer);
  79460. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79461. }, function($ctx2) {$ctx2.fillBlock({buffer:buffer},$ctx1,1)});
  79462. //>>excludeEnd("ctx");
  79463. }));
  79464. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79465. $ctx1.sendIdx["on:do:"]=1;
  79466. //>>excludeEnd("ctx");
  79467. $recv(self["@interface"])._on_do_("close",(function(){
  79468. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79469. return $core.withContext(function($ctx2) {
  79470. //>>excludeEnd("ctx");
  79471. return self._close();
  79472. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79473. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
  79474. //>>excludeEnd("ctx");
  79475. }));
  79476. self._printWelcome();
  79477. self._setupHotkeys();
  79478. $1=self._setPrompt();
  79479. $recv(self["@interface"])._prompt();
  79480. return self;
  79481. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79482. }, function($ctx1) {$ctx1.fill(self,"createInterface",{},$globals.Repl)});
  79483. //>>excludeEnd("ctx");
  79484. },
  79485. //>>excludeStart("ide", pragmas.excludeIdeData);
  79486. args: [],
  79487. 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",
  79488. referencedClasses: [],
  79489. //>>excludeEnd("ide");
  79490. messageSends: ["createInterface:stdout:", "stdin", "stdout", "on:do:", "processLine:", "close", "printWelcome", "setupHotkeys", "setPrompt", "prompt"]
  79491. }),
  79492. $globals.Repl);
  79493. $core.addMethod(
  79494. $core.method({
  79495. selector: "encapsulateVariable:withValue:in:",
  79496. protocol: 'private',
  79497. fn: function (aString,anObject,aClass){
  79498. var self=this;
  79499. var compiler;
  79500. function $Compiler(){return $globals.Compiler||(typeof Compiler=="undefined"?nil:Compiler)}
  79501. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79502. return $core.withContext(function($ctx1) {
  79503. //>>excludeEnd("ctx");
  79504. var $1,$4,$3,$2,$5,$6;
  79505. compiler=$recv($Compiler())._new();
  79506. $1=compiler;
  79507. $4=$recv(aString).__comma(": anObject ^ ");
  79508. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79509. $ctx1.sendIdx[","]=3;
  79510. //>>excludeEnd("ctx");
  79511. $3=$recv($4).__comma(aString);
  79512. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79513. $ctx1.sendIdx[","]=2;
  79514. //>>excludeEnd("ctx");
  79515. $2=$recv($3).__comma(" := anObject");
  79516. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79517. $ctx1.sendIdx[","]=1;
  79518. //>>excludeEnd("ctx");
  79519. $recv($1)._install_forClass_protocol_($2,aClass,"session");
  79520. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79521. $ctx1.sendIdx["install:forClass:protocol:"]=1;
  79522. //>>excludeEnd("ctx");
  79523. $5=compiler;
  79524. $6=$recv($recv(aString).__comma(" ^ ")).__comma(aString);
  79525. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79526. $ctx1.sendIdx[","]=4;
  79527. //>>excludeEnd("ctx");
  79528. $recv($5)._install_forClass_protocol_($6,aClass,"session");
  79529. return self;
  79530. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79531. }, function($ctx1) {$ctx1.fill(self,"encapsulateVariable:withValue:in:",{aString:aString,anObject:anObject,aClass:aClass,compiler:compiler},$globals.Repl)});
  79532. //>>excludeEnd("ctx");
  79533. },
  79534. //>>excludeStart("ide", pragmas.excludeIdeData);
  79535. args: ["aString", "anObject", "aClass"],
  79536. 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'.",
  79537. referencedClasses: ["Compiler"],
  79538. //>>excludeEnd("ide");
  79539. messageSends: ["new", "install:forClass:protocol:", ","]
  79540. }),
  79541. $globals.Repl);
  79542. $core.addMethod(
  79543. $core.method({
  79544. selector: "eval:",
  79545. protocol: 'actions',
  79546. fn: function (buffer){
  79547. var self=this;
  79548. function $DoIt(){return $globals.DoIt||(typeof DoIt=="undefined"?nil:DoIt)}
  79549. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79550. return $core.withContext(function($ctx1) {
  79551. //>>excludeEnd("ctx");
  79552. var $1;
  79553. $1=self._eval_on_(buffer,$recv($DoIt())._new());
  79554. return $1;
  79555. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79556. }, function($ctx1) {$ctx1.fill(self,"eval:",{buffer:buffer},$globals.Repl)});
  79557. //>>excludeEnd("ctx");
  79558. },
  79559. //>>excludeStart("ide", pragmas.excludeIdeData);
  79560. args: ["buffer"],
  79561. source: "eval: buffer\x0a\x09^ self eval: buffer on: DoIt new.",
  79562. referencedClasses: ["DoIt"],
  79563. //>>excludeEnd("ide");
  79564. messageSends: ["eval:on:", "new"]
  79565. }),
  79566. $globals.Repl);
  79567. $core.addMethod(
  79568. $core.method({
  79569. selector: "eval:on:",
  79570. protocol: 'actions',
  79571. fn: function (buffer,anObject){
  79572. var self=this;
  79573. var result;
  79574. function $Compiler(){return $globals.Compiler||(typeof Compiler=="undefined"?nil:Compiler)}
  79575. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79576. return $core.withContext(function($ctx1) {
  79577. //>>excludeEnd("ctx");
  79578. var $1,$2,$3;
  79579. $1=$recv(buffer)._isEmpty();
  79580. if(!$core.assert($1)){
  79581. $recv((function(){
  79582. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79583. return $core.withContext(function($ctx2) {
  79584. //>>excludeEnd("ctx");
  79585. result=$recv($recv($Compiler())._new())._evaluateExpression_on_(buffer,anObject);
  79586. return result;
  79587. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79588. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
  79589. //>>excludeEnd("ctx");
  79590. }))._tryCatch_((function(e){
  79591. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79592. return $core.withContext(function($ctx2) {
  79593. //>>excludeEnd("ctx");
  79594. $2=$recv(e)._isSmalltalkError();
  79595. if($core.assert($2)){
  79596. return $recv(e)._resignal();
  79597. } else {
  79598. return $recv($recv(process)._stdout())._write_($recv(e)._jsStack());
  79599. };
  79600. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79601. }, function($ctx2) {$ctx2.fillBlock({e:e},$ctx1,3)});
  79602. //>>excludeEnd("ctx");
  79603. }));
  79604. };
  79605. $3=result;
  79606. return $3;
  79607. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79608. }, function($ctx1) {$ctx1.fill(self,"eval:on:",{buffer:buffer,anObject:anObject,result:result},$globals.Repl)});
  79609. //>>excludeEnd("ctx");
  79610. },
  79611. //>>excludeStart("ide", pragmas.excludeIdeData);
  79612. args: ["buffer", "anObject"],
  79613. source: "eval: buffer on: anObject\x0a\x09| result |\x0a\x09buffer isEmpty ifFalse: [\x0a\x09\x09[result := Compiler new evaluateExpression: buffer on: anObject]\x0a\x09\x09\x09tryCatch: [:e |\x0a\x09\x09\x09\x09e isSmalltalkError\x0a\x09\x09\x09\x09 ifTrue: [ e resignal ]\x0a\x09\x09\x09 \x09 ifFalse: [ process stdout write: e jsStack ]]].\x0a\x09^ result",
  79614. referencedClasses: ["Compiler"],
  79615. //>>excludeEnd("ide");
  79616. messageSends: ["ifFalse:", "isEmpty", "tryCatch:", "evaluateExpression:on:", "new", "ifTrue:ifFalse:", "isSmalltalkError", "resignal", "write:", "stdout", "jsStack"]
  79617. }),
  79618. $globals.Repl);
  79619. $core.addMethod(
  79620. $core.method({
  79621. selector: "executeCommand:",
  79622. protocol: 'private',
  79623. fn: function (aString){
  79624. var self=this;
  79625. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79626. return $core.withContext(function($ctx1) {
  79627. //>>excludeEnd("ctx");
  79628. var $1;
  79629. var $early={};
  79630. try {
  79631. $recv(self._commands())._keysAndValuesDo_((function(names,cmd){
  79632. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79633. return $core.withContext(function($ctx2) {
  79634. //>>excludeEnd("ctx");
  79635. $1=$recv(names)._includes_(aString);
  79636. if($core.assert($1)){
  79637. $recv(cmd)._value();
  79638. throw $early=[true];
  79639. };
  79640. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79641. }, function($ctx2) {$ctx2.fillBlock({names:names,cmd:cmd},$ctx1,1)});
  79642. //>>excludeEnd("ctx");
  79643. }));
  79644. return false;
  79645. }
  79646. catch(e) {if(e===$early)return e[0]; throw e}
  79647. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79648. }, function($ctx1) {$ctx1.fill(self,"executeCommand:",{aString:aString},$globals.Repl)});
  79649. //>>excludeEnd("ctx");
  79650. },
  79651. //>>excludeStart("ide", pragmas.excludeIdeData);
  79652. args: ["aString"],
  79653. 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",
  79654. referencedClasses: [],
  79655. //>>excludeEnd("ide");
  79656. messageSends: ["keysAndValuesDo:", "commands", "ifTrue:", "includes:", "value"]
  79657. }),
  79658. $globals.Repl);
  79659. $core.addMethod(
  79660. $core.method({
  79661. selector: "initialize",
  79662. protocol: 'initialization',
  79663. fn: function (){
  79664. var self=this;
  79665. function $DoIt(){return $globals.DoIt||(typeof DoIt=="undefined"?nil:DoIt)}
  79666. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79667. return $core.withContext(function($ctx1) {
  79668. //>>excludeEnd("ctx");
  79669. (
  79670. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79671. $ctx1.supercall = true,
  79672. //>>excludeEnd("ctx");
  79673. $globals.Repl.superclass.fn.prototype._initialize.apply($recv(self), []));
  79674. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79675. $ctx1.supercall = false;
  79676. //>>excludeEnd("ctx");;
  79677. self["@session"]=$recv($DoIt())._new();
  79678. self["@readline"]=$recv(require)._value_("readline");
  79679. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79680. $ctx1.sendIdx["value:"]=1;
  79681. //>>excludeEnd("ctx");
  79682. self["@util"]=$recv(require)._value_("util");
  79683. self._setupCommands();
  79684. return self;
  79685. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79686. }, function($ctx1) {$ctx1.fill(self,"initialize",{},$globals.Repl)});
  79687. //>>excludeEnd("ctx");
  79688. },
  79689. //>>excludeStart("ide", pragmas.excludeIdeData);
  79690. args: [],
  79691. source: "initialize\x0a\x09super initialize.\x0a\x09session := DoIt new.\x0a\x09readline := require value: 'readline'.\x0a\x09util := require value: 'util'.\x0a\x09self setupCommands",
  79692. referencedClasses: ["DoIt"],
  79693. //>>excludeEnd("ide");
  79694. messageSends: ["initialize", "new", "value:", "setupCommands"]
  79695. }),
  79696. $globals.Repl);
  79697. $core.addMethod(
  79698. $core.method({
  79699. selector: "instanceVariableNamesFor:",
  79700. protocol: 'private',
  79701. fn: function (aClass){
  79702. var self=this;
  79703. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79704. return $core.withContext(function($ctx1) {
  79705. //>>excludeEnd("ctx");
  79706. var $2,$3,$1,$receiver;
  79707. $2=$recv(aClass)._superclass();
  79708. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79709. $ctx1.sendIdx["superclass"]=1;
  79710. //>>excludeEnd("ctx");
  79711. if(($receiver = $2) == null || $receiver.isNil){
  79712. $1=$recv(aClass)._instanceVariableNames();
  79713. } else {
  79714. $3=$recv(aClass)._instanceVariableNames();
  79715. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79716. $ctx1.sendIdx["instanceVariableNames"]=1;
  79717. //>>excludeEnd("ctx");
  79718. $1=$recv($3)._copyWithAll_(self._instanceVariableNamesFor_($recv(aClass)._superclass()));
  79719. };
  79720. return $1;
  79721. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79722. }, function($ctx1) {$ctx1.fill(self,"instanceVariableNamesFor:",{aClass:aClass},$globals.Repl)});
  79723. //>>excludeEnd("ctx");
  79724. },
  79725. //>>excludeStart("ide", pragmas.excludeIdeData);
  79726. args: ["aClass"],
  79727. 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]",
  79728. referencedClasses: [],
  79729. //>>excludeEnd("ide");
  79730. messageSends: ["ifNotNil:ifNil:", "superclass", "copyWithAll:", "instanceVariableNames", "instanceVariableNamesFor:"]
  79731. }),
  79732. $globals.Repl);
  79733. $core.addMethod(
  79734. $core.method({
  79735. selector: "isIdentifier:",
  79736. protocol: 'private',
  79737. fn: function (aString){
  79738. var self=this;
  79739. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79740. return $core.withContext(function($ctx1) {
  79741. //>>excludeEnd("ctx");
  79742. var $1;
  79743. $1=$recv(aString)._match_("^[a-z_]\x5cw*$"._asRegexp());
  79744. return $1;
  79745. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79746. }, function($ctx1) {$ctx1.fill(self,"isIdentifier:",{aString:aString},$globals.Repl)});
  79747. //>>excludeEnd("ctx");
  79748. },
  79749. //>>excludeStart("ide", pragmas.excludeIdeData);
  79750. args: ["aString"],
  79751. source: "isIdentifier: aString\x0a\x09^ aString match: '^[a-z_]\x5cw*$' asRegexp",
  79752. referencedClasses: [],
  79753. //>>excludeEnd("ide");
  79754. messageSends: ["match:", "asRegexp"]
  79755. }),
  79756. $globals.Repl);
  79757. $core.addMethod(
  79758. $core.method({
  79759. selector: "isVariableDefined:",
  79760. protocol: 'private',
  79761. fn: function (aString){
  79762. var self=this;
  79763. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79764. return $core.withContext(function($ctx1) {
  79765. //>>excludeEnd("ctx");
  79766. var $1;
  79767. $1=$recv(self._instanceVariableNamesFor_($recv(self["@session"])._class()))._includes_(aString);
  79768. return $1;
  79769. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79770. }, function($ctx1) {$ctx1.fill(self,"isVariableDefined:",{aString:aString},$globals.Repl)});
  79771. //>>excludeEnd("ctx");
  79772. },
  79773. //>>excludeStart("ide", pragmas.excludeIdeData);
  79774. args: ["aString"],
  79775. source: "isVariableDefined: aString\x0a\x09^ (self instanceVariableNamesFor: session class) includes: aString",
  79776. referencedClasses: [],
  79777. //>>excludeEnd("ide");
  79778. messageSends: ["includes:", "instanceVariableNamesFor:", "class"]
  79779. }),
  79780. $globals.Repl);
  79781. $core.addMethod(
  79782. $core.method({
  79783. selector: "nextResultName",
  79784. protocol: 'private',
  79785. fn: function (){
  79786. var self=this;
  79787. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79788. return $core.withContext(function($ctx1) {
  79789. //>>excludeEnd("ctx");
  79790. var $1,$2,$receiver;
  79791. $1=self["@resultCount"];
  79792. if(($receiver = $1) == null || $receiver.isNil){
  79793. self["@resultCount"]=(1);
  79794. } else {
  79795. self["@resultCount"]=$recv(self["@resultCount"]).__plus((1));
  79796. };
  79797. $2="res".__comma($recv(self["@resultCount"])._asString());
  79798. return $2;
  79799. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79800. }, function($ctx1) {$ctx1.fill(self,"nextResultName",{},$globals.Repl)});
  79801. //>>excludeEnd("ctx");
  79802. },
  79803. //>>excludeStart("ide", pragmas.excludeIdeData);
  79804. args: [],
  79805. source: "nextResultName\x0a\x09resultCount := resultCount\x0a \x09ifNotNil: [resultCount + 1]\x0a \x09ifNil: [1].\x0a ^ 'res', resultCount asString",
  79806. referencedClasses: [],
  79807. //>>excludeEnd("ide");
  79808. messageSends: ["ifNotNil:ifNil:", "+", ",", "asString"]
  79809. }),
  79810. $globals.Repl);
  79811. $core.addMethod(
  79812. $core.method({
  79813. selector: "onKeyPress:",
  79814. protocol: 'private',
  79815. fn: function (key){
  79816. var self=this;
  79817. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79818. return $core.withContext(function($ctx1) {
  79819. //>>excludeEnd("ctx");
  79820. var $1;
  79821. $1=$recv($recv(key)._ctrl())._and_((function(){
  79822. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79823. return $core.withContext(function($ctx2) {
  79824. //>>excludeEnd("ctx");
  79825. return $recv($recv(key)._name()).__eq("l");
  79826. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79827. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  79828. //>>excludeEnd("ctx");
  79829. }));
  79830. if($core.assert($1)){
  79831. self._clearScreen();
  79832. };
  79833. return self;
  79834. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79835. }, function($ctx1) {$ctx1.fill(self,"onKeyPress:",{key:key},$globals.Repl)});
  79836. //>>excludeEnd("ctx");
  79837. },
  79838. //>>excludeStart("ide", pragmas.excludeIdeData);
  79839. args: ["key"],
  79840. source: "onKeyPress: key\x0a\x09(key ctrl and: [key name = 'l'])\x0a\x09\x09ifTrue: [self clearScreen]",
  79841. referencedClasses: [],
  79842. //>>excludeEnd("ide");
  79843. messageSends: ["ifTrue:", "and:", "ctrl", "=", "name", "clearScreen"]
  79844. }),
  79845. $globals.Repl);
  79846. $core.addMethod(
  79847. $core.method({
  79848. selector: "parseAssignment:do:",
  79849. protocol: 'private',
  79850. fn: function (aString,aBlock){
  79851. var self=this;
  79852. var assignment;
  79853. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79854. return $core.withContext(function($ctx1) {
  79855. //>>excludeEnd("ctx");
  79856. var $3,$2,$1;
  79857. assignment=$recv($recv(aString)._tokenize_(":="))._collect_((function(s){
  79858. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79859. return $core.withContext(function($ctx2) {
  79860. //>>excludeEnd("ctx");
  79861. return $recv(s)._trimBoth();
  79862. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79863. }, function($ctx2) {$ctx2.fillBlock({s:s},$ctx1,1)});
  79864. //>>excludeEnd("ctx");
  79865. }));
  79866. $2=$recv($recv($recv(assignment)._size()).__eq((2)))._and_((function(){
  79867. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79868. return $core.withContext(function($ctx2) {
  79869. //>>excludeEnd("ctx");
  79870. $3=$recv(assignment)._first();
  79871. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79872. $ctx2.sendIdx["first"]=1;
  79873. //>>excludeEnd("ctx");
  79874. return self._isIdentifier_($3);
  79875. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79876. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
  79877. //>>excludeEnd("ctx");
  79878. }));
  79879. if($core.assert($2)){
  79880. $1=$recv(aBlock)._value_value_($recv(assignment)._first(),$recv(assignment)._last());
  79881. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79882. $ctx1.sendIdx["value:value:"]=1;
  79883. //>>excludeEnd("ctx");
  79884. } else {
  79885. $1=$recv(aBlock)._value_value_(nil,nil);
  79886. };
  79887. return $1;
  79888. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79889. }, function($ctx1) {$ctx1.fill(self,"parseAssignment:do:",{aString:aString,aBlock:aBlock,assignment:assignment},$globals.Repl)});
  79890. //>>excludeEnd("ctx");
  79891. },
  79892. //>>excludeStart("ide", pragmas.excludeIdeData);
  79893. args: ["aString", "aBlock"],
  79894. 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 ]",
  79895. referencedClasses: [],
  79896. //>>excludeEnd("ide");
  79897. messageSends: ["collect:", "tokenize:", "trimBoth", "ifTrue:ifFalse:", "and:", "=", "size", "isIdentifier:", "first", "value:value:", "last"]
  79898. }),
  79899. $globals.Repl);
  79900. $core.addMethod(
  79901. $core.method({
  79902. selector: "presentResultNamed:withValue:",
  79903. protocol: 'private',
  79904. fn: function (varName,value){
  79905. var self=this;
  79906. function $Transcript(){return $globals.Transcript||(typeof Transcript=="undefined"?nil:Transcript)}
  79907. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79908. return $core.withContext(function($ctx1) {
  79909. //>>excludeEnd("ctx");
  79910. var $3,$2,$1,$4;
  79911. $3=$recv($recv(varName).__comma(": ")).__comma($recv($recv(value)._class())._name());
  79912. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79913. $ctx1.sendIdx[","]=3;
  79914. //>>excludeEnd("ctx");
  79915. $2=$recv($3).__comma(" = ");
  79916. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79917. $ctx1.sendIdx[","]=2;
  79918. //>>excludeEnd("ctx");
  79919. $1=$recv($2).__comma($recv(value)._asString());
  79920. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79921. $ctx1.sendIdx[","]=1;
  79922. //>>excludeEnd("ctx");
  79923. $recv($Transcript())._show_($1);
  79924. $4=$recv($Transcript())._cr();
  79925. $recv(self["@interface"])._prompt();
  79926. return self;
  79927. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79928. }, function($ctx1) {$ctx1.fill(self,"presentResultNamed:withValue:",{varName:varName,value:value},$globals.Repl)});
  79929. //>>excludeEnd("ctx");
  79930. },
  79931. //>>excludeStart("ide", pragmas.excludeIdeData);
  79932. args: ["varName", "value"],
  79933. source: "presentResultNamed: varName withValue: value\x0a\x09Transcript show: varName, ': ', value class name, ' = ', value asString; cr.\x0a\x09interface prompt",
  79934. referencedClasses: ["Transcript"],
  79935. //>>excludeEnd("ide");
  79936. messageSends: ["show:", ",", "name", "class", "asString", "cr", "prompt"]
  79937. }),
  79938. $globals.Repl);
  79939. $core.addMethod(
  79940. $core.method({
  79941. selector: "printWelcome",
  79942. protocol: 'actions',
  79943. fn: function (){
  79944. var self=this;
  79945. function $Transcript(){return $globals.Transcript||(typeof Transcript=="undefined"?nil:Transcript)}
  79946. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79947. return $core.withContext(function($ctx1) {
  79948. //>>excludeEnd("ctx");
  79949. var $1;
  79950. $recv($Transcript())._show_("Type :q to exit.");
  79951. $1=$recv($Transcript())._cr();
  79952. return self;
  79953. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79954. }, function($ctx1) {$ctx1.fill(self,"printWelcome",{},$globals.Repl)});
  79955. //>>excludeEnd("ctx");
  79956. },
  79957. //>>excludeStart("ide", pragmas.excludeIdeData);
  79958. args: [],
  79959. source: "printWelcome\x0a\x09Transcript show: 'Type :q to exit.'; cr.",
  79960. referencedClasses: ["Transcript"],
  79961. //>>excludeEnd("ide");
  79962. messageSends: ["show:", "cr"]
  79963. }),
  79964. $globals.Repl);
  79965. $core.addMethod(
  79966. $core.method({
  79967. selector: "processLine:",
  79968. protocol: 'private',
  79969. fn: function (buffer){
  79970. var self=this;
  79971. var show;
  79972. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79973. return $core.withContext(function($ctx1) {
  79974. //>>excludeEnd("ctx");
  79975. var $1,$2;
  79976. show=(function(varName,value){
  79977. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79978. return $core.withContext(function($ctx2) {
  79979. //>>excludeEnd("ctx");
  79980. return self._presentResultNamed_withValue_(varName,value);
  79981. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79982. }, function($ctx2) {$ctx2.fillBlock({varName:varName,value:value},$ctx1,1)});
  79983. //>>excludeEnd("ctx");
  79984. });
  79985. $1=self._executeCommand_(buffer);
  79986. if(!$core.assert($1)){
  79987. $2=self._isVariableDefined_(buffer);
  79988. if($core.assert($2)){
  79989. $recv(show)._value_value_(buffer,$recv(self["@session"])._perform_(buffer));
  79990. } else {
  79991. self._assignNewVariable_do_(buffer,show);
  79992. };
  79993. };
  79994. return self;
  79995. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79996. }, function($ctx1) {$ctx1.fill(self,"processLine:",{buffer:buffer,show:show},$globals.Repl)});
  79997. //>>excludeEnd("ctx");
  79998. },
  79999. //>>excludeStart("ide", pragmas.excludeIdeData);
  80000. args: ["buffer"],
  80001. 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]]",
  80002. referencedClasses: [],
  80003. //>>excludeEnd("ide");
  80004. messageSends: ["presentResultNamed:withValue:", "ifFalse:", "executeCommand:", "ifTrue:ifFalse:", "isVariableDefined:", "value:value:", "perform:", "assignNewVariable:do:"]
  80005. }),
  80006. $globals.Repl);
  80007. $core.addMethod(
  80008. $core.method({
  80009. selector: "prompt",
  80010. protocol: 'accessing',
  80011. fn: function (){
  80012. var self=this;
  80013. return "amber >> ";
  80014. },
  80015. //>>excludeStart("ide", pragmas.excludeIdeData);
  80016. args: [],
  80017. source: "prompt\x0a\x09^ 'amber >> '",
  80018. referencedClasses: [],
  80019. //>>excludeEnd("ide");
  80020. messageSends: []
  80021. }),
  80022. $globals.Repl);
  80023. $core.addMethod(
  80024. $core.method({
  80025. selector: "setPreviousVariablesFor:from:",
  80026. protocol: 'private',
  80027. fn: function (newObject,oldObject){
  80028. var self=this;
  80029. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80030. return $core.withContext(function($ctx1) {
  80031. //>>excludeEnd("ctx");
  80032. $recv(self._instanceVariableNamesFor_($recv(oldObject)._class()))._do_((function(each){
  80033. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80034. return $core.withContext(function($ctx2) {
  80035. //>>excludeEnd("ctx");
  80036. return $recv(newObject)._perform_withArguments_($recv(each).__comma(":"),[$recv(oldObject)._perform_(each)]);
  80037. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80038. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  80039. //>>excludeEnd("ctx");
  80040. }));
  80041. return self;
  80042. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80043. }, function($ctx1) {$ctx1.fill(self,"setPreviousVariablesFor:from:",{newObject:newObject,oldObject:oldObject},$globals.Repl)});
  80044. //>>excludeEnd("ctx");
  80045. },
  80046. //>>excludeStart("ide", pragmas.excludeIdeData);
  80047. args: ["newObject", "oldObject"],
  80048. source: "setPreviousVariablesFor: newObject from: oldObject\x0a\x09(self instanceVariableNamesFor: oldObject class) do: [:each |\x0a\x09\x09newObject perform: each, ':' withArguments: {oldObject perform: each}].",
  80049. referencedClasses: [],
  80050. //>>excludeEnd("ide");
  80051. messageSends: ["do:", "instanceVariableNamesFor:", "class", "perform:withArguments:", ",", "perform:"]
  80052. }),
  80053. $globals.Repl);
  80054. $core.addMethod(
  80055. $core.method({
  80056. selector: "setPrompt",
  80057. protocol: 'actions',
  80058. fn: function (){
  80059. var self=this;
  80060. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80061. return $core.withContext(function($ctx1) {
  80062. //>>excludeEnd("ctx");
  80063. $recv(self["@interface"])._setPrompt_(self._prompt());
  80064. return self;
  80065. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80066. }, function($ctx1) {$ctx1.fill(self,"setPrompt",{},$globals.Repl)});
  80067. //>>excludeEnd("ctx");
  80068. },
  80069. //>>excludeStart("ide", pragmas.excludeIdeData);
  80070. args: [],
  80071. source: "setPrompt\x0a\x09interface setPrompt: self prompt",
  80072. referencedClasses: [],
  80073. //>>excludeEnd("ide");
  80074. messageSends: ["setPrompt:", "prompt"]
  80075. }),
  80076. $globals.Repl);
  80077. $core.addMethod(
  80078. $core.method({
  80079. selector: "setupCommands",
  80080. protocol: 'initialization',
  80081. fn: function (){
  80082. var self=this;
  80083. function $Dictionary(){return $globals.Dictionary||(typeof Dictionary=="undefined"?nil:Dictionary)}
  80084. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80085. return $core.withContext(function($ctx1) {
  80086. //>>excludeEnd("ctx");
  80087. var $2,$1;
  80088. $2=$recv([":q"]).__minus_gt((function(){
  80089. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80090. return $core.withContext(function($ctx2) {
  80091. //>>excludeEnd("ctx");
  80092. return $recv(process)._exit();
  80093. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80094. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  80095. //>>excludeEnd("ctx");
  80096. }));
  80097. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80098. $ctx1.sendIdx["->"]=1;
  80099. //>>excludeEnd("ctx");
  80100. $1=[$2,$recv([""]).__minus_gt((function(){
  80101. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80102. return $core.withContext(function($ctx2) {
  80103. //>>excludeEnd("ctx");
  80104. return $recv(self["@interface"])._prompt();
  80105. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80106. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
  80107. //>>excludeEnd("ctx");
  80108. }))];
  80109. self["@commands"]=$recv($Dictionary())._from_($1);
  80110. return self;
  80111. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80112. }, function($ctx1) {$ctx1.fill(self,"setupCommands",{},$globals.Repl)});
  80113. //>>excludeEnd("ctx");
  80114. },
  80115. //>>excludeStart("ide", pragmas.excludeIdeData);
  80116. args: [],
  80117. source: "setupCommands\x0a\x09commands := Dictionary from: {\x0a\x09\x09{':q'} -> [process exit].\x0a\x09\x09{''} -> [interface prompt]}",
  80118. referencedClasses: ["Dictionary"],
  80119. //>>excludeEnd("ide");
  80120. messageSends: ["from:", "->", "exit", "prompt"]
  80121. }),
  80122. $globals.Repl);
  80123. $core.addMethod(
  80124. $core.method({
  80125. selector: "setupHotkeys",
  80126. protocol: 'initialization',
  80127. fn: function (){
  80128. var self=this;
  80129. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80130. return $core.withContext(function($ctx1) {
  80131. //>>excludeEnd("ctx");
  80132. var $receiver;
  80133. $recv($recv(process)._stdin())._on_do_("keypress",(function(s,key){
  80134. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80135. return $core.withContext(function($ctx2) {
  80136. //>>excludeEnd("ctx");
  80137. if(($receiver = key) == null || $receiver.isNil){
  80138. return key;
  80139. } else {
  80140. return self._onKeyPress_(key);
  80141. };
  80142. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80143. }, function($ctx2) {$ctx2.fillBlock({s:s,key:key},$ctx1,1)});
  80144. //>>excludeEnd("ctx");
  80145. }));
  80146. return self;
  80147. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80148. }, function($ctx1) {$ctx1.fill(self,"setupHotkeys",{},$globals.Repl)});
  80149. //>>excludeEnd("ctx");
  80150. },
  80151. //>>excludeStart("ide", pragmas.excludeIdeData);
  80152. args: [],
  80153. source: "setupHotkeys\x0a\x09process stdin on: 'keypress' do: [:s :key | key ifNotNil: [self onKeyPress: key]].",
  80154. referencedClasses: [],
  80155. //>>excludeEnd("ide");
  80156. messageSends: ["on:do:", "stdin", "ifNotNil:", "onKeyPress:"]
  80157. }),
  80158. $globals.Repl);
  80159. $core.addMethod(
  80160. $core.method({
  80161. selector: "subclass:withVariable:",
  80162. protocol: 'private',
  80163. fn: function (aClass,varName){
  80164. var self=this;
  80165. function $ClassBuilder(){return $globals.ClassBuilder||(typeof ClassBuilder=="undefined"?nil:ClassBuilder)}
  80166. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80167. return $core.withContext(function($ctx1) {
  80168. //>>excludeEnd("ctx");
  80169. var $1;
  80170. $1=$recv($recv($ClassBuilder())._new())._addSubclassOf_named_instanceVariableNames_package_(aClass,$recv(self._subclassNameFor_(aClass))._asSymbol(),[varName],"Compiler-Core");
  80171. return $1;
  80172. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80173. }, function($ctx1) {$ctx1.fill(self,"subclass:withVariable:",{aClass:aClass,varName:varName},$globals.Repl)});
  80174. //>>excludeEnd("ctx");
  80175. },
  80176. //>>excludeStart("ide", pragmas.excludeIdeData);
  80177. args: ["aClass", "varName"],
  80178. 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\x09instanceVariableNames: {varName}\x0a\x09\x09package: 'Compiler-Core'",
  80179. referencedClasses: ["ClassBuilder"],
  80180. //>>excludeEnd("ide");
  80181. messageSends: ["addSubclassOf:named:instanceVariableNames:package:", "new", "asSymbol", "subclassNameFor:"]
  80182. }),
  80183. $globals.Repl);
  80184. $core.addMethod(
  80185. $core.method({
  80186. selector: "subclassNameFor:",
  80187. protocol: 'private',
  80188. fn: function (aClass){
  80189. var self=this;
  80190. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80191. return $core.withContext(function($ctx1) {
  80192. //>>excludeEnd("ctx");
  80193. var $3,$2,$7,$6,$5,$4,$8,$1,$receiver;
  80194. $3=$recv(aClass)._name();
  80195. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80196. $ctx1.sendIdx["name"]=1;
  80197. //>>excludeEnd("ctx");
  80198. $2=$recv($3)._matchesOf_("\x5cd+$");
  80199. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80200. $ctx1.sendIdx["matchesOf:"]=1;
  80201. //>>excludeEnd("ctx");
  80202. if(($receiver = $2) == null || $receiver.isNil){
  80203. $1=$recv($recv(aClass)._name()).__comma("2");
  80204. } else {
  80205. var counter;
  80206. $7=$recv(aClass)._name();
  80207. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80208. $ctx1.sendIdx["name"]=2;
  80209. //>>excludeEnd("ctx");
  80210. $6=$recv($7)._matchesOf_("\x5cd+$");
  80211. $5=$recv($6)._first();
  80212. $4=$recv($5)._asNumber();
  80213. counter=$recv($4).__plus((1));
  80214. counter;
  80215. $8=$recv(aClass)._name();
  80216. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80217. $ctx1.sendIdx["name"]=3;
  80218. //>>excludeEnd("ctx");
  80219. $1=$recv($8)._replaceRegexp_with_("\x5cd+$"._asRegexp(),$recv(counter)._asString());
  80220. };
  80221. return $1;
  80222. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80223. }, function($ctx1) {$ctx1.fill(self,"subclassNameFor:",{aClass:aClass},$globals.Repl)});
  80224. //>>excludeEnd("ctx");
  80225. },
  80226. //>>excludeStart("ide", pragmas.excludeIdeData);
  80227. args: ["aClass"],
  80228. 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'].",
  80229. referencedClasses: [],
  80230. //>>excludeEnd("ide");
  80231. messageSends: ["ifNotNil:ifNil:", "matchesOf:", "name", "+", "asNumber", "first", "replaceRegexp:with:", "asRegexp", "asString", ","]
  80232. }),
  80233. $globals.Repl);
  80234. $core.addMethod(
  80235. $core.method({
  80236. selector: "main",
  80237. protocol: 'initialization',
  80238. fn: function (){
  80239. var self=this;
  80240. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80241. return $core.withContext(function($ctx1) {
  80242. //>>excludeEnd("ctx");
  80243. $recv(self._new())._createInterface();
  80244. return self;
  80245. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  80246. }, function($ctx1) {$ctx1.fill(self,"main",{},$globals.Repl.klass)});
  80247. //>>excludeEnd("ctx");
  80248. },
  80249. //>>excludeStart("ide", pragmas.excludeIdeData);
  80250. args: [],
  80251. source: "main\x0a\x09self new createInterface",
  80252. referencedClasses: [],
  80253. //>>excludeEnd("ide");
  80254. messageSends: ["createInterface", "new"]
  80255. }),
  80256. $globals.Repl.klass);
  80257. });
  80258. define("amber_vm/boot", ["amber/boot"], function (boot) { return boot; });
  80259. define("app", ["amber/boot","amber_vm/smalltalk","amber_vm/globals","amber_vm/nil","amber_vm/_st","amber_core/Kernel-Objects","amber_core/Kernel-Classes","amber_core/Kernel-Methods","amber_core/Kernel-Collections","amber_core/Kernel-Infrastructure","amber_core/Kernel-Exceptions","amber_core/Kernel-Transcript","amber_core/Kernel-Announcements","amber_core/Compiler-Exceptions","amber_core/Compiler-Core","amber_core/Compiler-AST","amber_core/Compiler-IR","amber_core/Compiler-Inlining","amber_core/Compiler-Semantic","amber_core/Compiler-Interpreter","amber/parser","amber_core/SUnit","amber_core/Kernel-ImportExport","amber_core/Kernel-Tests","amber_core/Compiler-Tests","amber_core/SUnit-Tests","amber_cli/AmberCli"], function (boot) {
  80260. boot.api = boot.api || boot.vm; // backward compatibility
  80261. boot.api.initialize();
  80262. var $core = boot.api, $globals = boot.globals;
  80263. $globals.AmberCli._main();
  80264. });
  80265. requirejs(["app"]);